Descubre las mejores opciones del comando cp en Linux para mejorar tu experiencia al copiar archivos y directorios, desde copias recursivas hasta preservar atributos y más.
El comando cp en Linux tiene opciones interesantes que amplían su uso. La mayoría de los usuarios solo hacen copias simples y nunca se molestan en explorar las banderas que lo acompañan. Después de probar algunas, me di cuenta de que hay algunas banderas que sigo usando para tener una mejor experiencia.
-r o -R: Copia Recursiva
Puedes usar el comando cp para copiar tanto archivos como directorios. Por defecto, solo funciona con archivos. Si intentas usarlo con directorios, recibirás un error que omitirá la copia del directorio.
cp dirA/ dirB/
Ahí es donde entra en juego la bandera -r. Usando la bandera -r, también puedes copiar directorios y los archivos dentro de ellos.
cp -r dirA/ dirB/
Aquí estamos copiando todo el directorio "dirA/" a otro directorio llamado "dirB/". Notarás que el directorio "dirA/" en sí también fue copiado. Si no deseas eso y solo quieres copiar el contenido dentro del directorio, debes añadir un punto (.) después de la barra, así:
cp -r dirA/. dirB/
Si solo deseas crear una copia en el mismo directorio, puedes pasar un nuevo nombre como argumento.
cp -r dirA/ dir-copy # copiando el directorio y renombrándolo
-u: Copiar Solo Cuando la Fuente es Más Nueva
Una de las banderas más subestimadas para el comando cp es -u. Esta opción indica a cp que solo copie un archivo si el archivo fuente es más nuevo que el de destino o si el destino aún no existe.
Imagina que tienes un directorio lleno de archivos de proyecto que estás respaldando en otra carpeta. Ejecutar una copia recursiva normal cada vez sobrescribirá todos los archivos, incluso aquellos que no han cambiado. Eso es un desperdicio de I/O y, dependiendo del tamaño del proyecto, podría ralentizar considerablemente las cosas.
Con -u, puedes ejecutar el mismo comando de copia una y otra vez, y solo se transferirán los archivos actualizados. Supongamos que tienes una carpeta "reports/" que estás sincronizando en "backup/":
cp -ru reports/ backup/
Como se ve en la captura de pantalla anterior, hice un pequeño experimento que tú también puedes seguir. La primera ejecución copiará todo. La segunda ejecución copiará solo los archivos que has tocado o creado desde la última copia de seguridad. Si nada ha cambiado, el comando terminará casi instantáneamente.
-i: Modo Interactivo
Si eres olvidadizo como yo, probablemente has ejecutado el comando cp sin pensar, presionaste Enter y de repente te das cuenta de que acabas de sobrescribir un archivo que realmente no querías perder. Por defecto, cp no solicitará confirmación. Simplemente reemplazará el archivo de destino en silencio. Aquí es donde la bandera -i resulta útil. Indica a cp que pregunte antes de sobrescribir un archivo. Si un archivo de destino ya existe, cp te lo preguntará con una simple pregunta como:
cp: ¿sobrescribir 'file.txt'?
En este punto, puedes escribir 'y' para sobrescribirlo o 'n' para omitirlo. Aquí tienes un ejemplo:
cp -i report1.txt reports/ # cp: ¿sobrescribir 'reports/report1.txt'? n cp -i report1.txt reports/ # cp: ¿sobrescribir 'reports/report1.txt'? y
Si "reports/report1.txt" ya existe, te preguntarán antes de reemplazarlo. Sin -i, el archivo sería sobreeescrito sin advertencia. Esto es particularmente útil al copiar en ubicaciones como "/etc/" o "/var/", donde un sobrescribir incorrecto podría causar problemas significativos. En caso de que desees copiar un montón de archivos y solo algunos ya existan en el destino, -i te permite decidir caso por caso.
-v: Modo Verboso
La bandera -v es bastante común para los comandos de Linux. Activa el modo verboso, que es útil para ver lo que sucede en segundo plano cuando ejecutas un comando. Para el comando cp específicamente, la bandera -v muestra exactamente qué está copiando. Con -v, cada archivo que se copia se imprime en la terminal en el formato:
'fuente' -> 'destino'
Esto deja claro qué está sucediendo entre bastidores. Veamos un ejemplo:
cp -v report1.txt backup/
Para múltiples archivos, puedes usar un comodín:
cp -v *.txt backup/
Ahora tienes la confirmación de que cada archivo realmente fue a donde esperabas. Cuando copias archivos en grupos, la bandera verbosa te da un registro continuo del progreso. También es útil para detectar esos pequeños errores en caso de una copia fallida.
-p: Preservar Atributos
Por defecto, el comando cp se centra en obtener los...
El contenido de tus archivos desde el punto A hasta el punto B. Pero a veces, los metadatos, como las marcas de tiempo, modos de archivo y propiedad, son tan importantes como el archivo en sí. De eso se trata la opción -p: preservar atributos.
Cuando añades -p, cp conservará estos atributos. Sin -p, los archivos copiados obtienen nuevas marcas de tiempo y propiedades predeterminadas en el destino. Con -p, permanecen como "clones" de los originales tanto en contenido como en metadatos. Veámoslo en acción.
cp -p config.cfg backup/
En el caso de la copia recursiva:
cp -rp project/ backup/
Esto copiará todo el directorio project/, asegurando que todos los archivos mantengan sus atributos originales. Si estás archivando archivos, no querrás que todos muestren la fecha de hoy. Conservar las marcas de tiempo originales te ayuda a saber cuándo las cosas realmente cambiaron.
Hay muchas más opciones y argumentos para el comando cp. Puedes explorarlos en la página oficial. Conocer estas opciones de comando hace que la navegación de archivos en Linux y la gestión de archivos desde la terminal sean mucho más fáciles.
Si deseas encontrar artículos similares a Comando cp de Linux: Mis banderas y argumentos más utilizados, te sugerimos revisar la categoría Linux.

Deja una respuesta