domingo, 7 de marzo de 2010

Backups off-site cifrados truecrypt

   En todos los proyectos hay distintas etapas. Primero te das cuenta de que la forma de realizar los backups es poco óptima y segura y decides que sería mejor tener un raid 1 para protegerte de los fallos en disco. Un tiempo después empiezas a pensar que eso está muy bien, pero qué ocurre si te roban el ordenador (con sus 2 discos del raid), se incendia, inunda o viene un tornado y te quedas sin casa. Pues que has perdido todos tus preciados datos. En ese momento piensas en un backup off-site, es decir, fuera de tu casa. Hay muchos servicios online, pero cuando tienes cientos de gigas de información que almacenar, pueden suponer muchos euros al mes.
Al final, una solución puede ser hacer el backup a un disco externo y llevar ese disco a otro sitio: la oficina, la casa de tus padres,... y cada cierto tiempo traerlo a casa, sincronizar los datos pendientes y volverlo a llevar. Pero, ¿qué ocurre si ese disco externo se pierde o roban en casa de tus padres?, que todo el mundo vería tu información. La solución para esto, el cifrado.

   Así es cómo lo voy a hacer. Tengo un disco duro de 120 GB que usaba antes de ampliar el raid y que ahora tengo en una caja externa usb. Para el cifrado, utilizo Truecrypt, del que ya he hablado varias veces y que me parece una solución estupenda.
  • Creamos el dispositivo cifrado. En lugar de crear un archivo .tc voy a cifrar toda la partición. Nos pedirá que seleccionemos los algoritmos, que introduzcamos una clave y que "aporreemos" el teclado para generar las claves con cierta aleatoriedad. No elegimos sistema de archivos puesto que sólo podemos escoger FAT y nosotros formatearemos posteriormente a ext3. Este proceso puede durar mucho tiempo en función del tamaño del disco, en mi caso fueron unas dos horas.
    shian:~# truecrypt -c /dev/sda1
  • Una vez finalizado el proceso, montamos el volumen cifrado indicando que no tiene filesystem.
    shian:~# truecrypt --filesystem=none /dev/sda1 /mnt/ext_backup
  • Vemos dónde se ha mapeado el dispositivo y lo formateamos. Ojo no hay que elegir /dev/sda1 puesto que sino sobreescribiríamos el volumen cifrado y tendríamos que empezar de nuevo.
    shian:~# truecrypt -l   
    1: /dev/sda1 /dev/mapper/truecrypt1

    shian:~# mkfs.ext3 /dev/mapper/truecrypt1
  • Desmontamos el volumen y lo montamos en su ubicación definitiva con el sistema de archivos ya creado. Ahora ya podríamos empezar a copiar todos nuestros datos en él.
    shian:~# truecrypt -d /dev/sda1

    shian:~# trucrypt /dev/sda1 /mnt/ext_backup

    shian:~# df -h
    S.ficheros Tamaño Usado Disp Uso% Montado en
    /dev/mapper/truecrypt1 113G 17G 91G 16% /mnt/ext_backup
  • Para la sincronización he hecho un script muy sencillo con rsync que copia los datos de la partición del raid donde los deja el proceso de backup al volumen cifrado. Sólo muestro dos directorios, pero el comando es el mismo para todos.
    #!/bin/bash
    echo "Asegurate de que esté montado el volumen cifrado!!!!"
    echo "CTRL+C para cancelar"
    read

    DATA_HOME=/mnt/raid/datos/doraemon/current
    BACKUP_DST=/mnt/ext_backup
    LOG_FILE=/root/log_externalBackup/$(date +%Y%m%d_%H%M)_externalBackup.log
    FINAL_LOG_DST=/mnt/ext_backup/logs

    rsync -avpz --stats "$DATA_HOME/media/sda2/Fotos" $BACKUP_DST > $LOG_FILE
    rsync -avpz --stats "$DATA_HOME/media/sda2/Musica" $BACKUP_DST >> $LOG_FILE

    cp $LOG_FILE $FILE_LOG_DST/
  •    Y listo, con esto estaría todo terminado. Ya sólo hay que lanzar el script y esperar a la sincronización. La primera vez tardará varias horas en función del volumen de datos, pero posteriormente la copia no debería tardar demasiado.

       Tal vez esta solución no sea la más limpia y elegante, puesto que los datos no están al día, hay que acordarse de traer y llevar el disco externo (con un par de notas en Google Calendar se soluciona), pero sin duda es más barata y tienes más control de tus datos :-P