respaldos con rsync

27
Backups con rsync Por Carlos Antonio Leal saballos

Upload: carlos-antonio-leal-saballos

Post on 11-Aug-2015

169 views

Category:

Engineering


4 download

TRANSCRIPT

Page 1: Respaldos con Rsync

Backups con rsync

Por Carlos Antonio Leal saballos

Page 2: Respaldos con Rsync

Agenda

● Introduction

● Características de rsync

● rsync funcinamiento

● Trabajando con rsync

● rsync - Backups Incrementales

● Incluyendo y excluyendo ficheros del backup

● rsync remoto

Page 3: Respaldos con Rsync

Introducción

● rsync es una herramienta que permite hacer respaldos

ya sean locales o remotos

● rsync es una herramienta para realizar respaldos de

archivos y directorios

● Tiene su contraparte en Windows llamado Cygwin, el

cual opera sin ningún problema de interoperabilidad

Page 4: Respaldos con Rsync

Introducción

● Dos componentes importantes:

– Un algoritmo de delta compresión para respaldar

únicamente los archivos que han cambiado

– Un sistema mirroring para transferir datos (archivos y

directorios) de un lugar a otros con el menor consumo de

ancho de banda posible

Page 5: Respaldos con Rsync

Características de rsync ● Soporte para copiar enlaces, archivos, archivos de dispositivo, con

sus propietarios, grupos y permisos

● Se puede usar cualquier shell remota transparente, como ssh o rsh

● No es necesario ser root para usarlo

● pipelining de archivos transferidos para minimizar la latencia

● Soporte para usuarios anónimos o autentificados usando el

demonio de rsync (para hacer mirroring)

● Opciones de exclusión (exclude y exclude-from) similares a las del

GNU tar

● Modo CVS para ignorar los archivos que CVS ignoraría

Page 6: Respaldos con Rsync

rsync funcinamiento

● A nivel de un árbol de directorios con sus archivos, la idea es

sencilla. Rsync copiará ficheros y directorios tal y como estaban

en el origen.

● Al realizar una sincronización no se copia todo, sino sólo lo que

ha cambiado en el origen respecto al destino.

● El comando scp hace lo mismo, pero desperdicia ancho de banda

sobre escribiendo archivos que no han cambiado

Page 7: Respaldos con Rsync

rsync funcionamiento

● A nivel de archivos individuales, imaginemos un archivo enorme

(varios GB) de una base de datos.

● Con cp se necesita copiar todo el archivo, desperdiciando tiempo

y recursos del sistema, porque la inmensa mayoría de bloques

del archivo no ha cambiado.

● rsync analiza el archivo de origen y el de destino y sólo

transmite (de forma comprimida, además) las partes que

realmente hayan cambiado.

● Muchas distribuciones de Linux utilizan rsync para sincronizar

sus repositorios

Page 8: Respaldos con Rsync

rsync funcionamiento

● Los detractores rsync mencinan que el algoritmo utiliza

demasiada memoria y consume mucho procesador.

● También mencionan que no gestiona adecuadamente

archivos comprimidos y que hasta es capaz de corromper la

información

● Como usuario neutral recomiendo su uso racional

● Todo se resume en seleccionar las opciones correctas

Page 9: Respaldos con Rsync

Trabajando con rsync

● En su forma más sencilla de uso, es similar a un cp

– rsync -v archivo1.txt archivo2.txt

Creará una copia de archivo1.txt llamada archivo2.txt

La opción -v es para recibir información detallada

Al ejecutar con root, no mantiene los permisos

● No funciona con directorios

– rsync -v Directorio1 Directorio2

Page 10: Respaldos con Rsync

Trabajando con rsync

● Para funciones de backup no hay como la opción -a

– rsync -av Directorio1 Directorio2

-a: Esta opción combina el parámetro -r (recursivo), el -l (enlaces

simbólicos), la -p (mantener permisos), la -t (mantener la hora), la -

g (mantenga el grupo), la -o (mantenga el propietario), la -D (mantener

los ficheros de dispositivo (sólo para root)).

NO se mantienen los hard links (-H) ni las ACLs (-A).

La opción -a realiza s una copia exacta de una jerarquía de ficheros y

directorios.

Page 11: Respaldos con Rsync

Trabajando con rsync

● Al crear un nuevo directorio, rsync sincronizará los

cambios

– mkdir Directorio1/Data

– rsync -av Directorio1 Directorio2

Simplemente se sincronizan el nuevo directorios

● Igual si se trata de un archivo

– echo “hola mundo” > Directorio1/Data/saludo.txt

– rsync -av Directorio1 Directorio2

Page 12: Respaldos con Rsync

Trabajando con rsync ● Al modificar un archivo

– echo “hola mundo otra vez” >> Directorio1/Data/saludo.txt

– rsync -av Directorio1 Directorio2

● rsync sincroniza todo el archivo, no es un error, pero se puede

mejorar con la opción --no-whole-file

– rsync -av --no-whole-file Directorio1 Directorio2

● La opción -z comprime el bloque antes de enviarlo

– rsync -avz --no-whole-file Directorio1 Directorio2

● Ambas opciones disminuyen el consumo de ancho de banda pero

incrementan el uso de procesador y memoria.

Page 13: Respaldos con Rsync

Trabajando con rsync ● rsync para decidir su un archivo ha cambiado normalmente sólo

mira la fecha del archivo y su tamaño, si ninguna de las dos cosas

cambia, rsync lo copiará.

● En algunos escenarios muy especiales (Bases de Datos por

ejemplo) puede ocurrir que dos archivos con la misma fecha y

tamaño sean diferentes, la opción -c permite calcular el checksum

para determinar si realmente los ficheros son iguales, esto implica

también mayor impacto en el procesador y la memoria

– rsync -acvz --no-whole-file Directorio1 Directorio2

Page 14: Respaldos con Rsync

Trabajando con rsync

● Poner o no poner las barras al final de los nombre del

directorio tienen implicaciones distintas

– /path/foo significa el directorio foo

– /path/foo/ significa lo que hay dentro de foo

● A continuación algunos ejemplos para entenderlo

mejor

Page 15: Respaldos con Rsync

Trabajando con rsyn

● Dos directorios sincronizados y exactamente

iguales

– rm -Rf Directorio2

– rsync -av Directorio1/ Directorio2/

● Se comprueba con ls -al Directorio2

– rm -Rf Directorio2

– rsync -av Directorio1/ Directorio2

● Se comprueba con ls -al Directorio2

Page 16: Respaldos con Rsync

Trabajando con rsyn

● Copiar Directorio1 dentro de Directorio2

– rm -Rf Directorio2

– rsync -av Directorio1 Directorio2

● Se comprueba con ls -al Directorio2

– rm -Rf Directorio2

– rsync -av Directorio1 Directorio2/

● Se comprueba con ls -al Directorio2

Page 17: Respaldos con Rsync

Trabajando con rsync

● Eliminando archivos que ya no necesitan estar en el

respaldo

– touch Directorio2/archivoviejo.txt

– rsync -av --delete Directorio1/ Directorio2/

● Se debe proceder con cuidado, si no especificamos

bien el directorio de destino puede ocurrir un gran

desastre

Page 18: Respaldos con Rsync

Trabajando con rsync

● Otra opción interesante puede ser –u para que no sobre-escriba

los archivos si son más recientes

– touch Directorio1/archivonuevo.txt

– rsync -av --delete Directorio1/ Directorio2/

● Actualizar la fecha del archivo en el respaldo

– touch Directorio2/archivonuevo.txt

– rsync -av --delete -u Directorio1/ Directorio2/

● Se debe proceder con cuidado, si no especificamos bien el

directorio de destino puede ocurrir un gran desastre

Page 19: Respaldos con Rsync

rsync - Backups Incrementales

● Supongamos que tenemos dos

directorios Directorio1 y Directorio2 perfectamente sincronizados y

actualizamos un archivo en el directorio origen:

– rsync -av Directorio1/ Directorio2/

– echo prueba >> Directorio1/archivo1

● Si volvemos a sincronizar rsync borrará la versión anterior del archivo1

para dejar la nueva versión, si no queremos eliminar la versión previa se

puede utilizar la opción –b

Page 20: Respaldos con Rsync

rsync - Backups Incrementales

rsync -avvb --delete --backup-dir=$PWD/rsync/backup_$(date +%y%m%d%H%M) Directorio1/ Directorio2/

– Esto creará un directorio “rsync/backup con al fecha” en la ruta que estemos utilizando,

– Es importan que estos backups incrementales no estén dentro de ninguno de los directorios que se estén

sincronizando para evitar duplicidad y/o eliminación por el mismo efecto del respaldo.

Page 21: Respaldos con Rsync

rsync - Backups Incrementales

● También podemos hacer backups incrementales con las opciones:

– --compare-dest=DIR: Es como un backup incremental sólo se tiene en el directorio

destino los ficheros que han cambiado desde el último backup

– --compare-dest, está la --copy-dest=DIR, que hace lo mismo que la anterior pero

además copia los ficheros que no hayan cambiado. ¡Pero ojo!, la ventaja de esta

opción es que la copia de los ficheros que no han cambiado es local, de forma que en

un rsync remoto, todos los ficheros que ya estaban en DIR no se tienen que

transferir. La desventaja es que necesita mucho espacio en disco.

Page 22: Respaldos con Rsync

Incluyendo y excluyendo

ficheros del backup ● La mayoría de las veces no se trata de un backup de un único directorio

● Todo administrador de servidores tiene una lista determinada de directorios que quiere respaldar. También tiene una lista de directorios que no quiere respaldar

● En esos casos, se ejecuta el comando varias veces o se usa una lista de directorios a respaldar

● Es decir, tener un script de backup que lance rsync con las opciones deseadas Las opciones son:

– --exclude=PATTERN

– --exclude-from=FILE

– --include=PATTERN

– --include-from=FILE

– --files-from=FILE

Page 23: Respaldos con Rsync

Incluyendo y excluyendo

ficheros del backup ● Imaginemos que queremos hacer un backup de los directorios

“/var/log/” y “/var/www/“.

● Podríamos usar un comando como:

rsync -av --delete --include-from=lista_dirs_backup.txt / /media/disco/Backup/

en el que el fichero lista_dirs_backup.txt contiene:

+ /var/

+ /var/www/***

+ /var/log/***

- *

Page 24: Respaldos con Rsync

Incluyendo y excluyendo

ficheros del backup – En la última línea le especificamos con “- *” que todo lo que en ese

punto ya no ha pasado el filtro, que sea descartado.

– Tres asteriscos (***) para especificar que el propio directorio

especificado también pasa el filtro,

Page 25: Respaldos con Rsync

rsync remoto

● En la máquina destino es posible usar el propio proceso rsync funcionando como

demonio y escuchando por defecto en el puerto 873 para recibir estas

conexiones, pero es mucho más cómodo y fácil hacerlo por SSH, algo para lo

que rsync ya está preparado por defecto.

– rsync -av --delete dirA usuario@hostremoto:/backup/

– rsync -e "ssh -p 987" --delete dirA usuario@hostremoto:/backup/

Page 27: Respaldos con Rsync

Por su Atensión

Muchas Gracias