Comando rsync de Linux

Linux 命令大全Guía completa de comandos de Linux


¿Qué es el comando rsync?

rsync (Remote Sync) es una potente herramienta de sincronización de archivos en el sistema Linux, que puede sincronizar eficientemente archivos y directorios entre sistemas locales o remotos. rsync es conocido por su algoritmo de "transferencia incremental", que solo transmite las diferencias entre el archivo de origen y el archivo de destino, mejorando en gran medida la eficiencia de la transferencia de archivos.

Características principales de rsync

  1. Sincronización incremental: solo transmite las partes modificadas de los archivos, ahorrando ancho de banda y tiempo
  2. Conservación de atributos: puede mantener metadatos como permisos de archivo, marcas de tiempo, etc.
  3. Transferencia comprimida: admite compresión durante la transferencia de datos, reduciendo la carga de red
  4. Exclusión flexible: puede excluir archivos o directorios específicos
  5. Soporte remoto: sincroniza de forma segura archivos de servidores remotos mediante SSH

Sintaxis básica de rsync

rsync [选项] 源文件 目标文件

Formas comunes de comando

Sincronización local:

rsync -av /path/to/source/ /path/to/destination/

Sincronizar de local a remoto:

rsync -avz /local/path/ username@remote_host:/remote/path/

Sincronizar de remoto a local:

rsync -avz username@remote_host:/remote/path/ /local/path/

Explicación detallada de las opciones comunes de rsync

Opción Nombre completo Descripción
-a --archive Modo de archivado, conserva todos los atributos de los archivos (equivalente a -rlptgoD)
-v --verbose Muestra información detallada de la transferencia
-z --compress Comprime los datos durante la transferencia
-r --recursive Copia directorios de forma recursiva
-l --links Conserva los enlaces simbólicos
-p --perms Conserva los permisos de archivo
-t --times Conserva la hora de modificación de los archivos
-g --group Conserva el grupo propietario de los archivos
-o --owner Conserva el propietario de los archivos
-D --devices Conserva los archivos de dispositivo (solo superusuario)
-h --human-readable Muestra los números en formato legible para humanos
--progress Muestra el progreso de la transferencia
--delete Elimina en el destino los archivos que no existen en el origen
--exclude=PATTERN Excluye los archivos que coinciden con PATTERN
--include=PATTERN Incluye los archivos que coinciden con PATTERN

Ejemplos de aplicación práctica de rsync

Ejemplo 1: Sincronización de directorios locales

Ejemplo

# Sincroniza /home/user/docs a /backup/docs, conservando todos los atributos
rsync -av /home/user/docs/ /backup/docs/

Nota: la barra diagonal después del directorio de origen/es muy importante:

  • Con barra: sincroniza el contenido del directorio
  • Sin barra: sincroniza el propio directorio

Ejemplo 2: Copia de seguridad en servidor remoto

Ejemplo

# Sincroniza el directorio local al servidor remoto, usando compresión
rsync -avz /data/backups/ user@example.com:/remote/backups/

Ejemplo 3: Sincronización con opción de exclusión

Ejemplo

# Sincroniza pero excluye los archivos .tmp y el directorio log
rsync -av --exclude='*.tmp' --exclude='log/' /source/ /destination/

Ejemplo 4: Mantener ambos extremos completamente idénticos (eliminar archivos sobrantes en el destino)

Ejemplo

rsync -av --delete /source/ /destination/

Usos avanzados de rsync

1. Usar un puerto personalizado con SSH

Ejemplo

rsync -avz -e 'ssh -p 2222' /local/path/ user@host:/remote/path/

2. Limitación de ancho de banda (limitar a 500KB/s)

Ejemplo

rsync -avz --bwlimit=500 /source/ /destination/

3. Transferencia parcial (transferir solo archivos mayores de 100KB)

Ejemplo

rsync -av --min-size=100K /source/ /destination/

4. Script de copia de seguridad programada

Ejemplo

#!/bin/bash
rsync -avz --delete /important/data/ backup@server:/backups/data/
echo "Backup completed at $(date)" >> /var/log/backup.log

Preguntas frecuentes sobre rsync

P1: ¿Cuál es la diferencia entre rsync y scp?

  • rsync: sincronización incremental, solo transfiere las diferencias, adecuado para copias de seguridad periódicas
  • scp: transferencia completa cada vez, adecuado para transferencias de archivos puntuales

P2: ¿Cómo reanudar una transferencia rsync interrumpida?

Usa--partialla opción para conservar los archivos parcialmente transferidos:

Ejemplo

rsync -av --partial /source/ /destination/

P3: ¿Cómo ver qué hará rsync sin ejecutarlo realmente?

Usa-nla opción (dry-run):

Ejemplo

rsync -avn /source/ /destination/

P4: ¿Cómo mejorar la velocidad de transferencia de rsync?

  1. Usa-zla opción para habilitar la compresión
  2. Usa--compress-level=Npara ajustar el nivel de compresión (1-9)
  3. Desactivar el cálculo de sumas de verificación (solo en redes de confianza):--no-checksum

Recomendaciones de mejores prácticas

  1. Prueba primero: usa-nla opción para hacer una simulación primero
  2. Registro de operaciones: añade--log-file=rsync.logpara registrar las operaciones
  3. Gestión de permisos: considera usar--chmodpara unificar los permisos de archivos
  4. Tareas programadas: combina con crontab para realizar copias de seguridad automáticas
  5. Transferencia segura: realiza siempre las transferencias remotas mediante SSH

Resumen

rsync es una herramienta imprescindible para administradores de sistemas Linux y desarrolladores; dominarla permite:

  • Realizar sincronización de archivos local y remota de manera eficiente
  • Implementar soluciones de copia de seguridad automatizadas
  • Optimizar la transferencia de datos en la red
  • Mantener la consistencia del sistema de archivos

Con lo aprendido en este artículo, debería haber dominado los usos básicos y las técnicas avanzadas de rsync. Se recomienda practicar más en el trabajo real y explorar gradualmente más funciones potentes de rsync.

Linux 命令大全Guía completa de comandos de Linux

Otras extensiones