2 min read

Haciendo backups en Google Drive [Actualizado 2018]

Siempre he dicho que la información hay que tenerla, como minimo, por duplicado. Esto ya era así antes de la informática y no ha habido soporte de almacenamiento que haya conseguido evitarlo. Ni disquetes, ni discos duros, ni cintas, ni pendrives..todos fallan alguna vez. Tampoco tengo mucha confianza en los discos hológraficos esos que está desarrollando el MIT. Y como no tengas otra copia de lo que sea date por jodido. Además hay que contar con el factor humano; un rm -r donde no debes y luego lloros.

Otra cosa importante sobre los backups es que se tienen que hacer automáticamente. El exceso de confianza te puede hacer creer que te vas a acordar de hacerlo de vez en cuando. Nah, error. El día que te haga falta recuperar algo verás que tu último backup tiene dos meses.

Para Ghost no necesito mucho espacio. Las primeras ideas eran copiar los datos a otro VPS, bajarmelos al iMac por SFTP o enviarme los ZIPs por email. Pero lo que mola ahora es el Cloud, asi que ¿por qué no?

Acceder a Google Drive desde consola

Usar Google Drive como soporte tiene ventajas:

  • Con 30GB de capacidad no creo que llegue a llenarlo nunca.

  • No hay límites de transferéncia ni de tamaño de archivo.

  • Puedo acceder a los archivos vía web desde cualquier sitio.

Google Drive no tiene cliente oficial para Linux, mucho menos para consola. Después de buscar un rato la opción que más me convence es gdrive de Peter Rasmussen. Esta aplicación me permite subir y bajar archivos a Google Drive y no me obliga a sincronizar.

En la primera conexión gdrive necesita que accedas via web a Google Drive para generar el token de conexión. Abres el enlace, copias el ID del token y lo pegas en consola. Quedan guardados en $HOME/.gdrive para futuras conexiones.

Ahora solo falta currarse un shellscript que se encargue del trabajo duro de la copia:

#!/bin/bash
#Purpose = Backup Websites
#Created on 2018
#Author = Rafael Díez
#Version 2.0
#START

TIME=`date +%Y-%m-%d`
GHOSTRAFADATA=ghost-rafa-data--$TIME.tar.gz    # Nombre del fichero de datos
GHOSTRAFADB=ghost-rafa-db--$TIME.sql    # Nombre del fichero de DB
GHOSTRAFASRC=/var/www/ghost-rafa/ # Carpeta de datos
GHOSTMAIDATA=ghost-mai-data--$TIME.tar.gz    # Nombre del fichero de datos
GHOSTMAIDB=ghost-mai-db--$TIME.sql    # Nombre del fichero de DB
GHOSTMAISRC=/var/www/ghost-mai/ # Carpeta de datos
WPKORDATA=ghost-kor-data--$TIME.tar.gz    # Nombre del fichero de datos
WPKORDB=ghost-kor-db--$TIME.sql    # Nombre del fichero de DB
WPKORSRC=/var/www/kordata.com/ # Carpeta de datos
TEMPDESTINATION=/home/ghostuser/backups/tempbackup # Carpeta destino
BACKUPFILE=fullbackup--$TIME.tar.gz
BACKUPDESTINATION=/home/ghostuser/backups/ # Carpeta destino
tar -cpzf $TEMPDESTINATION/$GHOSTRAFADATA $GHOSTRAFASRC 
mysqldump --login-path=ghost_rafa_prod ghost_rafa_prod --single-transaction > $TEMPDESTINATION/$GHOSTRAFADB
tar -cpzf $TEMPDESTINATION/$GHOSTMAIDATA $GHOSTMAISRC
mysqldump --login-path=ghost_mai_prod ghost_mai_prod --single-transaction > $TEMPDESTINATION/$GHOSTMAIDB
tar -cpzf $TEMPDESTINATION/$WPKORDATA $WPKORSRC
mysqldump --login-path=wp-kor0021 wp-kor0021 --single-transaction > $TEMPDESTINATION/$WPKORDB
tar -cpzf $BACKUPDESTINATION/$BACKUPFILE $TEMPDESTINATION 
rm -r $TEMPDESTINATION/*
gdrive upload $BACKUPDESTINATION/$BACKUPFILE
find $BACKUPDESTINATION/*.tar.gz -mtime +15 -delete

#END

El script se encarga de guardar las carpetas de datos y tambien las DBs de cada uno de los websites. Para ello creo un fichero de configuración con las credenciales de acceso a Mysql usando mysql_config_editor

mysql_config_editor set --login-path=nombre --host=localhost --user=usuario-mysql --port=13001 --password

Lo guardo en $HOME, por ejemplo, con el nombre backup-gdrive.sh y lo preparo para ser ejecutable chmod +x backup-gdrive.sh

Y ahora la programación. Configuro cron para que ejecute el script una vez a la semana:

* * * * 0 /home/ghostuser/backup-gdrive.sh > /home/ghostuser/backups/cronlog.txt

Listo. Ya tengo mis datos por duplicado. Además, con esto para subir archivos al VPS ya no dependo de SFTP, GIT ni Rsync. Tengo que plantearme como hacer backup de Google Drive. No se si descargármelo al iMac o que se copie a Dropbox (seguro que hay alguna receta de IFTTT que lo hace).