Ich habe nach einer einfachen Möglichkeit gesucht, meine Dateien (in diesem Fall die Datenbank Backups) in meinem Google Drive zu sichern. Dazu müssen die Dateien aber von meinem Ubuntu Server via CLI in mein Drive geladen werden. Gdrive – kein offizielles Tool von Google – macht genau das.
Installation
Download der Linux Version von gdrive von GitHub.
wget https://docs.google.com/uc?id=0B3X9GlR6EmbnWksyTEtCM0VfaFE&export=download
Umbenennen der Datei.
mv uc?id=0B3X9GlR6EmbnWksyTEtCM0VfaFE gdrive
Ausführbar machen.
chmod +x gdrive
Und abschließend installieren.
install gdrive /usr/local/bin/gdrive
Verification Code hinterlegen
Damit der Google Drive Zugriff funktioniert, muss gdrive dafür berechtigt werden. Bei der ersten Ausführung eines gdrive Befehls wird nach dem Verification Code von Google gefragt.
Also einfach ein Auflisten der Dateien initiieren und den Anweisungen folgen. Der Link muss in den Browser kopiert werden, damit der Code generiert werden kann, welcher anschließend übergeben werden muss.
gdrive list
Die vollständige Befehlsübersicht gibt es hier.
Upload Ordner erstellen und ID bestimmen
Die hochgeladenen Dateien sollen in einen bestimmten Ordner hochgeladen werden. Gdrive benötigt dazu die ID dieses Ordners. Also wird in Google Drive händisch ein Ordner angelegt namens “DB Backups”. Um die ID dieses Ordners herauszufinden, kann danach gesucht werden.
gdrive list -q "name='DB Backups'"
Upload der Dateien mit gdrive
Dann kann initial die Datei hochgeladen werden.
gdrive upload backup.sql -p 0B8BrwyjZT63ISDdkOU4wNV85Vzg
Uploading backup.sql
Uploaded 0B8BrwyjZT63IcEJCc21jN3FfeGc at 27.5 KB/s, total 35.4 KB
Dabei definiert “-p” den Überordner des Dateiuploads. In dieses Verzeichnis wird die Datei hochgeladen.
Update von Dateien mit gdrive
Da Google Drive mit den IDs arbeitet und nicht mit Dateinamen, werden neu hochgeladene Dateien, die den gleichen Namen haben nicht überschrieben, sondern neu angelegt. Die Datei würde also mehrfach vorhanden sein. Dafür gibt es den “update” Befehl.
Nach dem initialen Upload hat man die IDs der jeweiligen Dateien und kann so das Update der Datei durchführen.
gdrive update 0B8BrwyjZT63INEZxT3RLMHgtcGc backup.sql
Uploading backup.sql
Updated 0B8BrwyjZT63INEZxT3RLMHgtcGc at 25.8 KB/s, total 35.4 KB
Dadurch wird eine neue Revision der Datei angelegt, die von Google 30 Tage lang vorgehalten wird.
Skript für das automatische Backup & den Upload mit gdrive
Mit folgendem Bash Skript werden die Datenbanken gesichert, hochgeladen und anschließend mit dem aktuellen Datum im Namen versehen. Dumps, die älter als 10 Tage sind, werden gelöscht.
#!/bin/bash now=$(date +"%Y_%m_%d") echo "Doing database backup with" $now "as date reference" echo "Saving WordPress" mysqldump wp -u root -p > /var/backups/wp.sql echo "Saving Nextcloud" mysqldump nc -u root -p > /var/backups/nc.sql echo "Saving Piwik" mysqldump piwik -u root -p > /var/backups/piwik.sql echo "Saving Rainloop" mysqldump rainloop -u root -p > /var/backups/rainloop.sql echo "Saving Vmail" mysqldump vmail -u root -p > /var/backups/vmail.sql echo "Saving done" echo "Upload to Drive" gdrive update 0B8BrwyjZT63IT2V0Ymp2NEpCV28 /var/backups/wp.sql gdrive update 0B8BrwyjZT63IaTRxemx6TTM0akk /var/backups/nc.sql gdrive update 0B8BrwyjZT63ISUVhMFF1Nzk5R2M /var/backups/piwik.sql gdrive update 0B8BrwyjZT63IMk5SWXpKclFZekk /var/backups/vmail.sql gdrive update 0B8BrwyjZT63INGh3YUxYQ2Rkcmc /var/backups/rainloop.sql echo "Moving dumps to name with timestamp" mv /var/backups/wp.sql /var/backups/wp-$now.sql mv /var/backups/nc.sql /var/backups/nc-$now.sql mv /var/backups/piwik.sql /var/backups/piwik-$now.sql mv /var/backups/rainloop.sql /var/backups/rainloop-$now.sql mv /var/backups/vmail.sql /var/backups/vmail-$now.sql echo "Deleting dumps older than 10 days" find /var/backups/*.sql -mtime +10 -type f -delete -print echo "done."