Sincronizando carpetas y copiando archivos con rsync

Hasta la aparición de robocopy la herramienta rsync fue una de las más envidiadas por los administradores de sistemas Windows cada vez que se comparaban con Linux. La principal función de rsync es copiar archivos entre dos ubicaciones, y puede ser tanto entre dos ubicaciones locales como entre una local y una remota (o viceversa). Dos de los puntos fuertes de rsync es que nos permite utilizar SSH para las conexiones remotas, reforzando así la seguridad,y está pensado para ahorrar ancho de banda y tiempo cuando se realicen actualizaciones dedicándose simplemente a copiar los datos que han cambiado.

Para una operación de copia entre dos carpetas locales la sintaxis sería:

#usaremos los parámetros:
#r para que haga copia recursiva
#t para que guarde la fecha
#v para que muestre el progreso
rsync -rtv carpeta_origen/ carpeta_destino/

Ojo con la barra del final, que para rsync carpeta_destino y carpeta_destino/ no son lo mismo. Por ejemplo

rsync -rtv carpeta_origen/ carpeta_destino/
#esta copiará tal cual los contenidos de origen en destino
rsync -rtv carpeta_origen carpeta_destino/
#esta creará una carpeta nueva, llamada carpeta_origen,
#dentro de la carpeta_destino.

Como ya comentaba arriba, podemos hacer que rsync sólo copie los archivos que han sido modificados, con la idea de ganar tiempo (y no consumir ancho de banda en caso de copia remota). Tenemos dos formas de hacerlo:

#comparando fechas de edición
#añadimos el parámetro u
rsync -rtvu carpeta_origen/ carpeta_destino/

#haciendo un checksum de ambos archivos
#para ver si son distintos
#en eso caso quitamos t y añadimos c
rsync -rvuc carpeta_origen/ carpeta_destino/

Esto está bien pero ¿qué pasa si hemos quitado archivos en un lado y queremos que se quiten en el otro? ¿si queremos sincronización total? Pues tenemos el parámetro –delete, con varias variantes:

#Borrando antes de copiar los archivos
rsync -rtvu --delete-before carpeta_origen/ carpeta_destino/

#Borrando después de copiar los archivos
rsync -rtvu --delete-after carpeta_origen/ carpeta_destino/

#Borrando durante la copia
rsync -rtvu --delete-during carpeta_origen/ carpeta_destino/

#Encuentra durante la copia los archivos faltantes,
#pero los borra al terminar
rsync -rtvu --delete-delay carpeta_origen/ carpeta_destino/

Según el tipo de copia que se este haciendo y las necesidades del momento puede ser más interesante usar una u otra.

Existen más parámetros que pasar. Por ejemplo –exclude nos permite definir un patrón de exclusión para la copia, o –exclude-from, que nos permite hacerlo pero cargando los datos desde un archivo. Con –max-size se excluyen todos los archivos que superen un tamaño, y con –min-size todos los que no alcancen uno concreto. El parámetro -z nos permite definir que los archivos sean comprimidos antes de su envío, dependiendo de la red y la potencia de los equipos puede ser recomendable o no. Es interesante también el parámetro -a, que copia toda la información de los archivos: enlaces simbólicos, propietarios, grupos, permisos…

Hasta aquí hemos hablado de las posibilidades de rsync en copias locales. Pero ¿cómo conectamos con un equipo remoto? La sintaxis sería rsync -parámetros carpeta_origen/ usuario@dominio:/ruta/destino/

#pc local a remoto
rsync -rcvu /tmp/ admin@tlm.usc.es:/home/Departamentos/

#pc remoto a local
rsync -rcvu admin@tlm.usc.es:/home/Departamentos/ /home/donnierock/

Si sois de esos más vagos que el peluquero de Billy Corgan tenéis la opción de instalar grsync para poder disponer de un entorno gráfico desde el que trabajar.

grsync

Si tenéis interés puede que hable más sobre rsync y también comente algo de robocopy.

Anuncios

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