
Ich brauch eine Stelle die sich permanent um die Sicherung von Daten kümmert und das autark veranstaltet. Der kleine Heimserver läuft sowieso. Da ist eine kleine VM wohl die beste Lösung.
Die Basis
BorgBackup ist, vermutlich, eines der besten Anwendungen um Backups von Dateisystemen zu machen. Die Backups sind inkrementell und damit vollständig und gleichzeitig Platzsparend (mehr zu BorgBackup unter https://wiki.ubuntuusers.de/BorgBackup/)
Da mir die Konfiguration von BorgBackup über die Shell und/oder irgendwelche wilden Skripte aber zu kompliziert und Fehleranfällig sind, hab ich mich entschieden ein normales Desktop Betriebssystem in einer VM laufen zu lassen und dort das Backup mit der Software Vorta zu konfigurieren.
Als Betriebssystem hab ich PureOS gewählt, einfach weil es relativ klein ist und ich auch mal was anderes als Ubuntu sehen wollte.
Wie man die virtuelle Maschine erstellt, habe ich ja schon mal erklärt (klick).

Software
Nach dem die VM eingerichtet ist und auf dem aktuellen Stand gebraucht wurde, erst mal die notwendige Software nachladen.
sudo apt install cifs-utils
sudo apt install sshfs
sudo apt install openssh-server
sudo apt install vorta
cifs-utils wird benötigt um meine Hetzner-Storage-Box per SMB zu verbinden und sshfs eine SSH Verbindung zu meinem Webspace herzustellen. Von dort will ich schließlich Dateien sichern. OpenSSH-Server – damit ich über die Shell auf die Maschine zugreifen kann, wenn nötig und zum guten Schluss natürlich die Backup Software Vorta selbst.
Laufwerke einbinden
Die Backups werden von einem entfernen Server auf einen anderen entfernten Server gesichert. Die VM hat hier lediglich die Aufgabe die Backups zu verwalten. Damit alle Medien direkt nach dem Booten der VM zur Verfügung stehen, werden diese für die Konfigurationsdatei /etc/fstab fest in System gemountet.
Aber soweit sind wir noch nicht. Vor dem einbinden kommt noch etwas Fleißarbeit.
Schlüsselpaar für die SSH-Verbindung
Auf allen meinen Webservern liegt ein öffentlicher Schlüssel von mir, das ermöglicht es mir, einfach und ohne Passwort mit der jeweiligen Maschine verbinden zu können (mehr dazu unter https://wiki.ubuntuusers.de/SSH/).
Damit ich das auch auf meiner Backup-Maschine nutzen kann führe ich folgende Schritte durch:
sudo mkdir /home/faulthiel/.ssh
sudo nano /home/faulthiel/.ssh/ttt <--- hier wird der private Schlüssel eingefügt.
sudo chmod 600 ~/.ssh/ttt
Ich erzeuge also im Home-Verzeichnis meines Nutzers faulthiel einen Ordner mit dem Namen .ssh und erzeuge anschließend eine Textdatei ttt in die ich meinen privaten Schlüssel rein kopiere. Anschließend sorge ich mit chmod für die erforderlichen Lese/Schreibrechte.
Mount-Punkte erstellen
Für jeden Host den ich einbinden werde, braucht es einen Mount-Punkt. Sinnvollerweise wird dieser unter dem Verzeichnis media angelegt. Hier zwei Beispiele
sudo mkdir -p /media/alphathiel
sudo mkdir -p /media/hetzner
Also ein Punkt für den Webspace von alphathiel.de und einen für mein Storage bei Hetzner. Weitere Punkte für weitere Projekte werden natürlich auch angelegt.
fstab
Jetzt sorge ich dafür, das die Laufwerke der VM bekannt gemacht werden. Ich öffne die Konfigurationsdatei fstab im Editor nano mit folgendem Befehl.
sudo nano /etc/fstab
Hier füge ich dann, für jedes Laufwerk ein neue Zeile ein. Damit ich den Überblick behalte, beschrifte ich den jeweiligen Eintrag. Dazu erst ein Raute setzen und dann den „Namen“ des Laufwerks eintragen. In der nächsten Zeile dann den eigentlichen Befehl.
# hetzner smb
//uXXXXXX.your-storagebox.de/backup /media/hetzner cifs uid=1000,gid=1000,username=uXXXXXX,password=passwort123
# alphathiel
sshfs#xxxx@xxxxxx.de@hosting.telekom.de:/home/www/ /media/alphathiel fuse uid=1000,gid=1000,umask=0,allow_other,_netdev,IdentityFile=/home/faulthiel/.ssh/ttt 0 0
Aber was steht da?
In der ersten Zeile findet sich der Befehl meine Hetzner Storage Box einzubinden. Erst der Pfad / die URL zum entfernen Server. Dann der Pfad zum Mount-Punkt. CIFS ist die Angabe des Protokolls. Mit uid und gid wird bestimmt welcher Linux Nutzer auf der VM diese Verbindung nutzen darf. Wenn man nur einen Nutzer angelegt hat, ist das eben 1000. Ansonsten muss man das vorher nachschlagen. Dann kommen Benutzername und Passwort bei Hetzner.
In der letzten Zeile ist die SSH Verbindung zum meinem Webspace bei der Telekom angeben. Unter IdentityFile ist dann der Pfad zum privaten Schlüssel vermerkt.
Eigentlich alles simple, wenn man es weiß und keine Tippfehler macht.
Den Editor mit Strg + X und Anschließen Y schließen. Zum Abschluss noch Mounten
sudo mount -all
Jetzt kann man auf die entfernen Server zugreifen.
Hier empfehle ich einen Reboot der VM und dann checken ob auch nach dem Neustart die Verbindung wieder steht.

Am Leben erhalten
Im laufenden Betrieb hat sich gezeigt, das die VM die Verbindung zu den externen Laufwerken verliert. Das ist dann etwas ungünstig wenn Nachts die Backups laufen sollen und die Software keine Zugriff erhält. Mit einem kleine Skript das checkt ob die Verbindung besteht und diese ggf. wieder aufbaut, wirke ich dem entgegen.
#!/bin/bash
# --- KONFIGURATION ---
# Liste der Mountpoints, die geprüft werden sollen
MOUNTS=("/mnt/share1" "/home/user/nas_daten")
# Logdatei
LOGFILE="/var/log/mount_checker.log"
# ---------------------
echo "Überprüfung gestartet... Beenden mit Strg+C"
while true; do
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
for MNT in "${MOUNTS[@]}"; do
# Prüfen, ob der Pfad ein aktiver Mountpoint ist
if mountpoint -q "$MNT"; then
echo "[$TIMESTAMP] $MNT ist verbunden."
else
echo "[$TIMESTAMP] $MNT fehlt! Versuche neu zu mounten..." >> "$LOGFILE"
# Versucht alle Einträge aus der /etc/fstab neu zu laden
mount "$MNT" 2>> "$LOGFILE"
if [ $? -eq 0 ]; then
echo "[$TIMESTAMP] $MNT erfolgreich wiederverbunden." >> "$LOGFILE"
else
echo "[$TIMESTAMP] FEHLER: $MNT konnte nicht gemountet werden." >> "$LOGFILE"
fi
fi
done
# 5 Minuten schlafen
sleep 300
done
Das ganze mit unter dem Namen check.sh gespeichert und mit sudo chmod +x check.sh ausführbar gemacht. Anschließend mit sudo ./check.sh gestartet und schon läuft die Kiste.