El comando cp en Linux: copiar archivos y directorios

Introducción

El comando cp (copy) es una de las herramientas más utilizadas en la línea de comandos de Linux para duplicar archivos y directorios. Ya sea que necesites hacer una copia de seguridad rápida, mover datos entre particiones o simplemente organizar tu espacio de trabajo, entender sus opciones y comportamientos te ahorrará tiempo y evitará pérdidas de información.

Sintaxis básica

La forma más simple de usar cp es:

cp origen destino

Donde origen es el archivo o directorio que deseas copiar y destino es la ubicación donde se colocará la copia. Si destino es un nombre de archivo inexistente, cp creará un nuevo archivo con ese nombre; si ya existe, lo sobrescribirá salvo que indiques lo contrario.

Opciones más útiles

  • -r o -R: copia recursiva, necesaria para directorios.
  • -i: pide confirmación antes de sobrescribir un archivo existente.
  • -u: copia solo cuando el origen es más nuevo que el destino o cuando el destino no existe.
  • -v: modo verboso, muestra qué se está copiando.
  • -p: conserva los permisos, timestamps y otros atributos del archivo original.
  • -a: equivale a -dR --preserve=all, ideal para hacer una copia idéntica de un directorio.
  • --backup[=CONTROL]: crea una copia de seguridad del archivo destino antes de sobrescribirlo.

Ejemplos prácticos

Copiar un archivo llamado nota.txt al directorio /tmp:

cp nota.txt /tmp/

Renombrar el archivo al copiarlo:

cp nota.txt /tmp/nota_respaldo.txt

Copiar varios archivos a un directorio:

cp archivo1.txt archivo2.txt /home/usuario/documentos/

Copiar directorios completos

Para duplicar un directorio y todo su contenido se debe usar la opción -r:

cp -r proyectos/ /var/backup/proyectos_backup

Si se desea mantener la estructura exacta, incluyendo enlaces simbólicos y atributos, se prefiere -a:

cp -a proyectos/ /var/backup/proyectos_clone

Preservar atributos y enlaces

La opción -p asegura que los permisos, dueño, grupo y marcas de tiempo se mantengan idénticos. Cuando se trabaja con enlaces simbólicos, -P (mayúscula) copia el enlace mismo, mientras que -L sigue el enlace y copia el archivo al que apunta.

Errores comunes y cómo evitarlos

  • Sobrescribir accidentalmente archivos importantes: siempre usa -i o crea una copia de seguridad con --backup.
  • Olvidar la opción recursiva al intentar copiar un directorio: el comando fallará con un mensaje como «omitiendo directorio».
  • Confundir el orden origen‑destino: invertirlos puede llevar a sobrescribir el origen. Verifica siempre antes de ejecutar.
  • Copiar en sistemas de archivos que no soportan ciertos atributos (por ejemplo, FAT) puede generar advertencias; usa -a con precaución.

Consejos finales

Combina cp con otros comandos mediante tuberías para tareas más avanzadas, por ejemplo:

find . -name "*.log" -exec cp {} /mnt/archivos_log/ \;

Esto copia todos los archivos .log del árbol actual a un directorio de destino. Además, puedes crear alias en tu ~/.bashrc para que cp siempre solicite confirmación:

alias cp='cp -i'

Conocer a fondo cp te permitirá gestionar tus archivos de forma segura y eficiente, ya sea en un servidor de producción o en tu equipo personal.