Copias de seguridad en sistemas Linux con Dar

Una decisión a la que nos enfrentamos a la hora de tener los datos respaldados es a la de qué herramienta utilizar para dicha tarea. Hasta ahora siempre he utilizado tar en mis máquinas para hacer las copias de seguridad, pero cuando el volumen de datos no son 500 MB, sino 12 GB, la cosa casca. El principal problema es que parece que tar no fue pensado para esto. El segundo es que tar es secuancial (¿Me permitís compararlo con una cinta de backup?) por lo que para descomprimir un fichero recorrerá todo el fichero hasta que lo encuentre. Este proceso son 2 horas y algo como mínimo, algo impensable a la hora de recuperar algo.

  • Dar utiliza un catálogo que incluye información como el CRC, compresión, etc de cada fichero.
  • Permite aplicar máscaras a los diferentes ficheros de la copia de seguridad permitiendo que los mp3, avi y zip, por ejemplo, no se compriman, ahorrándonos tiempo a la hora de hacer backups.
  • Hacer backups diferenciales e incrementales es muy sencillo.
  • Permite cifrar las backups con Blowfish.
  • Permite segmentar la copia de seguridad en varios trozos con el fin de grabarlos en DVD a posteriori.
  • El acceso no es secuancial, es directo, por lo que es muy rápido y cómodo extraer un fichero de la copia de seguridad.
  • Soporta ACL y atributos extendidos. Tar no lo soporta y hay que recurrir a utilidades como star.

Por lo tanto, como me ha gustado tanto esta herramienta me dedicaré a explicar un poco como hacer unas copias de seguridad y como restaurar ficheros desde la misma, así como cifrar backups.

# dar -c /mnt/Backup/Backup_Completa -R /datos -s 4400M -D -P Temporal -y9 -Z “*.gz” -Z “*.zip”

La línea anterior llamará a dar para hacer una copia de seguridad del directorio /datos y guardando el fichero de backup como /mnt/Backup/Backup_Completa en trozos de 4400 MB. La backup estará comprimida con bzip2 con un índice de compresión de 9 (-y9), excluyendo de la compresión los ficheros zip y gz (Los ficheros serán incluidos pero no comprimidos). De esta backup se excluirá completamente el directorio /datos/Temporal, pero gracias a la opción -D se creará el directorio en la copia de seguridad, aunque este esté vacio.

La copia de seguridad tardará un buen tiempo, y una vez haya finalizado podemos comprobar que se ha creado correctamente utilizando el flag -t que se ocupa de comprobar el CRC de los ficheros.

# dar -t /mnt/Backup/Backup_Completa

Ahora que tenemos la copia de seguridad completa podemos continuar haciendo copias de seguridad diferenciales o incrementales. Yo, por mi parte, prefiero las diferenciales, que aunque ocupen más espacio, son más fáciles de restaurar pues tan solo necesitamos una copia de seguridad completa y la última diferencial. Dar nos facilita la tarea a la hora de hacer backups diferenciales con el flag -A que sirve para comparar los archivos originales con una copia de seguridad ya hecha con el fin de salvar solamente los ficheros modificados desde esa copia de seguridad.

# dar -c /mnt/Backup/Backup_Lunes -R /datos -s 4400M -D -P Temporal -y9 -Z “*.gz” -Z “*.zip” -A /mnt/Backup/Backup_Completa

Con esta línea hacemos lo mismo que lo que he explicado con la línea anterior, pero almacenando la copia diferencial con otro nombre y utilizando como copia de seguridad de referencia el fichero /mnt/Backup/Backup_Completa.

Hasta ahora si una copia de seguridad cae en malas manos la información sensible de la misma puede ser extraída por cualquiera, con lo que esto implica, por lo que cifraremos las copias de seguridad con Blowfish para curarnos en salud además de poder cumplir con la LOPD (Si no me equivoco, exige cifrar las backup). Aquí se nos presenta un problema, y es que si le pasamos a dar como parámetro el flag -K bf:Password cualquier usuario en la mayoría de las distribuciones podrá ver en plano la contraseña con tan solo ejecutar ps. Para no caer en este error sin renunciar al cifrado de las copias de seguridad automatizadas utilizaremos el fichero /root/.darrc que solo podrá ser leído por el usuario root y contendrá dos líneas:

-K bf:Password
-J bf:Password

La opción -K se ocupará de utilizar cifrado con Blowfish como algoritmo, y Password como contraseña cuando cree backups y descomprimamos backups. Por otro lado, la opción -J se ocupa de lo mismo, pero a la hora de comparar la backup. De hecho, recibiremos un aviso siempre que hagamos una copia de seguridad completa diciendonos que la opción -J solamente es útil si se utiliza con la opción -A, algo que en una copia de seguridad completa no se utiliza. Si deseamos en algún momento que estas opciones no se utilicen de forma implícita podemos utilizar la opción -N en la línea de comandos.

Hasta ahora hemos visto como crear copias de seguridad completas y diferenciales con determinadas opciones muy interesantes. Ahora explicaré como extraer ficheros de la copia de seguridad.

# dar -x /mnt/Backup/Backup_Completa -I Cadiz.avi -R /root/RESTORE

Esto extraerá de la backup /mnt/Backup/Backup_Completa el fichero que se llame Cadiz.avi en el directorio /root/RESTORE. Será muy rápido, pero existe un inconveniente y es que mediante este método se creará en el directorio /root/RESTORE todo el arbol de directorios vacío ensuciando el proceso de restauración. Es una buna opción si queremos recuperar todo tras un desastre, pero cuando queremos extraer solamente determinado fichero de una copia de seguridad a un directorio en concreto usaremos la opción -f que nos servirá para que el fichero Cadiz.avi se guarde directamente en /root/RESTORE. Por supuesto, si tenemos dos ficheros iguales en la copia de seguridad en diferentes directorios, nos preguntará si deseamos sobreescribirlo, ya que se extraerá en el mismo directorio con el mismo nombre. ¿Y si queremos extraer un directorio completo? Utilizaremos la opción -g indicándole como valor la ruta relativa de lo que queremos extraer. Imaginemos que queremos restaurar el directorio /datos/usuarios/manuel al completo, con todo su contenido. Como la backup se hace del directorio /datos utilizaremos la opción -g usuarios/manuel, por ejemplo. Se entiende ¿no?

# dar -x /mnt/Backup/Backup_Completa -g usuarios/manuel -R /root/RESTORE

Por último, si os ponéis a automatizar las copias de seguridad no olvidéis utilizar la opción -w, ya que si se desea sobreescribir las copias de seguridad diarias (conocidas como copias de seguridad hijo) nos preguntará si deseamos sobreescribir el fichero existente y no continuará hasta que no le facilitemos una respuesta.

Con lo explicado y un poco de bash podemos automatizar un proceso de backups creando una copia mensual completa, una completa semanal y diferenciales diarias basadas en la última semanal. Las copias una vez cifradas se pueden sacar de la empresa por si se incendiase o inundase, y aunque están cifradas y supuestamente están protegidas, la contraseña que utilicemos es lo único que las protege, por lo que debe ser fuerte.

Os recomiendo probarlo y que saquéis conclusiones vosotros mismos. Para más información la web oficial del proyecto.

7 Responses to “Copias de seguridad en sistemas Linux con Dar”


  1. 1 Alberto 28 noviembre 2007 a las 22:44

    hola gura nose quien eres pero me gustaria ponerme en contacto contigo tengo unas dudas y espero que me puedas ayudar agregame por favor…

    AlbertoCuervo2@hotmail.com

  2. 2 xavi soler 29 noviembre 2007 a las 16:44

    MUY interesante, sobretodo la parte del cifrado, me han venido muchas ganas de probarlo, de momento uso un sistema DIY con TAR y unos scripts en perl.

  3. 4 Alberto 29 noviembre 2007 a las 19:38

    gura agregame por favot o dame tu email

  4. 5 Rastreador 5 diciembre 2007 a las 21:54

    Gracias Gura.
    Muy interesante y muy currado el artículo.
    Creo que lo voy a probar en mis servidores y quizás en un futuro lo utilice con mis clientes.
    Hasta ahora estaba utilizando tar para cosas sencillas y bacula para cosas un poco mas “profesionales”.

    Saludos.

  5. 6 Gura 6 diciembre 2007 a las 12:46

    Dar es muy rápido, puedo dar fé. En lo que a restauración se refiere, hoy ha sido la prueba de fuego teniendo restaurar un directorio al completo. Me encanta el poder cifrar las copias. OVH en los SuperPlan ofrece backup por FTP. Podré dejar las copias en el FTP sin miedo a mirones, y en caso de que la máquina muera literalmente… ahí está. A ver si escribo algo de replicación bidireccional en MySQL, replicación de sistemas de ficheros con DRDB y el despliegue con heartbeat.

    Agur

  6. 7 pabloh 12 abril 2008 a las 18:24

    Justo lo que necesitaba, Gura.

    Ya lo tengo guardadín en del.icio.us… ¡y puesto en práctica!


Comments are currently closed.



Las opiniones reflejadas en este blog son personales o ni siquiera son opiniones, y bajo ningún concepto representan las estrategias, opiniones o posturas de mi empresa actual, ni de ninguna en las que he trabajado, así como tampoco de ninguno de los clientes o proveedores de todas ellas.
La información se proporciona como está, sin garantías de ninguna clase, y no otorga ningún derecho. Los comentarios pertenecen a sus autores y bajo ningún concepto el autor del blog se hará responsable de los mismos.

Categorías

Archivos


A %d blogueros les gusta esto: