ubuntuusers.de

dirvish

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte teste diesen Artikel für eine Ubuntu-Version, welche aktuell unterstützt wird. Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

./logo.png dirvish 🇬🇧 ist ein auf rsync und ssh aufsetzendes Programm, das Backups von entfernten Rechnern und Laufwerken erstellt, aber auch von lokalen Medien und Ordnern. Einer der Vorteile gegenüber "großen" Backup-Lösungen wie z.B. Bacula ist, dass es vergleichsweise schnell und unkompliziert einzurichten und zu administrieren ist. Dirvish kommt ohne graphische Benutzeroberfläche aus und erzeugt in jeweiligen Zielverzeichnis Snapshots der zu sichernden Quelle. Es eignet sich hervorragend als Backup-Lösung in kleinen "Rechenzentren" mit überwiegend Linux-Systemen. Windows-Systeme lassen sich zwar ebenfalls sichern, jedoch nur unverschlüsselt via Samba (rsync muss dann mittels Cygwin 🇬🇧 bereitgestellt werden).

Weitere Programme und Grundsätzliches ist im Artikel Datensicherung zu finden.

Installation

Voraussetzungen

Auf den zu sichernden Systemen wird rsync und ssh benötigt. Das Ziel-Dateisystem muss Hardlinks unterstützen.

Paketquellen

Die Installation erfolgt über das Paket[1]:

  • dirvish (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install dirvish 

Oder mit apturl installieren, Link: apt://dirvish

Konfiguration

Die zentrale Konfigurationsdatei auf dem Backup-Server ist die Datei /etc/dirvish/master.conf. Des Weiteren gibt es noch einzelne Konfigurationsdateien für die jeweiligen Backup-Jobs, dazu aber später. Hier ein Beispiel:

bank:
#       /backup/dirvish/server
        /backup/dirvish/laptop
#       /backup/dirvish/firewall
exclude:
        lost+found/
        proc/
        core
Runall:
#       serverroot      03:00
#       serverboot      03:00
#       serverhome      03:00
#       serveropt       03:00
#       serverspare     03:00
#       laptoproot      03:00
        laptophome      12:00
#       laptopopt       03:00
#       laptopspare     03:00
#       firewallroot    03:00
#       firewallboot    03:00

expire-default:  never

# keep the sunday backups forever, the dailies for 3 months
expire-rule:
#       MIN     HR      DOM     MON     DOW     STRFTIME_FMT
        *       *       *       *       *       +3 months
        *       *       *       *       1       never

#pre-server: /usr/local/sbin/dirvish-pre

#post-server: /usr/local/sbin/dirvish-post

#speed-limit: 10

Zur Erläuterung dient die nachfolgende Tabelle:

Optionen
Abschnitt Beschreibung
bank: Speicherort des Backups
exclude: globale Ausnahmen
Runall: regelmäßige Sicherung
expire-default: Standard-Aufbewahrungszeit der Backups
expire-rule: Aufbewahrungsregeln
pre- und post-: Skripte vor und nach dem Backup ausführen
speed-limit: Maximale Übertragungsgeschwindigkeit der Sicherung festlegen. Die Einheit ist Megabit pro Sekunde. Ist auch bei lokaler Sicherung sinnvoll, um auf dem Rechner flüssig arbeiten zu können.

Benutzung

Für den Anfang soll erst einmal nur das Homeverzeichnis eines Laptops gesichert werden. Die Bezeichnung (engl. "Vault" oder Tresor) laptophome dient zur Identifikation. Die Verzeichnisse und Konfigurationsdateien werden auf dem Backup-Server von Hand angelegt[2][3][4]:

sudo mkdir -p /backup/dirvish/laptop/laptophome/dirvish 

In diesem Verzeichnis wird die Konfigurationsdatei /backup/dirvish/laptop/laptophome/dirvish/default.conf für dieses Vault erstellt:

client: laptop
tree: /home
xdev: true
index: gzip
image-default: %Y%m%d
exclude:
      flobian/download

Damit wird vom Client (der Laptop) die Partition bzw. der Ordner /home in separate Verzeichnisse im Format YYYY-MM-TT gesichert. Nicht gesichert werden soll das Verzeichnis /home/<Benutzer>/download. Der Index des gesicherten Snapshots wird dabei mit gzip komprimiert.

Hinweis:

Standardmäßig benutzt rsync und damit auch dirvish bei nicht-lokalen Clients SSH. Dieses verschlüsselt die Verbindung, was innerhalb einer sicheren Netzwerkumgebung wie einem Home-LAN unnötig Geschwindigkeit kosten kann, insbesondere bei Geräten mit schwachen CPUs wie den meisten NAS (Network Attached Storage). Um stattdessen eine unverschlüsselte Verbindung zu einem rsync-Daemon auf dem Zielsystem aufzubauen, stellt man dem Pfadnamen in tree: einen Doppelpunkt voran. Zusätzlich muss man den betreffenden Modulnamen aus der /etc/rsyncd.conf des Zielsystems vor dem Pfad angeben. Im obigen Beispiel also tree: :modulname/home. Nun erzeugt dirvish die Zieladresse im nötigen Format für rsync (user@host::modulname/pfad), so dass dieses sich mit seinem Daemon rsyncd auf dem Zielsystem verbindet.

Mit dem ersten Backup muss das Vault initialisiert werden:

dirvish --vault laptophome --init 

Der Client muss über den angegebenen Namen im Netzwerk erreichbar sein. Um nicht jedes mal das SSH-Kennwort des Clients eingeben zu müssen, sollte die Authentifizierung über Public-Keys eingerichtet werden.

Die Initialisierung legt das erste Backup an, mit dem folgende Backups mittels Hardlinks verlinkt werden. Nur die in der Quelle geänderten oder hinzugekommenen Dateien werden in ein neues Backup tatsächlich kopiert, was Kopierzeit und Festplattenplatz spart. Jedes Backup ist aber trotzdem vollständig und nicht auf die vorherigen angewiesen, die danach auch mittels dirvish-expire automatisiert gelöscht werden können (siehe den Abschnitt Automatische Sicherung).

Nach der Initialisierung - die je nach Menge der Daten eine Weile dauert - wird das Vault nun bei jedem dirvish-runall gesichert. Allerdings nur einmal pro Tag - nach vorgegebenen Zeitplan in der /etc/dirvish/master.conf.

Automatische Sicherung

Eine Datensicherung, die nicht regelmäßig durchgeführt wird, hat nicht viel Wert. Die Version von dirvish aus den offiziellen Paketquellen installiert standardmäßig einen Cron-Job[5] für eine tägliche Sicherung um 22:04 Uhr:

cat /etc/cron.d/dirvish 
# /etc/cron.d/dirvish: crontab fragment for dirvish
# run every night
4 22 * * *     root     /etc/dirvish/dirvish-cronjob

Dieser Cronjob führt ein dirvish-expire, gefolgt von dirvish-runall, aus. Falls /backup nicht gemountet ist, wird das vorher (automatisch) versucht.

Achtung!

Löschen (dirvish-expire) und Erstellen einer neuen Sicherung (dirvish-runall) dürfen sich auf keinen Fall überschneiden! Beide Jobs brauchen ggf. sehr viel Rechenzeit, und müssen daher mit zeitlich ausreichenden Abstand geplant werden.

Backups kontrollieren

Besonders nach dem Einrichten, aber auch danach sollte immer wieder kontrolliert werden, ob das Backup noch regelmäßig automatisch durchgeführt wird.

Im Vault-Ordner sehen die Backups dann so aus:

ls -al /backup/dirvish/laptop/laptophome 

Ausgabe:

insgesamt 20
drwxr-xr-x 5 root root 4096 11. Jan 11:25 .
drwxr-xr-x 5 root root 4096  7. Jan 14:27 ..
drwxr-xr-x 3 root root 4096  7. Jan 14:23 20100107
drwxr-xr-x 3 root root 4096  8. Jan 22:04 20100108
drwxr-xr-x 2 root root 4096  7. Jan 14:23 dirvish

Da nur einmal alle Daten kopiert werden und bei den folgenden Kopien nur die Änderungen Platz verbrauchen, sind alle folgenden Kopien kleiner, es wird aber trotzdem das vollständige Dateisystem in den Ordner 20100108 und folgende abgebildet.

du -sch /backup/dirvish/laptop/laptophome/* 

Ausgabe:

14G     /backup/dirvish/laptop/laptophome/20100107
613M    /backup/dirvish/laptop/laptophome/20100108
12K     /backup/dirvish/laptop/laptophome/dirvish
15G     insgesamt

Anhand der Verzeichnisse und ihrer Größe kann das korrekte Backup geprüft werden.

Nach diesem Beispiel mit laptophome können jetzt weitere Partitionen von laptop oder anderen Rechnern entsprechend konfiguriert werden.

Tipps und Tricks

Ältere Backups vorzeitig löschen.

Um ältere Backups vor ihrem Ablaufdatum zu löschen, übergibt man dem Befehl dirvish-expire über die Option --time eine andere Referenzzeit als den derzeitigen Tag. Dabei können absolute und relative Zeitangaben verwendet werden:

dirvish-expire --time 2020-12-01   # Setzt das Referenzdatum auf den 1. Dezember 2020.
dirvish-expire --time "+6 months"  # Setzt das Referenzdatum sechs Monate in die Zukunft.

Alle möglichen Zeitangaben können der Dokumentation zur Perl-Funktion Time::ParseDate 🇬🇧 entnommen werden.

Diese Revision wurde am 27. August 2020 13:52 von V_for_Vortex erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Backup, Sicherheit, Netzwerk, Shell, System, Server, Datensicherung