Linux / Comando rsync: sincronizar archivos y revisar cambios antes de copiar
rsync copia archivos entre ubicaciones locales o remotas y sincroniza de manera eficiente los elementos que han cambiado. Es útil para la transferencia repetida de grandes cantidades de datos, pero si se especifican incorrectamente la ruta de destino y las opciones de eliminación, se pueden perder datos.
La comprobación rápida predeterminada compara tamaño y hora de modificación, no todos los bytes del archivo. -a combina copia recursiva con preservación de varios metadatos. En estos ejemplos, con el destino ya existente como directorio, source/ copia su contenido y source añade el propio directorio bajo el destino. Una ruta remota por SSH usa usuario@host:ruta.
Sintaxis básica
rsync [opciones] origen destino
La implementación instalada y las opciones pueden variar según la distribución. Verifique la descripción de man rsync en el sistema actual.
Ejemplos de uso
Vista previa antes del cambio real
Compruebe que rsync está instalado, por ejemplo con command -v rsync. Los ejemplos requieren un directorio project/ con datos de prueba y un destino separado; prepare backup/project/ en el laboratorio, sin datos que deba conservar. El ejemplo posterior con source/ presupone un archivo source/notes.txt y un directorio backup/ ya existente.
rsync -av --dry-run project/ backup/project/
Sincronización de directorios locales
Copia el contenido del directorio de origen al destino.
rsync -av project/ backup/project/
Transferencia remota por SSH
rsync debe estar instalado también en la máquina remota, y se deben reemplazar la cuenta y la ruta por los valores reales.
rsync -av project/ alice@server.example.com:/home/alice/project/
Vista previa antes de la copia real
rsync --dry-run muestra la lista de archivos que se modificarán, pero no copia los datos realmente. La estructura de directorios creada en el destino varía según la presencia o ausencia de la barra al final.
rsync -av --dry-run source/ backup/
Ejemplo de salida cuando hay notes.txt dentro de source/ y no existe en el destino:
sending incremental file list
notes.txt
Con source/, el plan coloca el contenido dentro de backup/. --delete puede retirar elementos que solo están en el destino: revise sus reglas y la simulación antes de usarlo. Después de copiar, compruebe recuentos, tamaños y, cuando corresponda, sumas de comprobación y una restauración real. La comprobación de copias y restauración con tar explica otro flujo de recuperación, y la automatización de copias y controles del servidor ayuda a planificar verificaciones periódicas.
-a combina la copia recursiva y la conservación de algunos metadatos, pero no es una opción de copia de seguridad completa que conserve siempre todos los atributos como ACL, atributos extendidos o enlaces duros. Para los atributos necesarios, verifique el sistema de archivos y los permisos del destino antes de especificarlos con opciones separadas. Si el resultado de la sincronización es importante, también se debe realizar una prueba de restauración en el destino.
Opciones y formatos principales
| Opción o formato | Descripción |
|---|---|
-a |
Modo de archivo que combina la copia recursiva y la conservación de atributos principales. |
-v |
Muestra los elementos de procesamiento en detalle. |
-n, --dry-run |
Muestra el plan sin copiar ni eliminar archivos del destino. |
--delete |
Puede eliminar entradas que solo existen en el destino, según las reglas de filtro; revíselo antes. |
--exclude=patrón |
Excluye archivos con el patrón especificado de la transferencia. |
-e 'ssh -p puerto' |
Especifica comandos de shell remotos y puertos. |
Precauciones al usar
--delete elimina realmente los archivos de destino. Verifique las barras finales en las rutas de origen y destino y las reglas de filtro, y revise la lista de eliminación con --dry-run. rsync no es una copia de seguridad en sí misma y los errores o daños del original también pueden replicarse. La transferencia remota normalmente requiere rsync en ambos lados, y el modo de archivo no conserva completamente ACL ni atributos extendidos.
Preguntas frecuentes
¿Cuál es la diferencia entre source y source/ en rsync?
source/ transfiere el contenido de ese directorio, mientras que source copia el directorio en sí mismo bajo el destino.
Documentación oficial
El funcionamiento exacto de las opciones y las diferencias según la implementación se pueden consultar en la documentación oficial de rsync.




