Backup vom Server per Cronjob in die Dropbox

Wer wie ich als Student in den Genuss von fast 30 GB Dropboxspeicher kommt stellt sich natürlich die Frage was man damit anstellt. Ich habe schon länger nach einer Backuplösung für meinen Server gesucht, auf dem ein paar Dinge wie zum Beispiel WordPress oder Owncloud laufen.

Auf Github gibt es ein interessantes Projekt namens Dropbox-Uploader

Dieses Skript nimmt euch die Arbeit beim erstellen der benötigten Dropbox App und den Upload von Files über die Konsole ab. Als erstes zieht ihr euch das Skript mittels wget auf euren Rechner:

wget https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh chmod +x dropbox_uploader.sh

Dann führt ihr das Skript mittels:

./dropbox_uploader.sh

aus
Achtet darauf, dass ihr es unter dem User ausführt unter dem es später auch als Cronjob laufen soll. Nachdem Ausführen des Skripts erhaltet ihr die Rückmeldung das noch eine entsprechende App auf Dropbox erstellt werden muss. Folgt einfach den Links die in der Konsole ausgegeben werden und tragt dann den App-Key sowie das App-Secret ein, dass euch im Browser angezeigt wird. Nun sollte das Skript einsatzfähig sein 🙂

Zurück zum eigentlichem Thema, dem Backup. Für mich ist es wichtig, dass die Datenbanken (MySQL) der Ordner /var/www/ mit den entsprechenden Seiten und diverse Konfigurationsfiles in /etc weggesichert werden. Bevor ich mir selbst ein entsprechendes Skript schreibe, habe ich kurz das www um Rat gefragt und ein sehr gutes Skript gefunden welches ich nur noch an meine Bedürfnisse anpassen musste.

Folgenden Code als

Backup.sh

abspeichern und um eure Wunschdaten erweitern.

#Zugangsdaten zu eurer MySQL-Instanz
MYSQL_SERVER="127.0.0.1"
MYSQL_USER="EuerBenutername"
MYSQL_PASS="EuerPasswort"

NOW=$(date +"%Y-%m-%d_%k%M%S")
echo timestamp = $NOW
save_path='/tmp'
save_file_base=$save_path/$NOW-sourcecoding-backup
save_file=$save_file_base.tar

# dump mysql
mysql_dump_file=$save_path/$NOW-mysql-database.sql
echo dump mysql to $mysql_dump_file
mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS --all-databases > "$mysql_dump_file"

echo backup to $save_file
# Hier die Pfade eintragen die gesichert werden sollen
path[0]='/var/www/'
path[1]='/etc/'
# Der zuvor erstellte Datenbankdump
path[2]=$mysql_dump_file

# Komprimieren
for t in "${path[@]}"
do
tar rfv $save_file $t/
echo $t saved!
done

bzip2 $save_file
echo zipped $save_file

rm -rf $mysql_dump_file
echo remove $mysql_dump_file

echo copy 2 dropbox $save_file.bz2
/pfad/zum/Upload_Skript/dropbox_uploader.sh upload "$save_file.bz2" "$save_file.bz2"

#Löschen des erstellten Archivs
echo remove local backup file $save_file.bz2
rm -rf $save_file.bz2

Nun nur noch den entsprechenden Cronjob mit

crontab -e

anlegen und fertig. Achtet darauf, dass der verwendete Benutzer die entsprechenden Rechte hat um auf die oben angegebenen Ordner zuzugreifen. Das sollte es gewesen sein.