¿Que harías si un día cualqiera tuvieras que realizar un backup de una gran cantidad de información por la red, y al día siguiente, modificaras una parte de esta?

¿Como harías el backup de nuevo?

¿ Transferirías de nuevo toda la información?

La respuesta es “NO”

Existe un protocolo llamado rsync, desarrollado por Wayne Davidson desde 1996 (su version mas reciente es 3.0.8), bajo licenciamiento GNU y multi-plataforma.

Este protocolo ofrece una transmisión de datos de forma incremental, incluyendo datos comprimidos y cifrados. Para sincronizar archivos y directorios este protocolo utiliza una tecnica de delta encoding. Este protocolo escucha por el puerto TCP 873, sirviendo archivos en el protocolo nativo rsync o via un terminal remoto como RSH o SSH. Para SSH el cliente rsync debe ser instalado en el host local y remoto. Para Windows la aplicación de rsync seria cygwin.

SSH con Rsync.

Ejemplo…

Tenemos dos maqunas, una con la ip 192.168.0.20, y de esta queremos copiar la carpeta /var/www, a nuestro host local en /home/binaryminds.

El comando a usar seria:

rsync -axSRzv root@192.168.0.20:/var/www /home/binaryminds

Si volvieramos a realizar la transferencia, solo se copiarían los archivos nuevos o modificados. Si lo que queremos es borrar los archivos en la maquina de origen a medida que transfieren, el comando seria:

 rsync -axSRzv –delete-during  root@192.168.0.20:/var/www /home/binaryminds

Si quieres borrar los archivos de la maquina origen, excepto un directorio, el comando seria:

rsync -axSRzv –delete-during –exclude=tmp/ root@192.168.0.20:/var/www /home/binaryminds

Fuente:

http://es.wikipedia.org/wiki/Rsync

http://www.dragonjar.org/tip-enviar-archivos-por-ssh-con-rsync.xhtml