sábado, 7 de diciembre de 2013

¿CÓMO HACER BACKUPS CON RSYNC?

Luna llena desde el parque (Full moon from the park)
Aprendí que el coraje no es la ausencia de miedo, sino el triunfo sobre él. El valiente no es quien no siente miedo, sino quien conquista ese miedo.

Nelson Mandela

  
1. ¿QUÉ ES EL COMANDO RSYNC?
RSYNC es una herramienta para copiar datos tanto localmente como a través de la red (desde un equipo remoto o a un equipo remoto). Es ampliamente utilizada debido al uso del algoritmo de transferencia delta que reduce la cantidad de datos a enviar por red. A través de dicho algoritmo sólo se envían las diferencias entre la fuente de origen y de destino.
RSYNC es especialmente utilizado como herramienta de backup or mirroring.

2. SINTAXIS

Estructura del comando:
$ rsync [opciones] origen destino

Los comandos más útiles y utilizados son:
-v
--verbose
Muestra información a través del terminal.
-e
--rsh=command
Especifica la consola Shell a utilizar.
-a
--archive
Modo archivado: recursivo, copia enlaces, mantiene los permisos, la fecha de modificación, la información de grupos, propietarios y los archivos de dispositivos.
-r
--recursive
Recusividad para todos los directorios.

--delete
Elimina archivos ajenos a la fuente de origen.
-z
--compress
Comprime archivos durante la transferencia.

--progress
Muestra una barra de progreso

Configuraciones para establecer restricciones:
--exclude='pattern'
Excluye los archivos y directorios que obedecen el patrón.
--include='pattern'
Excluye los archivos y directorios que siguen el patrón.
--max-size=size
Excluye todos los archivos que superen el límite superior.
--min-size=size
Excluye todos los archivos y ficheros que no lleguen al límite inferior.
--bwlimit=kpbs
Límite del ancho de banda en kilo bytes por segundo.

3. EJEMPLOS

Los siguientes ejemplos se basan en la siguiente estructura de red:



  • COPIAS LOCALES DENTRO DE UN EQUIPO
Copia o sincroniza el contenido de la carpeta fotos, comprimiendo todos los datos transferidos, manteniendo la información para cada archivo copiado pero eliminando todos los archivos en la carpeta de destino que no existenen la carpeta de origen.
$ rsync -vaz --delete /media/hd1/Fotos /media/hd2/Backup_Fotos

Copia un archivo sin compresión pero preservando toda su información.
$rsync -va /media/hd1/file /media/hd2/

  • DESDE UN EQUIPO LOCAL A UN EQUIPO REMOTO
Copia archivos mientras muestra el progreso para cada copia.
$ rsync -vaz -- progress /tmp/ user@192.168.1.160:/srv/Departments

Copia los archivos inferiores en tamaño a 10Mb y superiores a 1MB.
$ rsync -vaz --max-size='10240k' --min-size='1024k' ~/Documents user@192.168.1.160:/srv/ProjectX

  • DE UN EQUIPO REMOTO A UN EQUIPO LOCAL
Excluye todos los archivos y directorios excepto los de tipo .zip.
$ rsync -vaz --exclude='*' --include='*.zip' user@192.168.1.160:~user/Documents /media/hd2/mybackup

Todos los datos se copian y transfieren encriptados sobre ssh.
$ rsync -vaze ssh user@192.168.1.160:~user/Documents /media/hd2/mybackup

  • DE UN SERVIDOR REMOTO A UN SERVIDOR REMOTO
Sincronización sobre ssh de carpetas controlando que el ancho de banda es superior al 1Mb.
$ rsync –bwlimit=1024 -vaze ssh user@192.168.1.150:/srv user@192.168.1.160:/srv

4. ¿CÓMO PROGRAMAR BACKUPS CON RSYNC?

Si planeas realizar backups de forma regular, puedes utilizar cron para prograrmar una tarea rsync. En tal caso, sigue los siguientes pasos:
1. Edita cron utilizando el siguiente comando: crontab -e
2. Añade una nueva linea al final del archivo acorde a la siguiente tarea:
Minutos Horas Día_del_mes Mes Día_de_la_semana Usuario Comando
Todo dato no especificado, se completará con el carácter * que sumplanta a todos los datos posibles. Por ejemplo, si utilizas * en la casilla de las horas o días de las semanas, se ejecutará respectivamente cada hora y cada día de la semana.

Por ejemplo:
2.1 Tarea programada de lunes a viernes a media noche:
00 00 * * 1-5 rsync -vaz --delete /media/hd1/Fotos /media/hd2/Backup_Fotos

2.2 Tarea programada cada sábado 22:00
00 22 * * sat rsync –bwlimit=1024 -vaze ssh user@192.168.1.150:/srv user@192.168.1.160:/srv

No hay comentarios:

Publicar un comentario en la entrada