Manpages

NOMBRE

cp − copia ficheros y directorios

SINOPSIS

cp [opciones] fichero camino
cp [
opciones] fichero... directorio

Opciones de POSIX: [−fipRr]

Opciones de GNU (en la forma más corta): [−abdfilprsuvxPR] [−S SUFIJO] [−V {numbered,existing,simple}] [−−sparse=CUANDO] [−−help] [−−version] [−−]

DESCRIPCIÓN

cp copia ficheros (o, opcionalmente, directorios). Uno puede bien copiar un fichero a un destino dado, o copiar arbitrariamente varios ficheros a un directorio destino.

Si el último argumento se refiere a un directorio existente, cp copia cada fichero fuente a ese directorio (manteniendo el mismo nombre). En otro caso, si sólo se dan dos ficheros, copia el primero sobre el segundo. Es un error que el último argumento no sea un directorio y se den varios argumentos no opciones.

(Así por ejemplo, ’cp −r /a /b’ copiará /a a /b/a y /a/x a /b/a/x en caso de que /b ya exista, pero copiará /a a /b y /a/x a /b/x si no existía /b con anterioridad.)

Los permisos de los ficheros y directorios creados serán los mismos que los de los ficheros originales, aplicándoles la operación de bits Y sobre 0777, y modificados por la umask del usuario (a menos que se haya especificado la opción −p). (Pero durante la copia recursiva de directorios, a los permisos finales de los directorios recién creados se les aplicará la operación de bits O con S_IRWXU (0777), de forma que se permita al proceso leer, escribir y pasar por el directorio recién creado.)

No se hace nada cuando se copie un fichero a sí mismo (excepto posiblemente producir un mensaje de error). Cuando se copie a un fichero diferente que ya exista, se abrirá empleando la llamada ’open(path, O_WRONLY | O_TRUNC)’. Cuando se copia a un fichero nuevo se crea empleando la llamada ’open(path, O_WRONLY | O_CREAT, mode)’. Si esto falla, el fichero existía y se dio la opción −f, entonces cp intenta borrar (desenlazar) el fichero existente y, si esto tiene éxito, procede como para un fichero nuevo.

OPCIONES DE POSIX

POSIX reconoce cuatro opciones y media:

−f

Borrar ficheros destino existentes si se requiere. (Vea más arriba.)

−i

Pregunta si sobreescribir ficheros regulares destino existentes. (Escribe una pregunta en stderr y lee la respuesta desde stdin. Sólo copia tras una respuesta afirmativa.)

−p

Preserva los permisos, el propietario y el grupo (incluyendo los bits SUID y SGID) de los ficheros originales, más el tiempo de última modificación y el de último acceso. En caso de que la duplicación del propietario o grupo falle, se limpian los bits setuid y setgid. (Observe que después de todo el fuente y la copia pueden muy bien tener tiempos de último acceso diferentes, puesto que la operación de copia es un acceso al fichero fuente.)

−R

Copia directorios recursivamente y hace lo correcto cuando se encuentran objetos distintos de ficheros ordinarios o directorios. (Así, la copia de un FIFO un un fichero especial es un FIFO o un fichero especial.)

−r

Copia directorios recursivamente y hace algo sin especificar con objetos distintos de ficheros ordinarios o directorios. (Así, está permitido, de hecho recomendado, que la opción −r sea un sinónimo de −R. Sin embargo, un comportamiento tonto, como el de la presente versión de GNU de cp (vea más abajo) no está prohibido.)

DETALLES DE GNU

Generalmente, los ficheros se escriben justo cuando se leen. Para excepciones, vea la opción −−sparse más abajo.

De forma predeterminada, ’cp’ no copia directorios (vea −r arriba).

cp generalmente rehúye copiar un fichero sobre sí mismo, con la siguiente excepción: si se especifica −−force −−backup con fuente y dest idénticos, y se refiere a un fichero regular, cp creará un fichero de respaldo, bien regular o numerado, como se especifique de las formas usuales. Esto es útil cuando uno quiere simplemente construir un fichero de respaldo de un fichero existente antes de cambiarlo.

OPCIONES DE GNU

−a, −−archive

Preserva tanto como sea posible la estructura y atributos de los ficheros originales en la copia (pero no preserva la estructura de directorio). Equivalente a −dpR.

−d, −−no−dereference

Copia los enlaces simbólicos como tales en lugar de copiar los ficheros a los que apunten y preserva las relaciones de los enlaces duros entre ficheros fuente en las copias.

−f, −−force

Elimina los ficheros de destino que ya existan sin pedir confirmación.

−i, −−interactive

Pregunta si sobreescribir ficheros de destino regulares existentes.

−l, −−link

En vez hacer copias de ficheros que no son directorios, hace enlaces duros.

−p, −−preserve

Preserva los permisos, el propietario, el grupo y los tiempos de los ficheros originales.

−P, −−parents

Forma el nombre de cada fichero de destino añadiendo al directorio destino una barra inclinada y el nombre especificado del fichero origen. El último argumento dado a cp debe ser el nombre de un directorio existente. Por ejemplo, la orden
cp −−parents a/b/c dir_existente
copia el fichero ’a/b/c’ a ’dir_existente/a/b/c’, creando cualquier directorio intermedio que falte.

−r

Copia directorios recursivamente, copiando cualquier fichero no directorio ni enlace simbólico (esto es, FIFOs y ficheros especiales) como si fuera un fichero regular. Esto significa intentar leer los datos de cada fichero fuente y escribirlos en el destino. Así, con esta opción, ’cp’ puede muy bien colgarse indefinidamente leyendo un FIFO o /dev/tty. (Esto es un fallo. Significa que uno tiene que evitar −r y debe emplear en su lugar −R si no sabe qué hay en el árbol de directorios que se está copiando. Abrir un fichero de dispositivo desconocido, digamos un escáner, tiene efectos desconocidos sobre el hardware.)

−R, −−recursive

Copia directorios recursivamente, preservando los no-directorios (vea −r justo arriba).

−−sparse=CUANDO

Un ’fichero disperso’ contiene ’agujeros’: secuencias de bytes cero que no ocupan ningún bloque físico de disco; la llamada al sistema ’read()’ las lee como ceros. Esto puede tanto salvar un considerable espacio de disco como incrementar la velocidad, puesto que muchos ficheros binarios contienen montones de bytes cero consecutivos. Por defecto, cp detecta agujeros en los ficheros fuente de entrada a partir de una heurística basta y construye los ficheros de salida correspondientes dispersos también.

El valor CUANDO puede ser uno de los siguientes:

auto

El comportamiento predeterminado; el fichero de salida es disperso si el de entrada lo es.

always

Siempre construye disperso el fichero de salida. Esto es útil cuando el fichero de entrada reside en un sistema de ficheros que no admite ficheros dispersos, pero el de salida está en un sistema de ficheros que sí.

never

Nunca construye disperso el fichero de salida. Si Ud. encuentra una aplicación para esta opción, háganosla saber.

−s, −−symbolic−link

Hace enlaces simbólicos en vez de copias de ficheros que no sean directorios. Todos los nombres de ficheros origen deben ser absolutos (empezar por ’/’) a menos que los ficheros de destino estén en el directorio de trabajo. Esta opción simplemente produce un mensaje de error en sistemas que no admitan enlaces simbólicos.

−u, −−update

No copia un fichero no-directorio si el destino ya existe y tiene el mismo tiempo de modificación o más reciente.

−v, −−verbose

Muestra el nombre de cada fichero antes de copiarlo.

−x, −−one−file−system

Se salta subdirectorios que estén en sistemas de ficheros diferentes de aquél en el que empezó la copia.

OPCIONES DE RESPALDO DE GNU

Las versiones de GNU de programas como cp, mv, ln, install y patch crearán una copia de seguridad de ficheros que estén a punto de ser sobreescritos, modificados o destruidos. Que se deseen ficheros de respaldo se indica mediante la opción −b. Cómo deberían nombrarse se especifica con la opción −V. En el caso de que el nombre del fichero de respaldo se dé mediante el nombre del fichero extendido con un sufijo, este sufijo se especifica con la opción −S.
−b, −−backup

Hace copias de respaldo de ficheros que están a punto de ser sobreescritos o borrados.

−S SUFIJO, −−suffix=SUFIJO

Añade SUFIJO a cada fichero de respaldo creado. Si no se especifica esta opción, se emplea el valor de la variable de entorno SIMPLE_BACKUP_SUFFIX. Y si SIMPLE_BACKUP_SUFFIX no está definida, el valor predeterminado es ’~’.

−V MÉTODO, −−version−control=MÉTODO

Especifica cómo se nombran los ficheros de respaldo. El argumento MÉTODO puede ser ’numbered’ (o ’t’), ’existing’ (o ’nil’), o ’never’ (o ’simple’). Si esta opción no se especifica, se emplea el valor de la variable de entorno VERSION_CONTROL. Y si VERSION_CONTROL no está definida, el tipo predeterminado de respaldo es ’existing’.

Esta opción corresponde a la variable de Emacs ’version-control’. Los MÉTODOs válidos son (se aceptan abreviaciones inambiguas):
t
, numbered

Siempre hace respaldos numerados.

nil, existing

Hace respaldos numerados de ficheros que ya los tengan, respaldos ’simple’s de los otros.

never, simple

Siempre hace respaldos simples.

OPCIONES ESTÁNDARES DE GNU

−−help

Muestra un mensaje en la salida estándar sobre el modo de empleo y acaba con código de éxito.

−−version

Muestra en la salida estándar información sobre la versión y luego acaba con código de éxito.

−−

Termina la lista de opciones.

ENTORNO

Las variables LANG, LC_ALL, LC_COLLATE, LC_CTYPE y LC_MESSAGES tienen los significados usuales. Para el sistema de versiones de GNU, las variables SIMPLE_BACKUP_SUFFIX y VERSION_CONTROL controlan la nomenclatura de los ficheros de respaldo, como se ha descrito anteriormente.

CONFORME A

POSIX 1003.2

OBSERVACIONES

Esta página describe cp según se encuentra en el paquete fileutils-4.0; otras versiones pueden diferir un poco. Envíe por correo electrónico correcciones y adiciones a la dirección aeb [AT] cwi.nl. Informe de fallos en el programa a fileutils-bugs [AT] gnu.edu.