Respaldos locales con rsync

Posted by Gomix Tue, 05 Aug 2008 11:03:00 GMT

Tal vez este truco podría haberse titulado “sistema de respaldos para el pobre” pero ciertamente nos enseña lo básico en cuanto a tomar respaldos usando rsync.

La idea es simple, respaldar un directorio importante, por ejemplo /home, en otro directorio local, por ejemplo en /home.bu, usando rsync para protegernos de malos manejos por parte de los usuarios en /home. Un caso típico, llama un usuario que borró “todos” sus emais por “error”. Por supuesto el directorio destino puede estar montado de otro servidor remoto vía NFS o cualquier otro sistema de archivos de red, pero eso no cambia nada en el mecanismo que utilizaremos para la toma del respaldo.

¿Por qué rsync y no cp u otro programa? La respuesta es fulminante, velocidad y flexibilidad. Si se tiene un gran directorio con una gran cantidad de datos, copiar todo su contenido una y otra vez es sumamente pesado.

Con rsync podemos tomar respaldos muy frecuentemente y actualizar un respaldo de decenas o centenas de gigabytes en total y aún así tomará sólo unos minutos. ¿Y cómo es posible eso? rsync utiliza un algoritmo interno para determinar las diferencias entre la fuente y el destino de la copia y solo moverá dichas diferencias, de ahi que los archivos que no han cambiado no deben ser copiados estúpidamente, es decir, rsync es inteligente. rsync determina cuáles nuevos archivos han aparecido del lado fuente y procede a copiarlos.

Por ejemplo, un almacen de emails, cientos o miles de emails no se modifican, mientras unos cuantos se reciben al día, se agregan. rsync en este caso sólo agregrá también dichos mensajes al respaldo. Además, es capaz de borrar los mensajes del respaldo que el usuario ha decidido borrar para mantener una copia fiel del origen de los datos. Si decide borrar los elementos del destino del respaldo, procure que su frecuencia de respaldo no sea tan breve ya que lo que tendrá como resultado es un espejo y no un respaldo del cual recuperar información antigua :P Esto le lleva inmediatamente a la aplicación de espejado con rsync (servidor imap local con sincronía rsync sin necesidad de mta). Son dos aplicaciones de rsync típicas, respaldo de almacen de datos altamente cambiantes, y espejado de almacen de datos pseudo estáticos.

Su uso local es terriblemente fácil y dejaremos para otros usos que el lector se documente, se supone que este artículo es un truco y no un manual, tal vez más adelante escribiré otro truco usando rsync con ssh para hacer el respaldo a un servidor remoto de esa manera ;)

Sintaxis general

# rsync [opciones] origen destino

Un ejemplo de primera corrida, toma del primer respaldo o espejado inicial.

# rsync -av /home/ /home.bu
....

....
w.carmona/Maildir/new/
w.carmona/Maildir/tmp/

sent 455769213 bytes  received 100154 bytes  3315413.58 bytes/sec
total size is 736150272  speedup is 1.61

Las opciones usadas:

  • -a, –archive modo archive; igual a -rlptgoD (no -H,-A,-X)
  • -v, –verbose mucha información de la actividad

Un ejemplo de segunda corrida después de poco tiempo transcurrido desde el primer respaldo, note que no se transfiere “nada”.

$ rsync -av Documentos/ Documentos.bu
sending incremental file list

sent 203946 bytes  received 1741 bytes  411374.00 bytes/sec
total size is 236009085  speedup is 1147.42

Ahora en el ejemplo siguiente hemos borrado de la fuente un documento que ya no nos interesa. Note como rsync con –delete borra del respaldo el archivo borrado de la fuente, y no se hace ninguna transferencia adicional.

$ rsync -avz --delete Documentos/ Documentos.bu
sending incremental file list
deleting ebooks/Samba/Samba-3 by Example - Practical Exercises to Successful Deployment - 2nd Ed [Prentice-Hall 2006].pdf

sent 203845 bytes  received 1741 bytes  137057.33 bytes/sec
total size is 231635069  speedup is 1126.71

Suficiente por ahora, espero le sea de utilidad :)

Comments

Leave a response

Comments


body> body>