Google Drive als Backup-Lösung

Ich suche seit einiger Zeit einen günstigen Web-Storage um externe Backups meiner zahlosen Projekte  anzulegen. Hat mich selbst überrascht, aber Google ist hier mit ABSTAND! der billigste Anbieter, bei 3$/Monat für 100GB kann man echt nicht meckern ..

Ich bin bei weitem kein Freund von der Datenkrake Google, trotzdem ist google.de meine Standart-Suchmaschine und Android mein Pflicht-OS für’s Smartphone …

Trotzdem schaufel ich meine Backups nur PGP-verschlüsselt in die Google-Cloud!

Installation unter Debian 8

Zum synchronisieren mit google-drive benutze ich „drive“ von twodopeshaggy.
https://launchpad.net/~twodopeshaggy

Repository hinzufügen

Das Ubuntu-Paket (deb) funktioniert 1A unter Debian 8.3 jessie. Ich nehme an dass es in allen Debian 8 Versionen läuft (ungetestet).

# cat /etc/apt/sources.list.d/twodopeshaggy-drive-wheezy.list
deb http://ppa.launchpad.net/twodopeshaggy/drive/ubuntu trusty main
deb-src http://ppa.launchpad.net/twodopeshaggy/drive/ubuntu trusty main

oder

sudo add-apt-repository ppa:twodopeshaggy/drive

Installation

sudo apt-get install drive
## extra Benutzer anlegen
adduser gdrive

## Verzeichnisse erstellen
mkdir -p /opt/gdrive/{local_backup,google-drive,log}

## Berechtigung anpassen
chown -R gdrive:gdrive /opt/gdrive

## drive initialisieren
su gdrive
cd /opt/gdrive/google-drive
drive init .

## prüfen
drive stat
drive quota

Somit sind die Voraussetzungen geschaffen, um Daten automatisiert nach Google zu schaufeln.

Automatisierung

Bashscript

Als nächstes wird ein Script zur Automatisierung benötigt, hier zur Vorlage mein Backup-Script.

ACHTUNG: Das Script ist so natürlich nicht überall lauffähig, in meinem Fall ist es für tägliche Backups meiner LXC-Container optimiert… Die PGP-Verschlüsselung ist natürlich optional, aber dringend zu empfehlen…

#!/bin/bash

# Make sure only gdrive can run our script
if [ "$(id -u)" != "1001" ]; then
   echo "This script must be run as user gdrive" 1>&2
   exit 1
fi

## Define directories
DIR_LOCAL_BACKUP_DAILY=/opt/google-drive/local_backup/daily/dump
DIR_LOCAL_BACKUP_WEEKLY=/opt/google-drive/local_backup/weekly/dump
DIR_GOOGLE_DRIVE=/opt/google-drive/google-drive

## Name of daily backup directory
BACKUP_DIR_TODAY="$DIR_GOOGLE_DRIVE/`date +"%Y_%m_%d"`-daily"

echo -e "\n<<< backup2gdrive start >>>"
echo "Start time: `date +"%Y-%m-%d %H:%M:%S"`"

echo -e "\n<<< cleanup start >>>"
## Aufräeumen
for directory in $(find $DIR_GOOGLE_DRIVE -mindepth 1 -mtime +1 -type d -not -path "*/.gd"); do
    echo $directory
    rm -Rf $directory || exit 1
done

## alte Verzeichnisse vom Google-Drive loeschen
drive push -quiet=true $DIR_GOOGLE_DRIVE || exit 1
echo "<<< cleanup end >>>"

echo -e "\n<<< create directory start >>>"
## Create directory
mkdir $BACKUP_DIR_TODAY || exit 1
if [ -d $BACKUP_DIR_TODAY ]; then echo $BACKUP_DIR_TODAY create successfully; fi
echo "<<< create directory end >>>"


echo -e "\n<<< Encryption start >>>"
echo "Backup directory: $BACKUP_DIR_TODAY"
## Encrypt all daily backups
for file in $(ls $DIR_LOCAL_BACKUP_DAILY/vzdump-*-`date +"%Y_%m_%d"`-*.gz)
do
    filename=$(basename $file)
    echo "Encrypt $filename"

    ## Encrypt with public pgp-Key
    gpg2 -z 0 -r hans@wurst.de --batch --output $BACKUP_DIR_TODAY/${filename}.gpg --encrypt $DIR_LOCAL_BACKUP_DAILY/$filename || exit 1
done
echo "<<< Encryption end >>>"

echo -e "\n<<< drive emptytrash start >>>"
echo "exec -> drive emptytrash $DIR_GOOGLE_DRIVE -no-prompt"
drive emptytrash $DIR_GOOGLE_DRIVE -no-prompt|| exit 1
echo -e "\n<<< drive emptytrash end >>>"

echo -e "\n<<< drive push start >>>"
echo "exec -> drive push -quiet=true $DIR_GOOGLE_DRIVE"
drive push -quiet=true $DIR_GOOGLE_DRIVE || exit 1
echo -e "\n<<< drive push end >>>"

echo "End time: `date +"%Y-%m-%d %H:%M:%S"`"
echo "<<< backup2gdrive end >>>"

Cronjob

Als letztes fehlt noch ein Cronjob zur Automatisierung.
Die Ausgabe wird hier in eine Logdatei mit Zeitstempel geschrieben.

## backup2gdrive Script
00 06 * * * gdrive /opt/google-drive/backup2gdrive.sh > /opt/google-drive/log/backup2gdrive-$(date +\%Y\%m\%d_\%H\%M\%S).log 2>&1

bzw. als check_mk Job
## backup2gdrive Script
00 06 * * * gdrive mk-job backup2gdrive /opt/google-drive/backup2gdrive.sh > /opt/google-drive/log/backup2gdrive-$(date +\%Y\%m\%d_\%H\%M\%S).log 2>&1
Kommentar schreiben

2 Kommentare.

  1. Kannte ich tatsächlich noch nicht …Sehr interessant!

    Für mich leider ungeeignet, da man bei 100GB Storage „nur“ 1TB Traffic bei Vollspeed hat. Dass wird mir tatsächlich zu knapp …

    Aktuell brauche ich nicht mehr Backup-Space …

    P.s.: 15GB Backup Richtung Google in ~6 Minuten, da kann man nicht meckern 🙂

  2. Schon mal bei hetzner die storage box gesehen?
    Ab einem 1TB ist die derzeit preislich gleich auf zum Google Drive und bei 10TB ca. halb so teuer. Abgesehen davon, dass die Bandbreite innerhalb DE zu hetzner wesentlich größer sein dürfte.
    Wir kriegen 200-300Mb/s dort hin.

Kommentar schreiben


Hinweis - Du kannst dies benutzenHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.