Transferencia de archivos: scp y rsync

Introducción

Linux ofrece herramientas de línea de comandos para copiar archivos entre máquinas de forma segura. scp (Secure Copy Protocol) es la opción más sencilla para transferencias puntuales. rsync es más potente: sincroniza directorios completos transfiriendo solo las diferencias, lo que lo hace ideal para backups y despliegues.

scp — Copia segura entre hosts

scp usa el protocolo SSH para cifrar la transferencia. Su sintaxis es similar a cp pero admite rutas remotas en el formato usuario@host:/ruta.

Copiar un archivo local a un servidor remoto:


$ scp archivo.txt usuario@192.168.1.10:/home/usuario/
$ scp archivo.txt usuario@servidor:/tmp/
          

Copiar un archivo remoto al equipo local:


$ scp usuario@192.168.1.10:/var/log/syslog .
$ scp usuario@servidor:/etc/nginx/nginx.conf ~/backups/
          

Copiar un directorio completo (recursivo):


$ scp -r carpeta/ usuario@servidor:/home/usuario/
          

Opciones útiles:

  • -r → recursivo (directorios)
  • -P 2222 → puerto SSH alternativo (mayúscula)
  • -i ~/.ssh/clave.pem → usar clave privada específica
  • -C → comprimir durante la transferencia

$ scp -P 2222 -i ~/.ssh/id_rsa archivo.txt usuario@servidor:/tmp/
          

Copiar entre dos servidores remotos:


$ scp usuario@servidor1:/datos/archivo.txt usuario@servidor2:/destino/
          

rsync — Sincronización eficiente

rsync transfiere solo los bloques que han cambiado, ahorrando ancho de banda. Es la herramienta preferida para backups incrementales y sincronización de directorios.

Sincronizar un directorio local:


$ rsync -av origen/ destino/
          

Sincronizar con un servidor remoto (vía SSH):


$ rsync -av carpeta/ usuario@servidor:/home/usuario/carpeta/
$ rsync -av usuario@servidor:/var/www/ /backup/www/
          

Opciones esenciales:

  • -a → modo archivo: preserva permisos, fechas, propietario, enlaces simbólicos y recursivo
  • -v → verbose: muestra los archivos transferidos
  • -z → comprimir durante la transferencia
  • -P → muestra progreso y permite reanudar transferencias interrumpidas
  • --delete → elimina en destino los archivos que ya no existen en origen
  • --dry-run → simula sin hacer cambios (imprescindible antes de usar --delete)
  • -e "ssh -p 2222" → puerto SSH alternativo

Backup incremental típico:


$ rsync -avz --delete /datos/ usuario@servidor:/backup/datos/
          

Simulación antes de sincronizar:


$ rsync -av --dry-run --delete /datos/ usuario@servidor:/backup/datos/
          

Excluir archivos o directorios:


$ rsync -av --exclude="*.log" --exclude="tmp/" origen/ destino/
$ rsync -av --exclude-from=exclusiones.txt origen/ destino/
          

scp vs rsync: cuándo usar cada uno

  • Usa scp para copias puntuales de archivos individuales de forma rápida.
  • Usa rsync cuando necesitas sincronizar directorios, hacer backups o cuando el ancho de banda importa.
  • rsync es más seguro en scripts porque con --dry-run puedes verificar antes de ejecutar.

Ambas herramientas usan SSH como canal de transporte, por lo que se benefician de la autenticación por clave pública para evitar introducir contraseña en cada transferencia.

Estrategias de backup y dd: tipos, backups incrementales y clonado de disco

Índice de la sección

Índice del curso