Respaldos – Parte 1

Uno de mis clientes me ha pedido que realice respaldo de sus datos a un sistema de archivos en la nube como “Google Drive”, “Dropbox”, “Amazon Cloud Drive”, etc… Esto por el hecho del bajo costo que podría representar algún servicio como los mencionados anteriormente.

Cabe mencionar que en total, los datos a respaldar ascienden a alrededor de 350GB y el respaldo debe estar separado por carpeta, que en este caso son sitios web con información importante cada uno. Uno de los sitios es el que ocupa más espacio con alrededor de 290GB.

Empece usando Google Drive para subir los archivos haciendo uso de la herramienta “GDrive“, la cual usaba para subir un archivo tar de cada sitio.

Esta herramienta tiene la posibilidad de subir un archivo en “stream”, esto es, podemos redirigir un pipeline a la herramienta y esta la subirá al “vuelo”, el problema con esto es que esta limitada a no más de 2-3GB según mis pruebas, por lo que decidí hacer un Tar en un directorio temporal y enseguida subirlo.

Al inicio esto funcionó porque tenía suficiente espacio en HDD para una copia del sitio en Tar, pero con el tiempo ya no funcionó debido al crecimiento del sitio en cuanto a datos.

Decidí dejar Google Drive y “Gdrive” por el hecho de que las transferencias eran muy lentas, nunca pase del MB/s, ya imaginarán el tiempo que tardaba en respaldar un sitio de casi 300GB.

Mi siguiente opción fue usar Amazon Cloud Drive, por aquello de su nueva promoción de espacio ilimitado para datos, excelente para este caso.

Para hacer uso de esta nube use la herramienta “ACDCLI“, la cual me ofrecía las mismas prestaciones que GDrive, con la limitante de no poder subir archivos de no más de 50GB, pero dije, esta bien, haré el Split de 49GB.

Para este caso, debido a la limitante de espacio libre en el disco duro, decidí usar la función de ACDCLI para montar el Drive de Amazon Cloud Drive en un directorio y ahí realizar el Split + Tar + GZIP y mientras se hacía subirlo al vuelo a la cuenta de ACD.

Todo parecía funcionar de maravilla, de hecho para archivos menores de 10GB no hay ningún problema de time outs, puedes estar “casi” seguro de que funcionará….

Ese “casi” se convirtió en “Time Out’s” que no pude  manejar o verificar que haya cargado el archivo perfectamente, así que tuve que idear otra opción para los respaldos, algo con Rsync debido a la cantidad de datos, esto lo veremos en el próximo artículo una vez que termine la nueva herramienta con Rsync.

Estaré publicando los scripts que realice en mi cuenta de GitHub, por ahora por la limitante de tiempo solo pondré algunos de los comandos que utiliza mi herramienta, todo muy genérico pero que nos puede servir de referencias:

COMANDOS DE RESPALDOS SPLIT+TAR+GZIP

tar -zc --exclude='access_*' --exclude='error_log' --exclude='xferlog*' --exclude='proxy_access*' --exclude='*.log' "directory" | split -b 9GB - $BACKUP_DIR/$BACKUP_FILE.tar.gz_

Con el comando anterior lo que hacemos es crear un archivo Tar sin incluir archivos de “logs” como “access_log”, “error_log”, etc… y al mismo tiempo aplicar GZip al archivo y dividirlo en archivos de 9GB .

RESPALDO DE BASEDATOS EN MYSQL DE MANERA INDIVIDUAL

databases=$($MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)")

for db in $databases; do
echo "Respaldando base de datos $db"
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/$db.gz"
done

Leave a Reply

Your email address will not be published. Required fields are marked *