Website-Suche

rdiff-backup - Ein inkrementelles Remote-Backup-Tool für Linux


rdiff-backup ist ein leistungsstarkes und einfach zu bedienendes Python-Skript für lokale/entfernte inkrementelle Sicherungen, das auf jedem POSIX-Betriebssystem wie Linux, Mac OS X oder Cygwin funktioniert. Es vereint die bemerkenswerten Funktionen eines Spiegels und eines inkrementellen Backups.

Bezeichnenderweise werden Unterverzeichnisse, Entwicklungsdateien, Hardlinks und kritische Dateiattribute wie Berechtigungen, uid/gid-Besitz, Änderungszeiten, erweiterte Attribute, ACLs und Ressourcenzweige beibehalten. Es kann in einem bandbreiteneffizienten Modus über eine Pipe arbeiten, ähnlich wie das beliebte rsync-Backup-Tool.

rdiff-backup sichert ein einzelnes Verzeichnis über ein Netzwerk mit SSH in ein anderes, was bedeutet, dass die Datenübertragung verschlüsselt und somit sicher ist. Das Zielverzeichnis (auf dem entfernten System) ist am Ende eine exakte Kopie des Quellverzeichnisses, jedoch werden zusätzliche Reverse-Diffs in einem speziellen Unterverzeichnis im Zielverzeichnis gespeichert, was es ermöglicht, Dateien wiederherzustellen, die vor einiger Zeit verloren gegangen sind.

Abhängigkeiten

Um rdiff-backup unter Linux zu verwenden, müssen Sie die folgenden Pakete auf Ihrem System installiert haben:

  • Python v2.2 oder höher
  • librsync v0.9.7 oder höher
  • Die Python-Module pylibacl und pyxattr sind optional, aber für die Unterstützung der POSIX-Zugriffskontrollliste (ACL) bzw. der erweiterten Attributunterstützung erforderlich.
  • rdiff-backup-statistics erfordert Python v2.4 oder höher.

So installieren Sie rdiff-backup unter Linux

Wichtig: Wenn Sie über ein Netzwerk arbeiten, müssen Sie rdiff-backup auf beiden Systemen installieren, vorzugsweise müssen beide Installationen von rdiff-backup genau die gleiche Version haben.

Das Skript ist bereits in den offiziellen Repositories der Mainstream-Linux-Distributionen vorhanden, führen Sie einfach den folgenden Befehl aus, um rdiff-backup sowie seine Abhängigkeiten zu installieren:

Intall rdiff-backup Auf Ubuntu

Zur Installation von Rdiff-Backup auf Ubuntu Focal oder Debian Bullseye oder neuer (hat 2.0).


sudo apt-get update
sudo apt-get install librsync-dev rdiff-backup

Zur Installation von Rdiff-Backup auf Ubuntu-Backports für ältere Versionen (benötigt eine Backportierung 2.0).


sudo add-apt-repository ppa:rdiff-backup/rdiff-backup-backports
sudo apt update
sudo apt install rdiff-backu

Unter CentOS/RHEL 8

So installieren Sie Rdiff-Backup unter CentOS und RHEL 8 (von COPR).


sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup

Unter CentOS/RHEL 7

Zur Installation von Rdiff-Backup unter CentOS und RHEL 7 (von COPR).


sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup

Unter CentOS/RHEL 6


sudo yum install centos-release-scl
sudo yum install rh-python36 gcc libacl-devel
scl enable rh-python36 bash
sudo pip install rdiff-backup pyxattr pylibacl
echo 'exec scl enable rh-python36 -- rdiff-backup "$@"' | sudo tee /usr/bin/rdiff-backup
sudo chmod +x /usr/bin/rdiff-backup

Auf Fedora

Um Rdiff-Backup auf Fedora 32+ zu installieren.


sudo dnf install rdiff-backup

So verwenden Sie rdiff-backup unter Linux

Wie ich bereits erwähnt habe, verwendet rdiff-backup SSH, um eine Verbindung zu entfernten Rechnern in Ihrem Netzwerk herzustellen, und die Standardauthentifizierung in SSH ist die Benutzername/Passwort-Methode, die normalerweise menschliche Interaktion erfordert.

Um jedoch Aufgaben wie automatische Sicherungen mit Skripten und darüber hinaus zu automatisieren, müssen Sie die passwortlose SSH-Anmeldung mit SSH-Schlüsseln konfigurieren, da SSH-Schlüssel die Vertrauensstellung zwischen zwei Linux-Servern erhöhen, um die Dateisynchronisierung oder -übertragung zu vereinfachen.

Nachdem Sie SSH Passwordless Login eingerichtet haben, können Sie das Skript mit den folgenden Beispielen verwenden.

Sichern Sie Dateien auf eine andere Partition

Im folgenden Beispiel wird das Verzeichnis /etc in einem Backup-Verzeichnis auf einer anderen Partition gesichert:

$ sudo rdiff-backup /etc /media/aaronkilik/Data/Backup/mint_etc.backup

Um ein bestimmtes Verzeichnis sowie seine Unterverzeichnisse auszuschließen, können Sie die Option --exclude wie folgt verwenden:

$ sudo rdiff-backup --exclude /etc/cockpit --exclude /etc/bluetooth /media/aaronkilik/Data/Backup/mint_etc.backup

Wir können alle Gerätedateien, Fifo-Dateien, Socket-Dateien und symbolischen Links mit der Option --include-special-files wie folgt einbeziehen:

$ sudo rdiff-backup --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup

Es gibt zwei weitere wichtige Flags, die wir für die Dateiauswahl setzen können; --max-file-size size, die Dateien ausschließt, die größer als die angegebene Größe in Bytes sind, und --min-file-size size, die Dateien ausschließt, die kleiner als die angegebene Größe in Bytes sind:

$ sudo rdiff-backup --max-file-size 5M --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup

Sichern Sie Remote-Dateien auf einem lokalen Linux-Server

Für die Zwecke dieses Abschnitts verwenden wir:

Remote Server (tecmint)	        : 192.168.56.102 
Local Backup Server (backup) 	: 192.168.56.10

Wie bereits erwähnt, müssen Sie auf beiden Rechnern die gleiche Version von rdiff-backup installieren, versuchen Sie nun, die Version auf beiden Rechnern wie folgt zu überprüfen:

$ rdiff-backup -V

Erstellen Sie auf dem Backup-Server ein Verzeichnis, in dem die Backup-Dateien wie folgt gespeichert werden:

# mkdir -p /backups

Führen Sie nun vom Backup-Server aus die folgenden Befehle aus, um eine Sicherung der Verzeichnisse /var/log/ und /root vom Remote-Linux-Server 192.168.56.102 in /backups zu erstellen:

# rdiff-backup [email ::/var/log/ /backups/192.168.56.102_logs.backup
rdiff-backup [email ::/root/ /backups/192.168.56.102_rootfiles.backup

Der folgende Screenshot zeigt die Root-Datei auf dem Remote-Server 192.168.56.102 und die gesicherten Dateien auf dem Back-Server 192.168.56.10:

Beachten Sie das Verzeichnis rdiff-backup-data, das im Backup-Verzeichnis erstellt wurde, wie im Screenshot zu sehen, es enthält wichtige Daten über den Backup-Prozess und inkrementelle Dateien.

Auf dem Server 192.168.56.102 wurden nun zusätzliche Dateien zum Stammverzeichnis hinzugefügt, wie unten gezeigt:

Lassen Sie uns den Backup-Befehl noch einmal ausführen, um die geänderten Daten zu erhalten, wir können die Option -v[0-9] (wobei die Zahl den Ausführlichkeitsgrad angibt, Standard ist 3, der stumm ist) verwenden, um die Ausführlichkeitsfunktion festzulegen:

# rdiff-backup -v4 [email ::/root/ /backups/192.168.56.102_rootfiles.backup 

Und um die Anzahl und das Datum der teilweisen inkrementellen Sicherungen aufzulisten, die im Verzeichnis /backups/192.168.56.102_rootfiles.backup enthalten sind, können wir Folgendes ausführen:

# rdiff-backup -l /backups/192.168.56.102_rootfiles.backup/

Automatisieren von rdiff-back-Backups mit Cron

Wir können zusammenfassende Statistiken nach einem erfolgreichen Backup mit dem --print-statistics ausgeben. Wenn wir diese Option jedoch nicht festlegen, sind die Informationen weiterhin in der Sitzungsstatistikdatei verfügbar. Lesen Sie mehr über diese Option im Abschnitt STATISTIKEN der Manpage.

Und das Flag –remote-schema ermöglicht es uns, eine alternative Methode zum Herstellen einer Verbindung mit einem Remotecomputer anzugeben.

Beginnen wir nun damit, ein backup.sh Skript auf dem Backup-Server 192.168.56.10 wie folgt zu erstellen:

# cd ~/bin
vi backup.sh

Fügen Sie der Skriptdatei die folgenden Zeilen hinzu.

#!/bin/bash

#This is a rdiff-backup utility backup script

#Backup command
rdiff-backup --print-statistics --remote-schema 'ssh -C %s "sudo /usr/bin/rdiff-backup --server --restrict-read-only  /"'  [email ::/var/logs  /backups/192.168.56.102_logs.back

#Checking rdiff-backup command success/error
status=$?
if [ $status != 0 ]; then
        #append error message in ~/backup.log file
        echo "rdiff-backup exit Code: $status - Command Unsuccessful" >>~/backup.log;
        exit 1;
fi

#Remove incremental backup files older than one month
rdiff-backup --force --remove-older-than 1M /backups/192.168.56.102_logs.back

Speichern Sie die Datei, beenden Sie sie, und führen Sie dann den folgenden Befehl aus, um das Skript der crontab auf dem Sicherungsserver 192.168.56.10 hinzuzufügen:

# crontab -e

Fügen Sie diese Zeile hinzu, um Ihr Sicherungsskript täglich um Mitternacht auszuführen:

0   0  *  *  * /root/bin/backup.sh > /dev/null 2>&1

Speichern Sie die Crontab und schließen Sie sie, jetzt haben wir den Backup-Prozess erfolgreich automatisiert. Stellen Sie sicher, dass es wie erwartet funktioniert.

Lesen Sie die rdiff-backup-Manpage durch, um weitere Informationen, ausführliche Verwendungsoptionen und Beispiele zu erhalten:

# man rdiff-backup

rdiff-backup Startseite: http://www.nongnu.org/rdiff-backup/

Das war's fürs Erste! In diesem Tutorial haben wir Ihnen gezeigt, wie Sie rdiff-backup installieren und grundsätzlich verwenden, ein einfach zu bedienendes Python-Skript für lokale/entfernte inkrementelle Sicherungen unter Linux. Teilen Sie uns Ihre Gedanken über den Feedback-Bereich unten mit.

Verwandte Artikel: