Nachdem wir im ersten Teil dieser kleinen Reihe ein erstes Backup eingerichtet haben, kümmern wir uns heute um die erweiterten Optionen und Möglichkeiten mit Borg.
Veraltete Backups löschen
Damit die Daten auf dem Backup-Server nicht zu viel werden, sollten Backup mit einem gewissen Alter automatisch wieder entfernt werden. Dieser Vorgang wird bei Borg prune genannt und kann ebenfalls automatisch durchgeführt werden.
#!/bin/bash ROOTDIR="/home/borgbackup/backups/" LOG="prune-backup.log" # Logging exec > >(tee -i ${LOG}) exec 2>&1 echo "###### Pruning backup for <ServerA> on $(date) ######" borg prune --dry-run -v ${ROOTDIR}<ServerA> \ --keep-daily=7 \ --keep-weekly=4 \ --keep-monthly=6 echo "###### Pruning finished ######"
Dieses Beispiel sucht in dem angegebenen Verzeichnis nach Backups und lässt sieben tägliche Backup, vier wöchentliche und sechs monatliche Backups stehen. Der Rest wird automatisch gelöscht und der Speicherplatz wieder freigegeben.
Denken Sie daran, dass Skript ausführbar zu machen, da sonst ein Aufruf nicht funktioniert.
chmod u+x /home/borgbackup/prune-backup.sh
Automatisierung des Aufräum-Vorgangs
Erstellen Sie einen neuen Cronjob, der die Aufräum-Aktion automatisch im Hintergrund erledigt. Achten Sie darauf, dass dieser Job nicht zu Zeiten passiert, an denen eine Sicherung erstellt wird, da es sonst zu Problemen kommen kann. Einen Job erstellen können Sie per
crontab -e
Tragen Sie hier z.B. eine Ausführung morgens um sechs Uhr ein.
0 6 * * * /home/borgbackup/prune-backup.sh > /dev/null 2>&1
Überprüfen Sie am besten nach ein oder zwei Tagen, ob das Logfile Aktivitäten zeigt.
Kleiner Tipp: Ich benutze gerne den Crontab Guru 🙂
Die Aktivierung einer Mail-Benachrichtigung
Die Backup- und Aufräum-Skripte können auch Benachrichtigungen per Mail schicken. Dies sorgt dafür, dass man aktiv sieht, was in der Nacht passiert ist und ob das Backup erfolgreich erstellt wurde.
Die Installation der benötigten Pakete
Im ersten Schritt müssen die benötigten Pakete installiert werden.
apt install ssmtp mailutils -y
Anpassung der Konfiguration
Nun muss die Konfigurationsdatei von sSMTP angepasst werden, damit über einen externen SMTP-Server die Mails versendet werden können.
# # Config file for sSMTP sendmail # # The person who gets all mail for userids < 1000 # Make this empty to disable rewriting. root=<Name>@gmail.com # The place where the mail goes. The actual machine name is required no # MX records are consulted. Commonly mailhosts are named mail.domain.com mailhub=smtp.gmail.com:587 # Where will the mail seem to come from? rewriteDomain=gmail.com # The full hostname hostname=localhost # Are users allowed to set their own From: address? # YES - Allow the user to specify their own From: address # NO - Use the system generated From: address FromLineOverride=YES AuthUser=<Name>@gmail.com AuthPass=<Passwort> UseSTARTTLS=YES
Ein Nachteil dieser Variante ist, dass das Mail-Kennwort hier im Plaintext auf dem Server gespeichert wird. Nutzen Sie am besten ein eigenes Postfach für diese Emails und aktivieren Sie die 2-Faktor-Authentifizierung, damit das Konto nicht so einfach missbraucht werden kann.
Der Eintrag hostname=localhost war notwendig, da sonst keine Emails über Gmail gesendet werden konnten
Erlauben, wer Emails senden darf
Damit nur definierte Benutzer Emails versenden dürfen, muss dies in der Datei revaliases eingetragen werden.
root:<Name>@gmail.com:smtp.gmail.com:587
Test des Email Versands
Nun kann der Versand von Emails getestet werden
echo "Inhalt" | mail -s "Betreff" <Name>@gmail.com
Anpassen des Benutzernamen
Wird nun diese Test-Mail per root-Benutzer verschickt, sieht dies z.B. in einem Outlook wie folgt aus
Soll ein sprechender Namen vergeben werden, so kann dies in der Datei passwd gemacht werden. Hier muss bei dem Benutzer root der fünfte Eintrag angepasst werden.
Achtung, ändern Sie nur den fünften Eintrag, nichts weiteres. Andere Anpassungen können dazu führen, dass augenblicklich alles in Flammen aufgeht und verglüht!
root:x:0:0:borg@backupserver:/root:/bin/bash
Nach der Anpassung sieht eine Email wie folgt aus:
Grundsätzlich kann natürlich auch mit sprechenden Namen gearbeitet werden, nicht nur mit Email-Adressen.
Erweiterung der Skripte, um Emails senden zu können
In den Skripten muss nun noch der Email-Versand eingestellt werden. Erweitern Sie Ihr Backup- und/oder das Prune-Skript z.B. um die folgenden Zeilen
# Mail an Admin senden mailx -r backup@backupserver -s "Backup | Prune" admin@domain.tld < $LOG
Fazit
In diesem Beitrag haben wir unser Backup um eine Email-Funktionalität erweitert sowie eine Alterung der Backup-Daten eingestellt. Die Installation ist in diesem Zustand schon recht gut nutzbar sowie erweiterbar. Im dritten Teil dieser Serie kümmern wir uns um eine Schränkung der SSH-Möglichkeiten der Server gegenüber dem Backup-System.
Grau auf Schwarzem Hintergrund ist eher schlecht zu lesen, ich geb es auf!
Hallo, das war so nicht geplant, der Style wurde nicht richtig geladen. Ist behoben, sieht jetzt wieder lesbar aus 🙂
Gruß, Jan