Website-Suche

Richten Sie einen Sicherungsserver mit Rsnapshot unter Linux ein


Rsnapshot-Tutorial für Anfänger

In dieser Anleitung wird erklärt, was Rsnapshot ist, wie man Rsnapshot unter Linux installiert und wie man einen Sicherungsserver mit Rsnapshot unter Linux einrichtet.

1. Einleitung

Rsnapshot ist ein auf rsync basierendes Dateisystem-Snapshot-Dienstprogramm für Linux- und Unix-ähnliche Betriebssysteme. Es ermöglicht Ihnen, auf einfache Weise periodische Snapshots von lokalen Maschinen und Remote-Maschinen über SSH zu erstellen.

Das Gute an rsnapshot ist, dass es, wann immer möglich, in großem Umfang Hardlinks nutzt, um den erforderlichen Speicherplatz erheblich zu reduzieren.

Da rsnapshot nur eine feste Anzahl von Snapshots speichert, wächst der belegte Speicherplatz nicht kontinuierlich.

Rnapshot ist eine kostenlose Open-Source-Backup-Anwendung, die inkrementelle Backups unterstützt. Es ist vollständig in Perl geschrieben und sollte auf den meisten Unix-ähnlichen Systemen funktionieren.

Lassen Sie uns ohne weitere Umschweife fortfahren und sehen, wie Sie einen Backup-Server mit Rsnapshot unter Linux installieren, konfigurieren und einrichten.

2. Installieren Sie Rsnapshot unter Linux

Rsnapshot ist für viele Linux-Distributionen gepackt.

Installieren Sie Rsnapshot unter Alpine Linux:

sudo apk add rsnapshot rsync

Installieren Sie Rsnapshot unter Arch Linux, EndeavourOS und Manjaro Linux:

sudo pacman -S rsnapshot rsync

Installieren Sie Rsnapshot in Debian, Ubuntu, Linux Mint, Pop_OS!:

sudo apt install rsnapshot rsync

Installieren Sie Rsnapshot unter CentOS, Fedora, RHEL, AlmaLinux, Rocky Linux:

Rsnapshot ist in den Standard-Repositorys von Unternehmensbetriebssystemen wie CentOS, RHEL, AlmaLinux und Rocky Linux nicht verfügbar. Sie müssen das [EPEL]-Repository aktivieren, um Rsnapshot installieren zu können.

sudo dnf install epel-release

Installieren Sie dann Rsnapshot mit dem folgenden Befehl:

sudo dnf install rsnapshot rsync

Installieren Sie Rsnapshot in openSUSE:

sudo zypper install rsnapshot rsync

3. Richten Sie den Sicherungsserver mit Rsnapshot unter Linux ein

Für diesen Leitfaden verwende ich zwei Testsysteme.

Einer ist ein Backup-Server, der mit AlmaLinux 8 läuft, und ein anderer fungiert als Client-System. Der Client läuft mit dem Fedora 34-Desktop.

Die Details des Backup-Servers und -Clients sind unten aufgeführt.

Sicherungsserver:

  • Betriebssystem: AlmaLinux 8 64-Bit-Minimalsystem
  • IP-Adresse: 192.168.122.25/24
  • Rsnapshot-Stammverzeichnis: /rsnapbackup
  • Verzeichnis zum Sichern: /home/ostechnix/data/

Kunde:

  • Betriebssystem: Fedora Workstation 34
  • IP-Adresse: 192.168.225.37/24
  • Verzeichnis zum Sichern: /home/sk/data/

3.1. Richten Sie die passwortlose SSH-Authentifizierung im Backup-Server ein

Um Dateien eines Remote-Client-Systems über SSH zu sichern, müssen Sie für Remote-Client-Systeme eine passwortlose SSH-Authentifizierung einrichten, damit sich das Backup automatisch ohne Passwort mit dem Client-System verbindet und die Client-Daten sichert.

Melden Sie sich als root-Benutzer an und erstellen Sie ein SSH-Schlüsselpaar in unserem Backup-Serversystem.

ssh-keygen

Geben Sie keine Passphrase ein, da wir möchten, dass sich diese Systeme ohne Benutzereingriff miteinander verbinden können:

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:k/yIpwuk2lqEVxW4O0/6evTjquxCcGffQU0Kgm1ZvPk root@alma8
The key's randomart image is:
+---[RSA 3072]----+
|   o.==. o.      |
|  . =o.....      |
|   ... +.        |
|....+ o...       |
|.ooo.o oS.       |
| o.oo +.E+       |
| .o .*..o .      |
| +....ooo        |
|o..o===+..       |
+----[SHA256]-----+

Richten Sie die passwortlose SSH-Authentifizierung ein

Kopieren Sie als Nächstes den öffentlichen SSH-Schlüssel auf alle Ihre Remote-Client-Systeme.

ssh-copy-id sk@192.168.225.37

Ersetzen Sie sk und 192.168.225.37 im obigen Befehl durch den Benutzernamen und die IP-Adresse Ihres Remote-Systems. Geben Sie Ihr Clientsystem-Benutzerkennwort ein, um die öffentliche Schlüsseldatei zu kopieren:

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
sk@192.168.225.37's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'sk@192.168.225.37'"
and check to make sure that only the key(s) you wanted were added.

Hier ist 192.168.225.37 die IP-Adresse meines Remote-Client-Systems (d. h. Fedora Desktop).

Jetzt können Sie ohne Passwort eine SSH-Verbindung zum Clientsystem herstellen.

Wiederholen Sie den obigen Befehl, um den öffentlichen SSH-Schlüssel auf alle Ihre Client-Systeme zu kopieren und eine passwortlose Authentifizierung einzurichten.

Als nächstes müssen wir den Backup-Server konfigurieren.

3.2. Konfiguration des Rsnapshot-Sicherungsservers

Erstellen Sie ein Root-Backup-Verzeichnis, um alle Backups Ihrer Server- und Client-Systeme zu speichern.

Für die Zwecke dieser Anleitung verwende ich /rsnapbackup/ als Root-Sicherungsverzeichnis. Es ist das Verzeichnis, in dem ich alle Backups speichern werde.

Sie können einen eigenen Speicherort Ihrer Wahl zum Speichern der Backups definieren.

Lassen Sie uns das Root-Backup-Verzeichnis auf unserem Backup-Server mit folgendem Befehl erstellen:

mkdir /rsnapbackup

Als nächstes müssen wir das Stammsicherungsverzeichnis, die Verzeichnisse, die Sie sichern möchten, und die Sicherungsintervalle in der Rsnapshot-Standardkonfigurationsdatei /etc/rsnapshot.conf bearbeiten und aktualisieren.

Bevor Sie die Konfiguration bearbeiten, wird immer empfohlen, eine Sicherungskopie der Standardkonfigurationsdatei zu erstellen, falls Sie rsnapshot erneut konfigurieren müssen.

cp /etc/rsnapshot.conf /etc/rsnapshot.conf.bak

Bearbeiten Sie nun die rsnapshot-Konfigurationsdatei mit dem folgenden Befehl:

nano /etc/rsnapshot.conf

Die Standardkonfiguration sollte problemlos funktionieren. Sie müssen lediglich die Backup-Verzeichnisse und Backup-Intervalle definieren.

Hinweis: Bitte beachten Sie, dass Sie am Ende der Verzeichnisnamen in der Datei /etc/rsnapshot.conf einen abschließenden Schrägstrich angeben sollten. Angenommen, Sie müssen den Verzeichnisnamen als /rsnapbackup/ angeben, nicht jedoch als /rsnapbackup. Außerdem müssen Sie Tabulatoren (keine Leerzeichen) zwischen Elementen/Feldern verwenden.

Lassen Sie uns zunächst das Root-Backup-Verzeichnis einrichten, d. h. das Verzeichnis definieren, in dem wir die Dateisystem-Backups speichern möchten. In unserem Fall speichere ich die Backups im Verzeichnis /rsnapbackup/.

All snapshots will be stored under this root directory.
#
snapshot_root   /rsnapbackup/

Definieren Sie das Rsnapshot-Stammverzeichnis

Auch hier sollten Sie die TAB-Taste zwischen dem Element snapshot_root und Ihrem Sicherungsverzeichnis verwenden.

Hinweis: Rsnapshot unterstützt kein Remote-Snapshot-Root über SSH.

Scrollen Sie ein wenig nach unten und stellen Sie sicher, dass die folgenden Zeilen (fett markiert) unkommentiert sind:

[...]
#################################
EXTERNAL PROGRAM DEPENDENCIES #
#################################

LINUX USERS: Be sure to uncomment "cmd_cp". This gives you extra features.
EVERYONE ELSE: Leave "cmd_cp" commented out for compatibility.
#
See the README file or the man page for more details.
#
cmd_cp /usr/bin/cp

uncomment this to use the rm program instead of the built-in perl routine.
#
cmd_rm /usr/bin/rm

rsync must be enabled for anything to work. This is the only command that
must be enabled.
#
cmd_rsync /usr/bin/rsync

Uncomment this to enable remote ssh backups over rsync.
#
cmd_ssh /usr/bin/ssh

Comment this out to disable syslog support.
#
cmd_logger /usr/bin/logger

Uncomment this to specify the path to "du" for disk usage checks.
If you have an older version of "du", you may also want to check the
"du_args" parameter below.
#
cmd_du /usr/bin/du

[...]

Kommentieren Sie externe Programmabhängigkeiten aus

Als nächstes müssen wir die Backup-Intervalle definieren:

#########################################
BACKUP LEVELS / INTERVALS #
Must be unique and in ascending order #
e.g. alpha, beta, gamma, etc. #
#########################################

retain alpha 6
retain beta 7
retain gamma 4
#retain delta 3

Definieren Sie Backup-Level

Hier bedeutet retain alpha 6, dass bei jeder Ausführung von rsnapshot alpha ein neuer Snapshot erstellt, die alten rotiert und die letzten sechs Backups in den genannten Verzeichnissen aufbewahrt werden alpha.0, alpha.1,... alpha.5 im Rsnapshot-Stammverzeichnis. Wenn der Befehl dann das nächste Mal ausgeführt wird, wird das Verzeichnis alpha.5 gelöscht.

Wenn wir rsnapshot beta jedes Mal aufrufen, wird in ähnlicher Weise ein neuer Snapshot erstellt, alte rotiert und die letzten 7 Backups (delta.0 - delta.6) beibehalten.

Bitte beachten Sie, dass alpha, beta, gamma und delta lediglich die Namen zur Definition der Sicherungsintervalle sind. Sie können auch eigene Intervalle definieren.

Sie können beispielsweise die Standard-Backup-Ebenen durch einige aussagekräftige Namen Ihrer Wahl wie unten ersetzen:

retain  hourly  24
retain  daily   7
retain  weekly  4
retain  monthly 12

Wenn wir rnsapshot stündlich aufrufen, wird ein neues Backup im Verzeichnis /hourly.0/ erstellt. Wenn Sie diesen Befehl jedes Mal ausführen, werden weiterhin neue Verzeichnisse bis zu /hourly.23/ erstellt.

Dies gilt auch für tägliche, wöchentliche und monatliche Backups.

Entfernen Sie als Nächstes das Kommentarzeichen der folgenden Zeile, wenn Sie die Protokolldatei für Rsnapshot festlegen möchten:

logfile /var/log/rsnapshot

Wenn Sie den SSH-Standardport geändert haben, müssen Sie diese Zeile auskommentieren und hier die gültige Portnummer angeben:

ssh_args -p 2222

Abschließend müssen Sie die Verzeichnisse definieren, die Sie sichern möchten. Suchen Sie die folgenden Anweisungen in Ihrer rsnapshot-Konfigurationsdatei und legen Sie die Speicherorte des Sicherungsverzeichnisses fest.

###############################
### BACKUP POINTS / SCRIPTS ###
###############################

LOCALHOST
backup /home/ostechnix/data/ myserverbackup/

Hier werde ich den Inhalt des Verzeichnisses /home/ostechnix/data/ sichern und ihn in /rsnapbackup/myserverbackup/ speichern -Verzeichnis.

Hinweis: Bitte beachten Sie, dass ich in der obigen Konfiguration nicht den vollständigen Pfad (d. h. /rsnapbackup/myserverbackup/) angegeben habe. Denn wir haben das Root-Backup-Verzeichnis bereits erwähnt. Daher müssen wir hier kein Rsnapshot-Stammverzeichnis angeben.

Definieren Sie ebenfalls den Backup-Speicherort Ihres Remote-Client-Systems.

REMOTEHOST
backup sk@192.168.225.37:/home/sk/data/ myclientbackup/

Hier werde ich den Inhalt des Verzeichnisses /home/sk/data/ meines Remote-Client-Systems sichern und ihn in /rsnapbackup/myclientbackup speichern /-Verzeichnis auf meinem Backup-Server.

Bitte beachten Sie auch hier, dass ich in der obigen Konfiguration nicht den vollständigen Pfad (/rsnapbackup/myclientbackup/ ) angegeben habe. Denn wir haben das Root-Sicherungsverzeichnis bereits definiert.

Definieren Sie Verzeichnisse für die Sicherung in Rsnapshot

Speichern und schließen Sie die Datei /etc/rsnapshot.conf.

Nachdem Sie alle Änderungen vorgenommen haben, führen Sie den folgenden Befehl aus, um zu überprüfen, ob die Konfigurationsdatei syntaktisch gültig ist.

rsnapshot configtest

Wenn alles in Ordnung ist, sehen Sie die folgende Ausgabe.

Syntax OK

3.3. Backups starten

Führen Sie den folgenden Befehl aus, um die Sicherung mithilfe von Rsnapshot manuell zu starten.

rsnapshot alpha

Die erste Sicherung dauert je nach Größe der Sicherungen einige Minuten bis mehrere Stunden. Die nachfolgenden Sicherungen werden viel schneller sein, da Rsnapshot nur die Unterschiede sichert.

Ebenso können Sie weitere Backup-Ebenen starten:

rsnapshot beta
rsnapshot gamma
rsnapshot daily

3.4. Überprüfung und Anzeige von Backups

Lassen Sie uns prüfen, ob die Backups wirklich im Root-Backup-Verzeichnis auf dem Backup-Server gespeichert sind.

ls /rsnapbackup/

Sie sehen die folgende Ausgabe:

alpha.0

Überprüfen Sie den Inhalt des Verzeichnisses alpha.0:

ls /rsnapbackup/alpha.0/

Sie werden sehen, dass zwei Verzeichnisse automatisch erstellt werden, eines für die lokale Sicherung (myserverbackup) und eines für Remote-Systeme (myclientbackup).

myclientbackup  myserverbackup

Um die Backups des Client-Systems zu überprüfen, führen Sie Folgendes aus:

ls /rsnapbackup/alpha.0/myclientbackup/

Überprüfen Sie die Sicherungen des Serversystems (lokales System):

ls /rsnapbackup/alpha.0/myserverbackup/

Anzeigen von Rsnapshot-Backups

Wenn Sie Rnaspshot every ausführen, werden neue Verzeichnisse wie alpha.0, alpha.1 usw. erstellt, abhängig von der Anzahl der von Ihnen konfigurierten Aufbewahrungsstufen.

# ls /rsnapbackup/
alpha.0  alpha.1

Das Verzeichnis alpha.0 enthält die aktuellste Sicherung.

3.5. Planen Sie Backups

Sie müssen den Befehl rsnapshot nicht jedes Mal ausführen, um Backups zu erstellen. Definieren Sie einfach einen Cron-Job, um die Backup-Jobs in regelmäßigen Abständen zu automatisieren.

Erstellen Sie dazu eine neue Cron-Job-Datei für rsnapshot:

nano /etc/cron.d/rsnapshot

Fügen Sie die folgenden Zeilen hinzu:

0 */4 * * *     /usr/bin/rsnapshot alpha
50 23 * * *     /usr/bin/rsnapshot beta
00 22 1 * *     /usr/bin/rsnapshot delta

Die erste Zeile gibt an, dass jeden Tag sechs Alpha-Schnappschüsse (zu 0, 4, 8, 12, 16 und 20 Stunden) und jede Nacht Beta-Schnappschüsse gemacht werden um 23:50 Uhr und Delta-Schnappschüsse werden am ersten Tag jedes Monats um 22:00 Uhr erstellt. Sie können den Zeitpunkt nach Ihren Wünschen anpassen. Speichern und schließen Sie die Datei.

Erledigt! Von nun an sichert Rsnapshot Ihre Daten automatisch zum definierten Zeitpunkt.

Weitere Einzelheiten finden Sie in den Manpages.

man rsnapshot

4. Dateien wiederherstellen

Das Wiederherstellen von Dateien ist einfach! Wenn Sie sudo- oder root-Zugriff auf den Sicherungsserver haben, können Sie die Dateien einfach aus dem Rsnapshot-Stammverzeichnis kopieren, d. h. /rsnapbackup/.

5. Schlussfolgerung

Das Einrichten eines Backup-Servers mit Rsnapshot unter Linux ist gar nicht so schwierig. Die Erstkonfiguration kann schwierig erscheinen und etwas Zeit in Anspruch nehmen. Aber sobald Sie den Rsnapshot-Sicherungsserver richtig eingerichtet haben, funktioniert er sofort und ohne Benutzereingriff.

Ressourcen:

  • Rsnapshot-Website
  • Rsnapshot GitHub-Repository

Verwandte Lektüre:

  • So sichern Sie Ihr gesamtes Linux-System mit Rsync
  • So sichern Sie Dateien und Verzeichnisse mit Rsync unter Linux
  • So sichern und wiederherstellen Sie Dateien mit Deja Dup unter Linux
  • So sichern und wiederherstellen Sie ein Linux-System mit Timeshift
  • So synchronisieren Sie Dateien mit Unison unter Linux
  • So synchronisieren Sie lokale und Remote-Verzeichnisse unter Linux
  • So synchronisieren Sie Dateien und Verzeichnisse mit Zaloha.sh
  • CYA - System-Snapshot- und Wiederherstellungsdienstprogramm für Linux
  • Restic - Eine schnelle, sichere und effiziente Backup-Anwendung

Verwandte Artikel