Respaldos locales con rsync
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 :)

