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.