rsync
Uso de rsync
rsync es la herramienta de copiado y sincronización de archivos más potente que existe en el mundo de Linux, es rápida, versatil para el copiado local y remoto de archivos. Ofrece una larga lista de opciones que controlan todos los posibles aspectos de su comportamiento.
El 'secreto' de rsync
es su algoritmo llamado 'delta-transfer' que reduce la cantidad de datos que se envían vía red al enviar solo las diferencias que hay entre dos archivos a nivel de sus metadatos (permisos, fechas de acceso, etc) y del contenido de sus datos a nivel de bloques en disco.
Sintaxis
El modo de uso de rsync es idéntica a los comandos cp o scp, es decir, rsync [opciones] origen [destino]
El 'destino' en rsync se dice que es opcional porque si solo se usa el origen, entonces equivale a listar el directorio o archivo origen.
Tanto el 'origen' como el 'destino' pueden ser locales o remotos
Opciones
Opción | Descripción | |
---|---|---|
Corta | Larga | |
-a | --archive | Modo archive, es igual a indicar las opciones r,l,p,t,g,o y D |
-r | --recursive | Recursivo, copia recursivamente los directorios. |
-l | --links | Cuando encuentra symlinks (enlaces simbólicos), estos son recreados en el destino. |
-p | --perms | Opción que causa en el destino establecer los permisos igual que en el origen. |
-t | --times | Transfiere los tiempos de los archivos (atime, ctime, mtime) al destino |
-g | --group | Establece en el destino que el grupo del archivo copiado sea igual que el origen. |
-o | --owner | Establece en el destino que el propietario del archivo copiado sea igual que el origen. |
-D | Esto es igual que indicar las opciones --devices y --specials | |
--exclude PATTERN | Excluye archivos que igualan el patrón o pattern indicado. | |
--include PATTERN | Incluye archivos que igualan el patrón o pattern indicado. | |
--devices | Transfiere archivos de dispositivos de bloque y caracter al destino donde son recreados. Esto solo puede suceder si en el destino se tienen permisos de root. | |
--specials | Transfiere archivos especiales como fifos y named sockets. | |
--version | Indica el número de versión de rsync |
|
-v | --verbose | Incrementa la cantidad de información que se informa durante la transferencia o copia de archivos. Es la opción contraria a --quiet |
-q | --quiet | Decremente la cantidad de información que se informa durante la transferecnia o copia de archivos. Generalmente se utiliza cuando rsync se utiliza en una tarea cron. Es la opción contraria a --verbose |
-I | --ignore-times | Una de las grandes virtudes de rsync es que al momento de copiar o transferir archivos, si estos son iguales en el destino en términos de tiempos y tamaño ya no lo copia, no hay cambios. Esta opción permite que esto sea ignorado y todos los archivos serán copiados/actualizados en el destino. (ver --size-only también) |
--size-only | Normalmente solo se transfieren archivos con los tiempos cambiados o el tamaño cambiado. Con esta opción se ignoran los tiempos de los archivos y se transfiere cualquiera con un tamaño distinto en el destino. | |
-n | --dry-run | Crea una prueba de test de lo que realmente ocurrirá sin esta opción, sin realizar ningún cambio. Es decir, la salida mostrada será muy similar a lo que realmente pasará si no se incluye --dry-run. Generalmente se usa junto con la opción --verbose y la opción --itemize-changes |
-i | --itemize-changes | Reporta una lista de los cambios realizados en cada archivo, incluidos cambios en sus atributos. Esto es equivalente a utilizar -vv en versiones obsolteas de rsync . |
--remove-source-files | Remueve los archivos en el origen (no directorios) si en el destino estos fueron exitosamente duplicados o copiados. | |
--timeout=TIEMPO | Especifica un timeout en segundos, si no datos son transferidos en tiempo indicado rsync terminará. El default es 0 segundos que quiere decir sin timeout. |
|
--log-file=ARCHIVO | Bitacoriza lo que se ha realizado en el ARCHIVO indicado. | |
--stats | Imprime un conjunto informativo de datos estadísticos sobre la transferencia realizada. | |
--progress | Muestra el avance o progreso de los archivos que están siendo transferidos. | |
--bwlimit=KBPS | Permite establecer un límite de transferencia en kilobytes por segundo. Esta opción su default es 0, lo que indica no límite en el uso del ancho de banda en la transferencia. | |
--max-size=TAMAÑO | No transfiere cualquier archivo más grande que el TAMAÑO indicado. | |
--min-size=TAMAÑO | No transfiere cualquier archivo más pequeño que el TAMAÑO indicado. | |
-z | --compress | Comprimir datos durante la transferencia. |
Ejemplos
Sincronizar entre dos carpetas
rsync -avP /carpeta1/* /carpeta2/.
Sincronizar entre hosts
rsync -avP root@w.x.y.z:/carpeta1/* /carpeta2/.
Transferir archivos de determinado tamaño
rsync -avzhP --max-size='100M' /carpeta1 root@w.x.y.z:/carpeta2/
En esta caso sólo se copiarán los archivos menores de 100 Mb
Sincronizar archivos completamente entre dos carpetas o servidores
Esto permite actualizar archivos en destino, y si no existen en origen, los borra
rsync -avhP origen/ destino/ --delete-after