CP(1)

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, 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.

-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-3.16; otras versiones pueden diferir un poco. Envíe por correo electrónico correcciones y adiciones a las direcciones aeb@cwi.nl, aw@mail1.bet1.puv.fi y ragnar@lightside.ddns.org. Informe de fallos en el programa a fileutils-bugs@gnu.ai.mit.edu.