Linux gdrive: Upload zu Google Drive über Command Line

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

gdrive verification code

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'"

gdrive search

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."

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s