Sincronizando directorios con rsync

Para aquellos que nos llevamos el trabajo a casa, por a o b motivo, siempre es necesario estar copiando archivos a un medio de transporte, como son las memory stick, con lo que a veces generamos muchas copias de lo mismo o mezclamos contenido, y peor aún cuando lo tratamos de replicar de vuelta en el trabajo.

Este problema me atañe usualmente y estoy aburrido de pensar como hacer para no estar replicando archivos y llevar a cabo una sincronización de “x” o “y” carpeta de mi computador personal en el trabajo a mi memory stick y de esta a mi laptop en casa y luego todo el proceso a la inversa.

Como es de imaginar lo primero que hice fue buscar en google (o san google, como dice un compañero) y me encontre que en GNU/Linux tenemos una maravillosa herramienta llamada rsync. Con rsync podemos sincronizar carpetas y archivos en dos medios distintos, ya sean estos remotos o locales, y lo maravilloso de el es que si lo pasamos de nuevo solo sincronizara aquellos arvchivos que hallan cambiado desde la ultima vez de sincronización.

Bueno, manos a la obra. Mi distribución de GNU/Linux es Ubuntu, por lo cual instalar es un juego de niños:

linuxgros777@DGA064-D0HVY:~$ sudo aptitude install rsync

Ojo, en la mayoría de los casos ya tendremos instalado rsync.

Una vez instalado es facil utilizarlo, la syntaxis es:
rsync [OPTION]... SRC [SRC]... DEST

donde SRC es la fuente y DEST el destino.

si deseamos sincronizar el directorio A con el directorio B utilizariamos

linuxgros777@DGA064-D0HVY:~$ rsync -vr /dir/to/A/ /dir/to/B/
sending incremental file list
./
prueba.txt
classes/
etc/
lib/
src/
web/

La orden anterior copiaría todo el contenido del directorio A al B la primera vez que se utiliza, si hemos modificamos algo en el directorio A y queremos replicar los cambios en el directorio B la orden anterior lo haría. Las opción “v” es para verbosidad y la opción “r” para recursividad.

Si modificamos algo en el Directorio B y queremos sincronizar con el directorio A entoces invertimos la fuente y el destino:

linuxgros777@DGA064-D0HVY:~$ rsync -vr /dir/to/B/ /dir/to/A/
sending incremental file list
./
prueba.txt
classes/
etc/
lib/
src/
web/

Hay algo curioso en la utilización de rsync que es el “/” al final del directorio fuente, veamos lo siguiente.

linuxgros777@DGA064-D0HVY:~$ rsync -vr /dir/to/A /dir/to/B/
sending incremental file list
/dir/to/A/
/dir/to/A/prueba.txt
/dir/to/A/classes/
/dir/to/A/etc/
/dir/to/A/lib/
/dir/to/A/src/
/dir/to/A/web/

La orden anterior copiaría el directorio A dentro del directorio B y no el contenido de uno dentro del otro, este comportamiento me causo un par de problemitas de duplicación de arhivos, pero una vez comprendido ya no hay problema alguno.

rsync no solo opera sobre directorios locales, es también muy utilizado en la sincronización de directorios remotos con locales y viceversa. he aquí unos ejemplos:

linuxgros777@DGA064-D0HVY:~$ rsync -vr -e ssh /www/backup.tar.gz linuxgros777@servidor.destino.in:~

en este comando podemos ver que aparece una nueva opción “-e”, esta le dice a rsync como se autenticara en el/los servidores, en este caso utilizamos ssh. Además es de notar que “~” se refiere al directorio home del usuario linuxgros777 en el servidor destino.

Para más información siempre pueden consultar las páginas de manual, que siempre son muy buenas en sistemas GNU/Linux

~ por victor en mayo 5, 2010.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: