Esta web utiliza cookies, puedes ver nuestra política de cookies, aquí Si continuas navegando estás aceptándola

Sincronización de directorios mediante RSync


Rsync es una herramienta indispensable para cualquier sysadmin que se precie, nos permite sincronizar directorios remotos de forma muy sencilla y además solo sincronizará los cambios lo que implica que posteriores sincronizaciones serán mas rápidas ;)

 

COPIA DE DIRECTORIOS:

rsync -av "RUTA_ORIGEN RUTA_DESTINO"


Es equivalente a: -rlptgoDv

-r: Recorre de forma recurisva la estructura de directorios que le indiquemos
-l: Copia enlaces simbólicos como enlaces simbólicos
-p: Mantiene permisos
-t: Mantiene hora del fichero
-g: Mantiene el grupo
-o: Mantiene el propietario
-D: Mantiene los ficheros de dispositivo (solo para root)
-v modo verbose



EVITAR COPIA COMPLETA:
Rsync por defecto copia el fichero completo en cuanto se detecta que se cambió algo, si se quiere evitar esto y solo copiar la diferencia(mas CPU).

rsync -av --no-whole-file "RUTA_ORIGEN RUTA_DESTINO"

COMPRIMIR TRÁFICO(mas CPU):

rsync -avz --no-whole-file "RUTA_ORIGEN RUTA_DESTINO"

COMPROBAR CRC:

RSync por defecto solo mira la fecha y el tamaño, si no cambia nada de esto se considera que el fichero no cambió, se puede forzar para que la comprobación se haga por CRC.

rsync -avZc --no-whole-file "RUTA_ORIGEN RUTA_DESTINO"

ELIMINAR FICHEROS ELIMINADOS EN ORIGEN(Peligroso!!):

rsync -av --delete "RUTA_ORIGEN RUTA_DESTINO"

MANTENER FICHEROS DEL DESTINO SI SON MAS RECIENTES QUE EL ORIGEN:

rsync -avu "RUTA_ORIGEN RUTA_DESTINO"

-u, para que no se sobreescriban los ficheros del destino que son más recientes que los del origen


BACKUP INCREMENTAL(Guarda copia de los ficheros que fueron modificados):

rsync -avvb --delete --backup-dir=/rsync/backup_$(date +%y%m%d%H%M) "RUTA_ORIGEN RUTA_DESTINO"

SINCRONIZACIÓN REMOTA(SSH):

rsync -avz --rsh='ssh -p22' "[email protected]:RUTA_ORIGEN RUTA_DESTINO"
rsync -avz --delete --rsh='ssh -p22' "[email protected]:RUTA_ORIGEN RUTA_DESTINO"

EXCLUSIONES:

Se puede excluir mediante un fichero indicando los directorios a excluir o indicándolos en el comando de sincronización.

rsync -avz --delete --exclude-from /root/.scripts/excludes_rsync --rsh='ssh -p22' "[email protected]:RUTA_ORIGEN RUTA_DESTINO"

 

cat /root/.scripts/excludes_rsync
.ssh
public_html/web/images/users/
public_html/app/logs
public_html/app/cache

 

rsync -avz --delete --exclude .ssh --exclude public_html/web/images/users/ --exclude public_html/app/logs --exclude public_html/app/cache  --rsh='ssh -p22' "[email protected]:RUTA_ORIGEN RUTA_DESTINO"

NOTA: Las exclusiones siempre son relativas al dir de origen!!!!!


CONSIDERACIONES:

La barra / puede hacer que RSync se comporte de forma distinta:

rsync -av "RUTA_ORIGEN RUTA_DESTINO" --> Copia el directorio 1 en 2
rsync -av "RUTA_ORIGEN/ RUTA_DESTINO" --> Copia los ficheros del directorio 1 en 2

CRON:

Un uso típico es meter un RSync en el CRON para sincronizar el contenido de cierto directorio de forma periódica.

*/5   *   *   *   *   /usr/bin/rsync -avz --delete --rsh='ssh -p22' "[email protected]:RUTA_ORIGEN RUTA_DESTINO" >/dev/null 2>&1

Autor: Kr0m -- 12/01/2014 21:01:07