GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo copiar archivos en Linux y Unix? Ejemplos de comandos de 10 cp

cp es uno de los comandos básicos en Unix. Ya sabes que sirve para copiar uno o varios archivos o directorios desde el origen al destino.

Si bien este tutorial es para principiantes, también es útil para que todos revisen rápidamente varias opciones de comando cp usando algunos ejemplos prácticos.

Incluso si usa el comando cp todo el tiempo, probablemente uno o más de los ejemplos que se explican a continuación pueden ser nuevos para usted.

La forma general del comando copiar:

cp [option] source destination

1. Copie un archivo o directorio desde el origen al destino

Para copiar un archivo, debe pasar el origen y el destino al comando de copia. El siguiente ejemplo copia el archivo de project/readme.txt a projectbackup/readme-new.txt

$ cp project/readme.txt projectbackup/readme-new.txt

$ cd projectbackup/

$ ls
readme-new.txt

Si desea copiar un archivo de una carpeta a otra con el mismo nombre, solo el nombre del directorio de destino es lo suficientemente bueno como se muestra a continuación.

$ cp project/readme.txt projectbackup/

$ cd projectbackup/

$ ls
readme.txt

Un directorio (y todo su contenido) se puede copiar desde el origen al destino con la opción recursiva -r como se muestra a continuación:

$ ls project
src/  bin/  doc/  lib/  test/  readme.txt  LICENSE

$ cp -r project/ backup/

$ ls backup
src/  bin/  doc/  lib/  test/  readme.txt  LICENSE

2. Copie múltiples archivos o directorios

Puede copiar más de un archivo desde el origen al destino como se muestra a continuación:

$ cd src/
$ cp global.c main.c parse.c /home/thegeekstuff/projectbackup/src/

Si los archivos de origen tienen un patrón común, use comodines como se muestra a continuación. En este ejemplo, todos los archivos con extensión c se copian en el directorio /home/thegeekstuff/projectbackup/src/.

$ cp *.c /home/thegeekstuff/projectbackup/src/

Copie varios directorios como se muestra a continuación.

$ cd project/

$ cp -r src/ bin/ /home/thegeekstuff/projectbackup/

3. Copia de seguridad antes de copiar en un destino

En caso de que el archivo de destino ya esté presente con el mismo nombre, cp le permite hacer una copia de seguridad del archivo de destino antes de sobrescribirlo.

En este ejemplo, el archivo readme.txt existe tanto en el directorio project/ como en projectbackup/, y al copiarlo de project/ a projectbackup/, se realiza una copia de seguridad del archivo readme.txt existente como se muestra a continuación:

$ cd projectbackup

$ ls -l readme.txt
-rw-r--r-- 1 bala geek 1038 Jan  8 13:15 readme.txt

$ cd ../project 

$ ls -l readme.txt
-rw-r--r-- 1 bala geek 1020 Jan  8 12:25 readme.txt

$ cp --backup readme.txt  /home/thegeekstuff/projectbackup/

El archivo existente se movió a readme.txt~ y el nuevo archivo se copió como readme.txt como se muestra a continuación.

$ cd /home/thegeekstuff/projectbackup/
$ ls -l
-rw-r--r-- 1 bala geek 1020 Jan  8 13:36 readme.txt
-rw-r--r-- 1 bala geek 1038 Jan  8 13:15 readme.txt~

Hablando de respaldo, es importante que comprenda cómo funciona el comando rsync para respaldar archivos de manera efectiva.

4. Conservar los enlaces mientras se copia

Cuando ejecuta el comando cp, si la fuente es un archivo de enlace, entonces se copia el archivo real y no el archivo de enlace. En caso de que solo desee copiar el enlace tal como está, especifique la opción -d como se muestra a continuación:

Lo siguiente muestra que sin la opción -d, copiará el archivo (y no el enlace):

$ cd project/bin

$ ls -l startup.sh
lrwxrwxrwx 1 root root 18 Jan  8 13:59 startup.sh -> ../test/startup.sh

$ cp startup.sh /home/thegeekstuff/projectbackup/bin/

$ cd /home/thegeekstuff/projectbackup/bin/

$ ls -l
-rw-r--r--  1 root root       102 Jan  8 14:02 startup.sh

Para conservar el vínculo mientras se copia, haga lo siguiente:

$ cd project/bin

$ cp -d startup.sh /home/thegeekstuff/projectbackup/bin/

$ ls -l startup.sh
lrwxrwxrwx 1 root root 18 Jan  8 14:10 startup.sh -> ../test/startup.sh

5. No sobrescriba un archivo existente

Si desea copiar solo cuando el archivo de destino no existe, use la opción -n como se muestra a continuación. Esto no sobrescribirá el archivo existente y el comando cp regresará con un código de salida exitoso como se muestra a continuación:

$ cd projectbackup

$ ls -l readme.txt
-rw-r--r-- 1 bala geek 1038 Jan  8 13:15 readme.txt

$ cd ../project 

$ ls -l readme.txt
-rw-r--r-- 1 bala geek 1020 Jan  8 12:25 readme.txt

$ cp -n readme.txt /home/thegeekstuff/projectbackup/bin/

$ echo $?
0

Como puede ver a continuación, el archivo de destino no se sobrescribió.

$ cd projectbackup

$ ls -l readme.txt
-rw-r--r-- 1 bala geek 1038 Jan  8 13:15 readme.txt

6. Confirmar antes de sobrescribir (modo interactivo)

Cuando usa la opción -i, le pedirá confirmación antes de sobrescribir un archivo como se muestra a continuación.

$ cp -i readme.txt /home/thegeekstuff/projectbackup/
cp: overwrite `/home/thegeekstuff/projectbackup/readme.txt'? y

7. Cree un vínculo físico a un archivo (en lugar de copiarlo)

Cuando ejecuta el comando cp, es posible crear un enlace físico del archivo (en lugar de copiar el archivo). El siguiente ejemplo crea el enlace duro para el archivo sample.txt en el directorio test/,

$ ls -li sample.txt
10883362 -rw-r--r-- 2 bala geek   1038 Jan  9 18:40 sample.txt

$ cp -l sample.txt test/ 

$ ls -li test/sample.txt
10883362 -rw-r--r-- 2 bala geek   1038 Jan  9 18:40 test/sample.txt

Como se vio anteriormente, test/sample.txt es un archivo vinculado al archivo sample.txt y el inodo de ambos archivos es el mismo.

8. Cree un enlace suave a un archivo o directorio (en lugar de copiarlo)

Cuando ejecuta el comando cp, es posible crear un enlace suave a un archivo o directorio. En el siguiente ejemplo, se crea un enlace simbólico para libFS.so.6.0.0 como libFS.so,

# cd /usr/lib/

# ls -l libFS.so.6.0.0
-rw-r--r-- 1 root root 42808 Nov 19  2010 libFS.so.6.0.0

# cp -s libFS.so.6.0.0 libFS.so

# ls -l libFS.so
lrwxrwxrwx 1 root root 14 Jan  9 20:18 libFS.so -> libFS.so.6.0.0

9. Conservar los atributos del archivo o directorio al copiar

Con la opción -p, puede conservar las propiedades de un archivo o directorio como se muestra a continuación:

$ ls -l sample.txt
-rw-r--r-- 2 bala geek   1038 Jan  9 18:40 sample.txt

$ cp -p sample.txt test/ 

$ ls -l test/sample.txt
-rw-r--r-- 2 bala geek   1038 Jan  9 18:40 test/sample.txt

También es posible conservar solo las propiedades requeridas como el modo, la propiedad, las marcas de tiempo, etc.,

El siguiente ejemplo conserva el modo de un archivo mientras lo copia:

$ cp --preserve=mode sample.txt test/

10. Copie solo cuando el archivo de origen sea más nuevo que el de destino o falte

La copia no toma mucho tiempo para un archivo pequeño, pero puede tomar una cantidad considerable de tiempo cuando se copia un archivo grande. Por lo tanto, al copiar un archivo grande, es posible que desee asegurarse de hacerlo solo cuando el archivo de origen sea más nuevo que el archivo de destino, o cuando falte el archivo de destino utilizando la opción -u como se muestra a continuación.

En este ejemplo, los dos archivos LICENSE y readme.txt se copiarán de project/ a projectbackup/. Sin embargo, el archivo LICENSE ya existe en el directorio projectbackup/ y es más nuevo que el del directorio project/.

$ cd project/

$ ls -l LICENSE readme.txt 
-rw-r--r-- 1 bala geek 108 Jan  8 13:14 LICENSE
-rw-r--r-- 1 bala geek 32 Jan  8 13:16 readme.txt

$ cd /home/thegeekstuff/projectbackup/

$ ls -l LICENSE readme.txt 
ls: cannot access readme.txt: No such file or directory
-rw-r--r-- 1 root root 112 Jan  9 20:31 LICENSE

Entonces, en este ejemplo, no hay necesidad de copiar el archivo LICENSE nuevamente al directorio projectbackup/. El comando cp se ocupa automáticamente de esto, si usa la opción -u como se muestra a continuación. En el siguiente ejemplo, solo se copió el archivo readme.txt como lo indica la marca de tiempo en el archivo.

$ cp -u -v LICENSE readme.txt  /home/thegeekstuff/projectbackup/
`readme.txt' -> `/home/thegeekstuff/projectbackup/readme.txt'

$ cd /home/thegeekstuff/projectbackup/

$ ls -l LICENSE readme.txt 
-rw-r--r-- 1 bala geek  112 Jan  9 20:31 LICENSE
-rw-r--r-- 1 bala geek   32 Jan  9 22:17 readme.txt

Linux
  1. Cómo comprimir archivos y directorios en Linux (con ejemplos)

  2. Cómo comprimir y descomprimir archivos en Linux

  3. Cómo encontrar archivos con el comando fd en Linux

  4. ¿Cómo usar el comando Rsync en Linux?

  5. Ejemplos de comandos dd en Linux

Cómo instalar Rclone en Linux y Unix

Cómo copiar archivos en Linux usando el comando CP

Cómo copiar archivos y directorios en la terminal de Linux

Cat Command en Linux:ejemplos esenciales y avanzados

Comando ls en Linux/UNIX

comando cp en Linux/UNIX