Como usuarios de Linux, trabajamos con archivos y directorios constantemente. Una de las tareas más habituales es copiar archivos y carpetas, ya sea para hacer respaldos, reorganizar información o duplicar configuraciones importantes.
Aunque esta operación puede realizarse desde un gestor gráfico de archivos, la mayoría de usuarios de Linux prefieren utilizar el comando cp por su rapidez, control y potencia.
¿Cómo usar el comando CP en Linux?
En esta guía práctica aprenderás a usar el comando cp con ejemplos reales que puedes aplicar en tu día a día.
Sintaxis del comando cp
La sintaxis del comando cp es similar a la de otros comandos en Linux y se divide en opciones y argumentos:
$ cp [OPTIONS] <SOURCE> <DEST>
$ cp [OPTIONS] <SOURCE-1> <SOURCE-2> ... <DIRECTORY>
- Los corchetes
([])indican argumentos opcionales. - Los símbolos
(<>)indican argumentos obligatorios.
1. ¿Cómo copiar un archivo en Linux?
Uno de los usos más básicos del comando cp es copiar un archivo dentro del directorio actual. Esto es muy común para crear copias de seguridad de configuraciones importantes.
Por ejemplo, antes de modificar el archivo /etc/ssh/sshd_config, muchos administradores crean una copia de respaldo.
Primero, creamos un archivo de prueba:
$ touch fichero-1.txt
Ahora lo copiamos:
$ cp fichero-1.txt fichero-2.txt
El archivo fichero-2.txt será una copia exacta del original.
2. ¿Cómo mostrar el progreso de copia?
En lugar de usar otro comando para verificar si la copia fue exitosa, podemos activar el modo verbose con la opción -v:
$ cp -v fichero-1.txt file-3.txt
El sistema mostrará qué archivo se está copiando.
El elemento de la izquierda es el archivo origen y el de la derecha el destino.
3. ¿Cómo copiar múltiples archivos a un directorio?
En entornos reales es común trabajar con muchos archivos a la vez. En lugar de ejecutar varios comandos, se pueden copiar todos en uno solo.
Primero creamos un directorio:
$ mkdir dir-1
Luego copiamos varios archivos a la vez:
$ cp -v fichero-1.txt fichero-2.txt file-3.txt dir-1
Importante: el directorio destino debe existir previamente y debe colocarse como último argumento.
4. ¿Cómo evitar sobrescribir un archivo?
Por defecto, cp sobrescribe el archivo destino si ya existe. Para evitarlo, se puede usar la opción -n:
$ cp -n -v fichero-1.txt fichero-2.txt
Si el archivo destino ya existe, no será reemplazado.
5. ¿Cómo sobrescribir con confirmación?
Si se desea más control, puede activarse el modo interactivo con -i:
$ cp -i fichero-1.txt fichero-2.txt
El sistema preguntará:
cp: overwrite 'fichero-2.txt'?
Puedes responder:
ypara continuarnpara cancelar
Algunas distribuciones incluso configuran esto por defecto mediante:
$ alias cp='cp -i'
6. ¿Cómo copiar solo si el archivo origen es más reciente?
Para evitar sobrescribir accidentalmente archivos más nuevos, se puede usar la opción -u.
Primero modificamos la fecha del archivo origen:
$ touch -t 10101010 fichero-1.txt
Luego actualizamos el archivo destino:
$ touch fichero-2.txt
Intentamos copiar:
$ cp -u -v fichero-1.txt fichero-2.txt
La copia solo se realizará si el archivo origen es más reciente que el destino.
7. ¿Cómo crear copia de seguridad antes de sobrescribir?
El comando cp permite crear automáticamente una copia de seguridad usando --backup:
$ cp --backup=numbered -v fichero-1.txt fichero-2.txt
La opción numbered crea archivos de respaldo con números incrementales:
fichero-2.txt.~1~
fichero-2.txt.~2~
Ideal cuando se necesita mantener versiones anteriores.
8. ¿Cómo forzar la sobrescritura?
Si el archivo destino no tiene permisos de escritura, la copia fallará. En esos casos se puede usar -f para forzar la operación.
Primero cambiamos permisos:
$ chmod 444 fichero-2.txt
Luego forzamos la copia:
$ cp -f -v fichero-1.txt fichero-2.txt
Esta opción elimina el archivo destino si es necesario y realiza la copia.
9. ¿Cómo eliminar el destino antes de copiar?
Si se necesita eliminar explícitamente el archivo destino antes de copiar, se puede usar:
$ cp --remove-destination -v fichero-1.txt fichero-2.txt
Primero elimina el archivo existente y luego realiza la copia.
10. ¿Cómo crear un enlace duro en lugar de copiar?
Para ahorrar espacio en disco, se puede crear un enlace duro con -l:
$ cp -l -v fichero-1.txt file-4.txt
Ambos archivos compartirán el mismo inode.
Para verificar:
$ ls -i1 fichero-1.txt file-4.txt
Si el número es el mismo, se trata de un enlace duro.
11. ¿Cómo crear un enlace simbólico en lugar de copiar?
También es posible crear un enlace simbólico con -s:
$ cp -s -v fichero-1.txt file-5.txt
Verificación:
$ ls -l file-5.txt
El archivo será un acceso directo al original.
12. ¿Cómo conservar atributos del archivo?
Por defecto, cp no conserva atributos como permisos o fecha de modificación. Para preservarlos, se utiliza -p:
$ touch -t 10101010 fichero-1.txt
$ cp -p -v fichero-1.txt file-6.txt
El nuevo archivo mantendrá los mismos permisos y fechas.
13. ¿Cómo copiar directorios de forma recursiva?
Para copiar directorios completos con subdirectorios y archivos, se utiliza -r o -R.
Creamos estructura:
$ mkdir -p dir-1/dir-2
$ touch dir-1/fichero-1.txt dir-1/dir-2/fichero-2.txt
Copiamos recursivamente:
$ cp -r -v dir-1 dir-3
Todo el contenido se duplicará en dir-3.
14. ¿Cómo copiar múltiples directorios?
También se pueden copiar varios directorios al mismo tiempo.
Primero creamos el destino:
$ mkdir dir-4
Luego copiamos:
$ cp -r -v dir-1 dir-3 dir-4
Alternativamente, se puede usar la opción -t:
$ cp -t dir-4 -r -v dir-1 dir-3
En ambos casos, el directorio destino debe existir previamente.
Conclusión
El comando cp es una herramienta fundamental en Linux para copiar archivos y directorios de forma eficiente y segura.
En esta guía vimos cómo:
- Copiar archivos individuales
- Copiar múltiples archivos
- Evitar sobrescrituras accidentales
- Crear copias de seguridad
- Forzar copias
- Crear enlaces duros y simbólicos
- Preservar atributos
- Copiar directorios de forma recursiva
Dominar el comando cp mejora notablemente la productividad y el control en sistemas Linux.
