En este artículo comparto un pequeño script Bash para subir automáticamente las copias de respaldo de los archivos y bases de datos en un servidor a una cuenta de Google Drive. Una solución barata (gratis hasta los 15 GB) para replicar las copias de backup de un VPS.

En el artículo anterior expliqué cómo subir archivos a Google Drive desde línea de comandos. El objetivo final del mismo era crear un esquema de replicación de backups en la nube, como tenía anteriormente copn Copy (servicio de almacenamiento en la nube discontinuado). Para ello necesitaba un cliente de Google Drive desde línea de comandos que no requiera interacción con el usuario. Además me interesaba una opción que sincronice a demanda, para no consumir ancho de banda ni recursos innecesariamente. Por ello encontré en drive la solución perfecta.

Contar con réplicas de las copias de seguridad fuera del servidor es de vital importancia. Si no me creen, o piensan que es exagerado o paranoico, pueden repasar esta breve anécdota, de las muchas que ocurren a diario en Internet. Cuanto mayor cantidad de réplicas, menor es la probabilidad de perder datos.

El script que he llamado upload2drive simplemente toma los últimos backups creados, los copia al directorio de drive, y luego lanza una sincronización para subirlos a Google Drive.

Como siempre, pueden encontrar este script actualizado en mi repositorio en GitHub: upload2drive.bash.

#!/bin/bash

# Configuration
# DAYS:
#  Number of days of backups to save in the cloud.
#  Google Drive gives you 15 GB of free storage currently.
#  Adjust this variable according to your backup daily size.
DAYS=60

# Working dirs
BACKUP_DIR="/backup"         # Where your backup files are stored
DRIVE_BASE_DIR="~/drive"     # Drive homedir location
DRIVE_BACKUP_DIR="backup"    # Drive folder for backups
DRIVE_DIR="$DRIVE_BASE_DIR/$DRIVE_BACKUP_DIR"

# Get current date (just in case needed)
DATE=$(date +%Y-%m-%d_%H%M%S)

# Copy backups from today/yesterday to Drive folder
for F in $(find $BACKUP_DIR -type f -mtime -1 2>/dev/null); do
        cp $F $DRIVE_DIR
done

# Delete backup copies older than $DAYS days
for F in $(find $DRIVE_DIR -type f -mtime +$DAYS 2>/dev/null); do
        rm $F
done

# Push changes to Google Drive quietly
cd $DRIVE_BASE_DIR
drive push -files -quiet $DRIVE_BACKUP_DIR

Referencias

Cómo subir archivos a Google Drive desde línea de comandos

Listar los archivos modificados en las últimas 24 horas


Tal vez pueda interesarte


Compartí este artículo