Comando cp de linux

comando cp

En sistemas operativos tipo Unix, el comando cp hace copias de archivos y directorios.

Este documento describe la versión GNU / Linux de cp.

Descripción

La forma general del comando es cp source destination, por ejemplo:

cp myfile.txt myfilecopy.txt

Al igual que muchos comandos principales de Linux, si el comando cp es exitoso, por defecto, no se muestra ningún resultado. Para ver la salida cuando se copian los archivos, use la opción -v (detallado).

Por defecto, cp sobrescribirá los archivos sin preguntar. Si el nombre del archivo de destino ya existe, sus datos serán destruidos. Si desea que se le solicite confirmación antes de que se sobrescriban los archivos, use la opción -i (interactiva).

Sintaxis

cp [opción] ... [-T] destino de origen
cp [opción] ... fuente ... directorio
cp [opción] ... -t fuente del directorio ...
cp --help
cp --version

-a, - archivo Igual que -dR --preserve = ALL. Al realizar la copia, intente preservar la mayor cantidad posible de la estructura del archivo original, los atributos y los metadatos asociados. Estos metadatos incluyen datos de contexto de seguridad si está ejecutando SELinux.
--atributos solamente No copie los datos del archivo, solo cree un archivo con los mismos atributos. Si el archivo de destino ya existe, no modifique su contenido. Puede controlar exactamente qué atributos se copian con la opción --preserve.
--backup [= control] Haga una copia de seguridad de cada archivo de destino existente que, de lo contrario, se sobrescribiría o eliminaría. El parámetro de control especifica qué método de control de versión usar; vea el control de versiones para más detalles. Como un caso especial, cp --force --backup hará una copia de seguridad de la fuente cuando la fuente y el destino son el mismo archivo regular.
-b Como --backup, pero no acepta un argumento de control; siempre se usa el método de control predeterminado.
--copias-contenidos Al operar de forma recursiva, copie el contenido de archivos especiales, como FIFO y dispositivos que se encuentran en / dev. Por lo general, no desea utilizar esta opción, ya que puede tener resultados no deseados, como colgar para siempre o llenar todo el disco. Sin embargo, esta opción está disponible para casos especiales de uso experto.
-d Copie los enlaces simbólicos, en lugar de los archivos a los que se refieren, y conserve los enlaces duros entre los archivos de origen en las copias. Igual que "--no-dereference --preserve = links".
-f, - fuerza Si no se puede abrir un archivo de destino existente, elimínelo e intente nuevamente. Esta opción no tiene efecto si se usa la opción -n / - no-clobber. Sin embargo, se aplica independientemente de -i / - interactivo; ninguna de las opciones cancela el efecto de la otra.
-i, - interactivo Preguntar antes de sobrescribir (anula una opción -n anterior).
-H Siga los enlaces simbólicos especificados en la línea de comando, pero conserve los enlaces descubiertos. Si uno de los argumentos en la línea de comando es un enlace simbólico, copie el archivo referenciado, no el enlace en sí. Sin embargo, si se descubre un enlace simbólico durante el recorrido recursivo, se copiará como un enlace simbólico, no como un archivo normal.
-l, - enlace Cree enlaces duros a archivos en lugar de copiarlos.
-L, - desreferencia Siempre siga los enlaces simbólicos en la fuente; si la fuente es un enlace simbólico, copie el archivo vinculado en lugar del enlace simbólico en sí. Cuando se especifica esta opción, cp no puede crear enlaces simbólicos en las copias de destino.
-n, - no-clobber No sobrescriba un archivo existente. Si -i / - interactive se especificó previamente, esta opción lo anula. Esta opción no se puede especificar con -b / - copia de seguridad, ya que las copias de seguridad solo se crean cuando se ha sobrescrito un archivo.
-P, - sin desreferencia Nunca siga enlaces simbólicos en la fuente; copiar enlaces simbólicos como enlaces simbólicos. Sin embargo, los enlaces simbólicos existentes encontrados en el destino aún pueden seguirse.
-p Igual que --preserve = mode, propiedad, marcas de tiempo.
--preserve = [attr_list] Preserve los atributos especificados, separados por una coma. Los atributos son:

modo Preserve los bits del modo de archivo (como se establece con chmod) y cualquier ACL.
propiedad Preservar propietario y grupo (como se establece con chown). La capacidad de preservar estos atributos está restringida de la misma manera que el uso de chown.
marcas de tiempo Preserve el tiempo del último acceso y modificación del archivo (atime y mtime, según lo establecido con el toque), si es posible.
campo de golf Conservar en los archivos de destino cualquier enlace entre los archivos de origen. Con -L o -H, esta opción puede potencialmente copiar enlaces simbólicos como enlaces duros.
contexto Preserve el contexto de seguridad SELinux de los archivos de origen o falle con diagnósticos detallados.
xattr Preserve los atributos extendidos de los archivos fuente o falle con diagnósticos detallados.
todos Preservar todo lo anterior. Lo mismo que especificar todos los atributos anteriores individualmente, con la excepción de que no copiar el contexto o xattr no dará un estado de salida de falla.

Si no se especifica, el valor predeterminado de attr_list es "modo, propiedad, marcas de tiempo".

--no-preserve = attr_list No conserve los atributos especificados.
- padres Cree los directorios principales que faltan en el destino, si es necesario, al copiar en el directorio de destino, de acuerdo con el nombre de ruta especificado en la fuente. Por ejemplo, "cp --parents dir2 / dir3 / file dir1" crea el archivo de destino "dir1 / dir2 / dir3 / file ", incluso si dir2 y dir3 no existen actualmente en dir1.
-R, -r, - recursivo Copie directorios de forma recursiva.
--reflink = [cuando] Realice un clon optimizado de CoW ("copiar en escritura"), si el sistema de archivos de destino lo admite. La copia resultante compartirá los mismos bytes en el disco que el archivo original, hasta que se modifique la copia. Tenga en cuenta que esto significa que si los bytes de origen están dañados, el destino compartirá los datos dañados. El parámetro cuándo define qué sucederá si el sistema de archivos de destino no admite la copia en escritura. Si siempre es (el valor predeterminado), la copia fallará. Si es automático, la copia continuará, utilizando el comportamiento de copia estándar.
--remove-destination Elimine cada archivo de destino existente antes de intentar abrirlo (contraste con la opción --force, que solo elimina el destino después de un intento fallido de abrir).
--sparse = cuando Controle la creación de archivos dispersos. Un archivo disperso contiene "agujeros", donde un agujero es una secuencia de cero bytes que no ocupa espacio físico en el disco. Cuando se lee el archivo, los agujeros se leen como ceros. Esto puede ahorrar espacio en disco ya que muchos archivos contienen largas secuencias de ceros. Por defecto, cp detecta archivos dispersos y también crea archivos de destino dispersos. El parámetro when define qué debe hacer cp cuando se detecta que un archivo fuente es disperso:

auto Si el origen es escaso, intente que el destino sea escaso. Si el destino existe y es un archivo no regular, no intente hacerlo disperso. Este es el valor predeterminado.
siempre Para cada secuencia suficientemente larga de cero bytes en la fuente, intente hacer un agujero escaso en el destino, incluso si el archivo de entrada no es escaso. Esto puede ser útil si el sistema de archivos de origen no admite archivos dispersos; Se puede crear un archivo disperso en el sistema de archivos de destino.
nunca Nunca haga que el archivo de salida sea escaso. Algunos archivos especiales, como un archivo de intercambio, nunca deben ser escasos. En estos casos, se debe usar esta opción.
- strip-trailing-slashes Elimine las barras diagonales finales de cada argumento de origen.
-s, - enlace simbólico Haga enlaces simbólicos en lugar de copiar los archivos ellos mismos. Todos los archivos de origen deben ser nombres de ruta absolutos que comiencen con una barra diagonal, a menos que los archivos de destino estén en el directorio actual.
-S, - sufijo = sufijo Anule el sufijo de copia de seguridad habitual.
-t, - directorio-destino = directorio Copie todos los argumentos de origen en el directorio
-T, - directorio-no-objetivo Tratar el destino como un archivo normal.
-u, - actualizar Copie solo cuando el archivo de origen sea más nuevo que el archivo de destino o cuando falte el archivo de destino.
-v, - detallado Modo detallado; explica lo que se está haciendo.
-x, - sistema de un archivo Solo opere en el sistema de archivos donde se ejecutó el comando. Si cp intenta cruzar el límite a otro sistema de archivos, se omitirán esos archivos. Esto incluye unidades en red, otra partición: cualquier archivo que resida en un sistema de archivos con un punto de montaje diferente. El directorio que representa el punto de montaje en sí se copiará, pero no se recorrerá. Si se especifica -v, verá exactamente qué archivos han sido omitido
--ayuda Muestre un mensaje de ayuda y salga.
--versión Salida de información de versión y salida.

Por defecto, los archivos fuente dispersos son detectados por una heurística cruda y el archivo de destino correspondiente también se dispersa. Ese es el comportamiento seleccionado por --sparse = auto. Especifique --sparse = siempre para crear un archivo de destino disperso siempre que el archivo fuente contenga una secuencia suficientemente larga de cero bytes. Use --sparse = nunca para inhibir la creación de archivos dispersos.

Cuando se especifica --reflink [= always], cp realiza una copia ligera, donde los bloques de datos se copian solo cuando se modifican. Si esto no es posible, la copia falla; o, si se especifica --reflink = auto, cp recurre a una operación de copia estándar.

Control de versiones

Cuando se utiliza -b / - backup, el sufijo de copia de seguridad es '~', a menos que se configure con --suffix o SIMPLE_BACKUP_SUFFIX. El método de control de versión se puede seleccionar mediante la opción --backup = control o mediante la variable de entorno VERSION_CONTROL. Los posibles valores de control o VERSION_CONTROL son:

ninguno, fuera Nunca haga copias de seguridad (incluso si se proporciona una copia de seguridad).
numerado, t Hacer copias de seguridad numeradas.
existente, nulo Numerado si existen copias de seguridad numeradas, de lo contrario, simple.
simple, nunca Haga siempre copias de seguridad simples.

Como caso especial, cp realiza una copia de seguridad de la fuente cuando se dan las opciones de fuerza y ​​copia de seguridad y la fuente y el destino tienen el mismo nombre para un archivo regular existente.

Ejemplos

Supongamos que tiene un archivo llamado picture.jpg en su directorio de trabajo y desea hacer una copia llamada picture-02.jpg. Ejecutarías el comando:

cp picture.jpg picture-02.jpg

... y el archivo se copiará. Aquí, picture.jpg es la fuente de la operación de copia, y picture-02.jpg es el destino. Ambos archivos ahora existen en su directorio de trabajo.

Los archivos de origen y destino también pueden residir en diferentes directorios. Por ejemplo,

cp /home/chuck/pictures/picture.jpg /home/chuck/backup/picture.jpg

... hará una copia del archivo /home/chuck/pictures/picture.jpg en el directorio / home / chuck / backup. El archivo de destino también se llamará picture.jpg.

Si usted es el usuario, puede abreviar su directorio de inicio ("/ home / chuck") usando una tilde ("~"). Por ejemplo,

cp ~ / pictures / picture.jpg ~ / backup / picture.jpg

... funciona igual que el comando anterior cuando lo ejecuta Chuck.

Copiar múltiples archivos a un directorio

O quizás desee copiar varios archivos en otro directorio. Para lograr esto, puede especificar varios archivos como origen y un nombre de directorio como destino. Digamos que usted es el usuario sally, y tiene un montón de archivos en el directorio / home / sally / pictures / named picture-01.jpg, picture-02.jpg, etc. y desea copiarlos en el directorio / inicio / sally / copia de seguridad de imágenes /. Este comando hará el truco:

cp ~ / pictures / picture - *. jpg ~ / picture-backup

Aquí, usamos un comodín (el asterisco, "*") para indicar que los archivos de origen son todos los archivos en el directorio / home / sally / pictures cuyo nombre comienza con "picture-" y tiene la extensión ".jpg". Se copiarán en el directorio / home / sally / picture-backup, suponiendo que ese directorio ya exista. Si no existe, cp le da un mensaje de error y no se copiarán archivos.

También puede especificar varios archivos de origen uno tras otro, y cp esperará que el argumento final sea un nombre de directorio, y copiarlos todos allí. Por ejemplo,

cp ~ / pictures / picture-01.jpg ~ / pictures / picture-02.jpg ~ / picture-backup

... copiará solo esos dos archivos, /home/sally/picture-01.jpg y /home/sally/picture-02.jpg, en el directorio / home / sally / picture-backup.

Copiar archivos de forma recursiva

Puede usar cp para copiar estructuras de directorio completas de un lugar a otro utilizando la opción -R para realizar una copia recursiva. Digamos que usted es el usuario Steve y tiene un directorio, / home / steve / files, que contiene muchos archivos y subdirectorios. Desea copiar todos esos archivos y todos los subdirectorios (y los archivos y subdirectorios que contienen) en una nueva ubicación, / home / steve / files-backup. Puede copiarlos todos con el comando:

cp -R ~ / files ~ / files-backup

... y toda la estructura del directorio se copiará en el directorio / home / steve / files-backup. Al realizar una copia recursiva:

  • Si la copia de seguridad de los archivos del directorio ya existe, los archivos del directorio se colocarán dentro.
  • Si la copia de seguridad de archivos aún no existe, se creará y el contenido del directorio de archivos se colocará dentro de él.

Crear enlaces simbólicos en lugar de copiar datos

Otro truco útil es usar cp para crear enlaces simbólicos a sus archivos fuente. Es posible que ya esté familiarizado con el uso del comando ln para crear enlaces simbólicos; cp es una excelente manera de crear enlaces simbólicos múltiples a la vez.

cp crea enlaces simbólicos si especifica la opción -s. Entonces, por ejemplo,

cp -s file.txt file2.txt

... crea un enlace simbólico, file2.txt, que apunta a file.txt.

También puede crear enlaces simbólicos a partir de múltiples archivos de origen, especificando un directorio como destino.

Digamos que usted es el usuario melissa y tiene un conjunto de archivos, file01.txt, file02.txt, etc. en el directorio / home / melissa / myfiles. Desea crear enlaces simbólicos a estos archivos en el directorio existente / home / melissa / myfiles2. Este comando hará el truco:

cp -s ~ / myfiles / file * .txt ~ / myfiles2

El directorio myfiles2 ahora contendrá enlaces simbólicos al archivo * .txt en el directorio / home / melissa / myfiles. El directorio myfiles2 ya debe existir para que la operación tenga éxito; si no existe, cp le da un mensaje de error y no se copiará nada.

Esto también funcionará con una copia recursiva. Entonces el comando:

cp -R -s ~ / myfiles ~ / myfiles2

... volverá a crear la estructura de directorios de / home / melissa / myfiles, incluidos los subdirectorios y sus contenidos; los archivos se crearán como enlaces simbólicos a los originales, pero los directorios no serán enlaces simbólicos, solo directorios normales. Si myfiles2 ya existe, cp crea un directorio dentro de él llamado myfiles que contiene la estructura del directorio y los enlaces simbólicos; si myfiles2 aún no existe, se creará y contendrá los subdirectorios y enlaces simbólicos a los archivos que contiene myfiles.

Hay otras opciones que puede proporcionar a cp que afectarán su comportamiento. Estos se enumeran, junto con la sintaxis precisa del comando, en las siguientes secciones.

Haga una copia de un archivo en el mismo directorio

cp origfile newfile

Crea una copia del archivo en el directorio de trabajo llamado origfile. La copia se llamará newfile y se ubicará en el directorio de trabajo.

Si desea que se le solicite antes de sobrescribir un archivo, use la opción -i (interactiva). Por ejemplo:

cp -i archivo antiguo archivo nuevo

Si ya existe un nuevo archivo, se le preguntará:

cp: sobrescribir 'newfile'?

Si escribe y (o sí, Y, YES o cualquier otra combinación de mayúsculas y minúsculas), el archivo nuevo se sobrescribirá con una copia del archivo original. Escribir cualquier otra cosa anulará la operación.

Copie un archivo en otro directorio

cp origfile / directorio / subdirectorio

Crea una copia del archivo en el directorio de trabajo llamado origfile. La copia se ubicará en el directorio / directorio / subdirectorio y se llamará origfile.

cp origfile / directorio / subdirectorio /.

Igual que el comando anterior. La barra diagonal (/.) Está implícita en la forma anterior del comando. (El punto es un archivo especial en cada directorio de Linux que significa "este directorio").

Copie un archivo en otro directorio y asígnele un nuevo nombre.

cp origfile / directorio / subdirectorio / archivo nuevo

Crea una copia del archivo en el directorio de trabajo llamado origfile. La copia se llamará newfile y se ubicará en el directorio / directorio / subdirectorio.

Copie varios archivos en otro directorio, usando un comodín

archivo cp * / directorio / subdirectorio

Copie cada archivo en el directorio de trabajo cuyo nombre comienza con el archivo en el directorio / directorio / subdirectorio. El asterisco ("*") es un comodín, un carácter especial que se expande para coincidir con otros caracteres. Específicamente, el comodín de asterisco coincide con cero o más caracteres que no son espacios en blanco. Por ejemplo, este comando copiará cualquier archivo llamado file, file001, file.txt, fileone.jpg, file-archive.zip, etc.

archivo cp * .jpg / directorio / subdirectorio

Copie cada archivo en el directorio de trabajo cuyo nombre comienza con el archivo y termina con la extensión de archivo .jpg. Por ejemplo, haría copias de cualquier archivo llamado file, file001.jpg, file002.jpg o file-new.jpg, etc. Las copias se colocarán en el directorio / directorio / subdirectorio.

Copie una estructura de directorio completa a otra ubicación

cp -R / uno / dos / tres / cuatro

Copie el directorio dos (ubicado en el directorio / uno), y todo lo que contiene dos, en el directorio de destino / tres / cuatro. El resultado se llamará / tres / cuatro / dos. El directorio / three ya debe existir para que el comando tenga éxito. Si el directorio cuatro aún no existe en el directorio / tres, se creará.

cp file1.txt newdir

Copia el archivo1.txt en el directorio de trabajo al subdirectorio newdir.

cp /home/public_html/mylog.txt /home/public_html/backup/mylog.bak

Copia el archivo mylog.txt en el directorio public_html en el directorio public_html / backup como mylog.bak.

cp -u * .txt newdir

Copie todos los archivos que terminan en .txt en el directorio newdir, pero solo si los archivos aún no existen en el nuevo directorio, o si los archivos que se copian son más nuevos.

cp -R / home / hope / files / * / home / hope / backup

Copia recursivamente todos los archivos, directorios y subdirectorios en el directorio / home / hope / files en el directorio / home / hope / backup. Si la copia de seguridad del directorio no existe en el directorio / home / hope, se creará.

cp --archivo de respaldo archivo nuevo

Si ya existe un archivo nuevo, haga una copia de seguridad del archivo nuevo existente antes de sobrescribirlo con una copia del archivo original. Por defecto, la copia de seguridad de newfile se llamará newfile ~.

cp --backup = archivo nuevo origfile numerado

Si ya existe un archivo nuevo, haga una copia de seguridad del archivo nuevo existente antes de sobrescribirlo con una copia del archivo original. La copia de seguridad de archivo nuevo se llamará archivo nuevo. ~ 1 ~ si no existe otra copia de seguridad, o archivo nuevo. ~ 2 ~ si archivo nuevo. ~ 1 ~ existe, etc.

Comandos relacionados

dd: copia y convierte la codificación de archivos. ln: crea un enlace, o un enlace simbólico, en un archivo o directorio.mv: mueve archivos y directorios de una ubicación a otra y, opcionalmente, renómbralos.

#goog-gt-tt {display:none !important;}.goog-te-banner-frame {display:none !important;}.goog-te-menu-value:hover {text-decoration:none !important;}body {top:0 !important;}#gtranslate_element {display:none!important;}

var gt_not_translated_list = ["cp myfile.txt myfilecopy.txt","cp --help","cp --version","xattr","--remove-destination","cp picture.jpg picture-02.jpg","cp /home/chuck/pictures/picture.jpg /home/chuck/backup/picture.jpg","cp -s file.txt file2.txt","cp origfile newfile","cp file1.txt newdir","cp /home/public_html/mylog.txt /home/public_html/backup/mylog.bak"];
document.cookie = "googtrans=/en/es; domain=.balogs.xyz";
document.cookie = "googtrans=/en/es";
function GTranslateElementInit() {new google.translate.TranslateElement({pageLanguage: 'en',layout: google.translate.TranslateElement.InlineLayout.SIMPLE,autoDisplay: false,multilanguagePage: true}, 'gtranslate_element');}