Simplemente RSYNC

Publicada en Publicada en bash, Scripts

A medida que va  pasando el tiempo las unidades de almacenamiento han ido aumentando. Cuando estaba en el colegio compraba del Kiosco Diskettes 3 1/2 que tenía 1,44 MB. Por supuesto que ya para esa época era poco, dado que ya existía el CD. Pero a diferencia de este en el Diskette podía borrar, modificar archivos cuantas veces quería. Cuando algo era muy pesado hacha era la solución, cortábamos un archivo para hacerlos entrar en los Diskettes.

En fin, todo esto es para presentar rsync. La herramienta que marco un antes y un después y me permitió realizar backups y copias de gran almacenamiento asegurándome que todo va a salir bien.

Estos son los parámetros más utilizados:

  • -a, Archive, permite copiar archivos de forma recursiva y también conserva los enlaces simbólicos, los permisos de archivos y los tiempos.
  • -e, –rsh = COMANDO para utilizar en la consola.
  • -h, –human-readable.
  • -r, Recursive, copia los datos de forma recursiva, pero no copia las marcas de tiempo y permisos durante la transferencia.
  • -v, Verbose, salida output.
  • -z, Compress, comprime los datos, ya que se envía a la máquina de destino, lo que reduce la cantidad de datos que se transmiten algo que es útil en una conexión lenta.
  • –bwlimit, se puede establecer el límite de ancho de banda durante la transferencia de datos.
  • –dry-run, realiza un simulacro del comando y muestra la salida del comando.
  • –exclude, permite excluir directorios y archivos. Se pueden utilizar expresiones regulares para este parámetro.
  • –progress, muestra el progreso de la transferencia. Algo aburrido de ver.

En el siguiente ejemplo quiero mostrar como hacer un backup a través de SSH, en un puerto distinto, con compresión y con carpetas con espacios:

rsync -az -e "ssh -p 2222" "/source/folder with spaces" "user@domain:/destination/folder with spaces"

NOTA: Para que esto funcione, deberá estar instalado rsync tanto en la máquina local como en la maquina remota.

A continuación utilizamos –bwlimit para limitar el ancho de banda y –progress para ver en detalle las sincronización:

rsync -azh --bwlimit=100 --progress /source/folder /destination/folder
sending incremental file list 
./
file.ext
1.34M 1% 99.07kB/s    0:12:03

Fuente: http://linux.die.net/man/1/rsync