Skip to content

Instantly share code, notes, and snippets.

@pheraph
Last active January 24, 2017 19:21
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • 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
@twam
Copy link

twam commented Aug 29, 2013

Mit rsnapshot kann man das ganze auch wunderbar inkrementell machen.

@pheraph
Copy link
Author

pheraph commented Aug 29, 2013

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!

@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