Comando rsync de 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
- Sincronización incremental: solo transmite las partes modificadas de los archivos, ahorrando ancho de banda y tiempo
- Conservación de atributos: puede mantener metadatos como permisos de archivo, marcas de tiempo, etc.
- Transferencia comprimida: admite compresión durante la transferencia de datos, reduciendo la carga de red
- Exclusión flexible: puede excluir archivos o directorios específicos
- 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
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
rsync -avz /data/backups/ user@example.com:/remote/backups/
Ejemplo 3: Sincronización con opción de exclusión
Ejemplo
rsync -av --exclude='*.tmp' --exclude='log/' /source/ /destination/
Ejemplo 4: Mantener ambos extremos completamente idénticos (eliminar archivos sobrantes en el destino)
Ejemplo
Usos avanzados de rsync
1. Usar un puerto personalizado con SSH
Ejemplo
2. Limitación de ancho de banda (limitar a 500KB/s)
Ejemplo
3. Transferencia parcial (transferir solo archivos mayores de 100KB)
Ejemplo
4. Script de copia de seguridad programada
Ejemplo
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
P3: ¿Cómo ver qué hará rsync sin ejecutarlo realmente?
Usa-nla opción (dry-run):
Ejemplo
P4: ¿Cómo mejorar la velocidad de transferencia de rsync?
- Usa
-zla opción para habilitar la compresión - Usa
--compress-level=Npara ajustar el nivel de compresión (1-9) - Desactivar el cálculo de sumas de verificación (solo en redes de confianza):
--no-checksum
Recomendaciones de mejores prácticas
- Prueba primero: usa
-nla opción para hacer una simulación primero - Registro de operaciones: añade
--log-file=rsync.logpara registrar las operaciones - Gestión de permisos: considera usar
--chmodpara unificar los permisos de archivos - Tareas programadas: combina con crontab para realizar copias de seguridad automáticas
- 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.
Otras extensiones