Backup seguro y gratuito.
Siguiendo con mi post sobre servidores, una parte fundamental es la parte de backup, ya que siempre es importante estar preparados los desastres. Lo importante de los backups es la redundancia, y la seguridad. Nadie mas que nosotros tiene que poder ver nuestros backups.
Anteriormente mencione que Amazon S3 es una solución barata, muchas veces barata no es suficiente (especialmente si pagas a Amazon S3 una fortuna por otros sitios). Luego de pensar, y pensar en un medio de almacenamiento mas o menos seguro y gratis de ser posible, se ocurrió que tengo bastante espacio ocioso en mi gmail (65% para ser exacto). La única limitación es que el backup generado tiene que ser menor de 20MB. El único problema que ahora surge es que Google podría leer nuestros backups y ahí obtener valiosa información sobre nuestro sitio web, base de dato u otra cosa que este contenida en el backup,
Para solucionar ese problema podríamos usar encriptación, de manera que nadie pueda ver el contenido del archivo sin una clave.
Aqui les presento el script que yo utilizo para hacer los backups de mis servidores.
#!/bin/bash -x MAIL=foobar@gmail.com #Obviamente, no solo funciona con @gmail. SQL=/tmp/tables.sql DATE=`date '+%F'` # Password que es un MD5 # de un string que tiene la fecha, # cada dia, tiene un password unico echo "password con $DATE " > /tmp/foo PASS=`md5sum /tmp/foo | sed "s/ .*//g"` rm /tmp/foo # backup de mysql. mysqldump -u root --all-databases | bzip2 | openssl des3 -salt -k $PASS | dd of=$SQL # Ahora comprimimos tar cfj - /www/foobar.com | openssl des3 -salt -k $PASS | dd of=foobar.com-$DATE.bin # /etc tar cfj - /etc/ | openssl des3 -salt -k $PASS | dd of=etc-$DATE.bin # Ahora enviar los mails echo | mutt -s "[backup] $DATE foobar.com " $MAIL -a foobar.com-$DATE.bin echo | mutt -s "[backup] $DATE /etc" $MAIL -a etc-$DATE.bin echo | mutt -s "[backup] $DATE MySQL" $MAIL -a $SQL rm $SQL
Para restaurar el backup simplemente hay que ejecutar el siguiente script. Lo importante es proveer siempre la clave correcta, que cambia para cada día (utiliza la fecha). Sin la clave es literalmente imposible que recuperemos el contenido, de ahi la importancia de no olvidar la clave.
#!/bin/bash -x dd if=$1 |openssl des3 -d -k $3 | dd of=$2
Para restaurar el backup simplemente debe realizar lo siguiente:
$ restore archivo-encriptado archivo-salida-desencriptado clave
Si se preguntan cuan seguro es el encriptado?, pues la respuesta es suficiente para que yo ponga informacion real sobre una de mis tarjetas de creditos con algunos dolares (sobrantes del Google Summer of code) en un sitio de descarga para que la gente intente romper la seguridad. Si deseas intentar puedes bajarte de aqui.








A ver si los pseudo-hackers de la forósfera paraguaya pueden obtener información de mi tarjeta de crédito en este siglo.
Gran solución usando las herramientas que ya estan disponibles (la gran capacidad de GMail)
como se ejecuta este script? que tipo de script es?
como automatizo esto para iniciar el proceso desde mi gmail y guardar la contraseña (unica) adjunta?
El script se debe ejecutar vía crontab o alguna forma de hacer tareas programadas.
La contraseña tendría que saber vos, y tendría que cambiar diariamente, así como yo puse en el ejemplo, alguna frase + fecha de hoy y el MD5. A la hora de restaurar tendrías que saber la frase + fecha del archivo (por eso se incluye la fecha en el nombre del archivo), luego hacer su MD5. Esto es solo un ejemplo, podrían usar SHA1, o una contraseña simple (no recomendada).