-
-
Save pheraph/6376979 to your computer and use it in GitHub Desktop.
#!/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 |
Ich hatte auch darüber nachgedacht, das per rsync zu machen. Aber ich wollte ja gerade den aktuellen Status Quo zum irgendwo wegsichern haben. rsnapshot kannte ich bis dato noch nicht. Sieht jedenfalls interessant aus. Das werde ich mir mal näher ansehen. Danke!
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.
Mit rsnapshot kann man das ganze auch wunderbar inkrementell machen.