Skip to content

Instantly share code, notes, and snippets.

@pheraph
Last active January 24, 2017 19:21
Show Gist options
  • Save pheraph/6376979 to your computer and use it in GitHub Desktop.
Save pheraph/6376979 to your computer and use it in GitHub Desktop.
Eine lokale Sicherung eines oder aller uberspace(s) erstellen
#!/bin/sh
#
# Erstellt eine lokale Sicherung von /home/username, /var/www/virtual/username und der Datenbanken des Benutzers
#
# Voraussetzungen:
# Auf dem lokalen Computer sind die uberspaces in ~/.ssh/config wie folgt konfiguriert:
# Host uberspacename
# HostName sternenkonstellation.uberspace.de
# User uberspacename
#
# https://gist.github.com/DirkR/1613079#file-uberspaces-pl muss lokal im Verzeichnis des Shellskriptes liegen.
#
# Ohne Parameter werden alle in .ssh/config hinterlegten uberspaces gesichert
# Selektive uberspace-Backups via backup-uberspace.sh "uberspace1 uberspace23"
#
# Teils von http://www.gehaxelt.in/blog/ueberspace-backupscript "inspiriert"
# Ohne jede Garantie, dass es abseits von "Works for me" auch nur im Ansatz verlässlich oder überhaupt funktioniert!
# Aktuelles Datum
date=`date +%d-%m-%Y`
# Backups sichern in: (Kein Slash am Ende!)
output="$HOME/Backups"
if [ -z "$1" ]; then
# Kein Parameter -> alle in ~/.ssh/config angegebenen uberspaces
uberspaces=$(perl ./uberspaces.pl)
else
# Die als Parameter übergebenen uberspaces verwenden
uberspaces=$1
fi
for uberspace in $uberspaces
do
echo "==== UBERSPACE: $uberspace ===="
echo "* Sichere /home/$uberspace"
ssh $uberspace "tar -cjf - /home/$uberspace" >$output/uberspace-$uberspace-home-$date.tar.bz2
echo "* Sichere /var/www/virtual/$uberspace"
ssh $uberspace "tar -cjf - /var/www/virtual/$uberspace" >$output/uberspace-$uberspace-var-$date.tar.bz2
echo "* Sichere Datenbanken von $uberspace"
ssh $uberspace "mysqldump --defaults-file=\$HOME/.my.cnf --compact --comments --dump-date --quick --all-databases | gzip " >$output/uberspace-$uberspace-databases-$date.sql.gz
echo
done
@sonicdoe
Copy link

duplicity eignet sich übrigens auch sehr gut dazu.

Bezüglich rsync: Ich habe mir unter uberspace-goodies/backup gerade etwas Ähnliches mit rsync gebastelt.

Ein Problem, auf welches ich gestoßen bin, war, dass meine Hosts in ~/.ssh/config teils andere Namen als meine Uberspace-Accounts haben. Ich frage daher einmal mit whoami den Usernamen ab (eigentlich könnte man ihn wohl auch aus der SSH-Config auslesen). Außerdem habe ich das Auslesen von Uberspace-Accounts aus der SSH-Config in Shell-Code „übersetzt“.

Ich habe auch versucht, alle MySQL-Tabellen separat zu speichern (so wie Uberspace es selber macht), allerdings lief das auf zu viele SSH-Connections in zu kurzer Zeit ’raus, was dann Uberspace nicht so gefiel.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment