Esta publicación trata sobre el comando cp de Linux.
Copiar archivos es una de las tareas más comunes cuando se manejan archivos en cualquier sistema operativo. Incluso es muy habitual utilizar el atajo de escritorio CTRL+c para copiar y CTRL+v para pegar. Sin embargo, en la terminal de Linux, también es una tarea bastante simple de hacer y para eso usamos el comando cp.
El comando cp simplemente copia uno o más archivos o carpetas de una ubicación a otra. Sin embargo, como cualquier comando de Linux, su comportamiento inicial puede modificarse gracias al uso de opciones.
De manera similar, el comando cp viene instalado y listo en todas las distribuciones de Linux, ya que es parte de las utilidades de GNU. Así que simplemente abra un emulador de terminal y comience a trabajar.
El comando cp es bastante simple de usar porque su función también es simple. Como todos los comandos de la familia UNIX, tiene una sintaxis básica para su uso.
Donde fuente se refiere al archivo o carpeta que se copiará a un destino llamado directorio.
Las opciones y alguna información básica sobre el comando se pueden ver usando el siguiente comando:
Allí verás que hay varias opciones diferentes. Los más importantes son los siguientes:
Opción | Descripción según GNU utils |
-a | Conserve tanto como sea posible la estructura y los atributos de los archivos originales en la copia |
-d | Copie los enlaces simbólicos como enlaces simbólicos en lugar de copiar los archivos a los que apuntan y conserve los enlaces físicos entre los archivos de origen en las copias. |
-f o –force | Esta opción fuerza la copia incluso si la carpeta de destino no está disponible para escritura. |
-i o –interactivo | Muestra un mensaje cada vez que se sobrescribe un archivo. |
-l | Haga enlaces duros en lugar de copias de no directorios. |
-R o -r o –recursivo | Copiar directorios recursivamente. De forma predeterminada, no siga enlaces simbólicos en la fuente. |
-s o –enlace-simbólico | En este caso, el comando creará enlaces simbólicos de todos los archivos que no sean carpetas. Esto reemplaza una copia. |
-u o –update | Esta opción no copia archivos que tienen la misma marca de tiempo de modificación o una más reciente en la carpeta de destino. Es una actualización de una copia. |
-v o –verbose | Imprima el nombre de cada archivo antes de copiarlo. |
Ahora, con algunos ejemplos, demostraremos el uso común del comando cp en un sistema Linux.
Usando el comando cp
Copiar uno o más archivos a una carpeta
Empecemos con lo básico. Para copiar un archivo a una determinada carpeta, el comando a ejecutar es el siguiente:
:~$ cp [file] [destination]
Por ejemplo:
:~$ cp file.txt /home/user/Documents/
El comando anterior copia un archivo llamado file.txt ubicado en la misma ubicación que el mensaje en la carpeta Documentos.
También puede copiar un archivo que se encuentre en una ubicación diferente a la del aviso, usando una ruta absoluta.
:~$ cp /home/user/Pictures/image.jpg /home/user/Documents
Entonces, si desea copiar varios archivos a la vez, simplemente sepárelos con un espacio en blanco.
:~$ cp file1.txt file2.txt /home/user/Downloads
Todavía puedes hacerlo con las rutas absolutas.
:~$ cp /home/user/file1.txt /home/user/Pictures/file2.jpg /home/user/Downloads
Así de rápido puedes copiar varios archivos.
Copiar todos los archivos de un directorio a una carpeta
También es posible copiar todos los archivos de una carpeta a otra. Para ello, utilice el operador asterisco (*). Por ejemplo:
:~$ cp * [destination]
O
:~$ cp * /home/users/Documents/folder/
Pero si quieres copiar todos los archivos que tengan la misma extensión, puedes hacerlo de la siguiente forma:
:~$ cp *.txt /home/users/Documents/folder/
Es decir, todos los archivos .txt se copian en la carpeta.
Copiando directorios con el comando cp
Hasta ahora te hemos enseñado a copiar archivos, pero ¿y si quisieras copiar una carpeta? Bueno, provoca un error.
Supongamos que desea copiar una carpeta llamada "ejemplo" en /home/angelo/Documentos, esto provocaría un error de directorio de omisión de cp
similar a este:
-
Para copiar carpetas con el comando cp, agregue la opción -r. Por ejemplo:
:~$ cp -r example/ /home/angelo/Documents/
Esto copiará toda la carpeta a la carpeta de destino.
Copia de seguridad de los archivos a copiar
Esta es una opción muy útil. Al copiar archivos es común que lo vayas modificando con el tiempo, pero siempre puedes quedarte con una copia del original.
Para crear la copia de seguridad, simplemente use el siguiente comando:
:~$ cp -ab [file] [destination]
Por supuesto, puede especificar el archivo y la carpeta que desee. Por ejemplo:
:~$ cp -ab file2.txt /home/angelo/Documents/example/
En este caso, estamos usando dos opciones simultáneamente. El primero es -a. trata explícitamente el archivo como lo que es, un archivo. Y el segundo que es -b es para realizar la copia de seguridad.
Lo que hace el comando es crear una copia de seguridad y agregar un ~ al final si hacemos la copia por segunda vez. Este será el archivo original de la copia.
:~$ ll /home/angelo/Documents/example
Solicitar confirmación antes de sobrescribir un archivo
Para evitar posibles errores en la escritura del archivo, puede utilizar la opción -i.
Con esta opción, se le pedirá que confirme antes de sobrescribir archivos para una copia. Para hacer esto, simplemente agregue la opción -i al comando:
:~$ cp -i file2.txt /home/angelo/Documents/example/
Recuerde, la advertencia solo aparecerá cuando se esté sobrescribiendo. Si copia muchos archivos pero ninguno se llama igual que otro en el destino, no se mostrará nada.
Evite sobrescribir archivos con el comando cp
El comando cp tiene una opción que evita que los archivos de la carpeta de destino se sobrescriban durante la copia.
Para hacer esto, simplemente agregue la opción -n al comando cp:
:~$ cp -n file.txt [destination]
Esta opción es útil si ya sabe que hay archivos que tienen el mismo nombre y quiere evitar sobrescribirlos. Por otro lado, también es útil si no tienes idea de si existen archivos similares.
Haga copias manteniendo los atributos del archivo
En los sistemas basados en Unix, los archivos tienen atributos específicos. Por lo tanto, si un usuario diferente al que lo creó lo copia o lo mueve, se corre el riesgo de modificar los valores de estos atributos. Algunos de ellos son la fecha de modificación y los permisos de archivos.
Para evitar esto, agregue la opción -p al comando cp.
:~$ cp -p [file] [destination]
Así de sencillo es conservar los atributos durante la copia.
Actualización de una copia de seguridad con el comando cp
Es posible usar el comando cp para hacer una copia de seguridad de nuestros archivos en otra ubicación, como una memoria externa. Suponga que desea hacer una copia de seguridad de una carpeta con música en otra ubicación. Para hacer esto, usaría el siguiente comando:
:~$ cp -r [music_folder] [destination]
Pero resulta que está agregando nuevos archivos a esa carpeta y desea hacer una copia de seguridad de ellos nuevamente. Puede evitar que el comando cp vuelva a copiar los archivos de los que ya ha hecho una copia de seguridad y simplemente copie los que no están en la carpeta de destino.
Suena bien, ¿no? Bueno, para hacer eso usamos la opción -u o -update.
:~$ cp -ru [music_folder] [destination]
En resumen, el comando copiará la carpeta, verificará qué archivos de la carpeta de origen están en el destino. Y por último, copiará solo las que no lo sean.
Para ver todo el proceso, también puede agregar la opción -v.
:~$ cp -ruv [music_folder] [destination]
Por lo tanto, puede actualizar una copia de seguridad con un simple comando.
Reflexiones finales
El comando cp es un comando fácil de usar pero has visto que puedes hacer muchas cosas interesantes con él. Es parte de las utilidades de GNU, lo que hace que esté disponible para todas las distribuciones de Linux.
Por otro lado, en este post has aprendido una parte de lo que se puede hacer con el mando. Esto es muy útil en entornos de servidor pero también para profundizar más y más en el funcionamiento del sistema operativo.