Es zeigt sich, dass man nie zu paranoid bezüglich der Systemsicherungen sein kann. Wenn es darum geht, wertvolle Daten zu schützen und zu erhalten, ist es am besten, die extra Meile zu gehen und sicherzustellen, dass man sich im Bedarfsfall auf seine Sicherungen verlassen kann.
Auch heute, wenn einige Cloud- und Hosting-Anbieter automatisierte Backups für VPS zu relativ geringen Kosten anbieten, ist es ratsam, Ihre eigene Backup-Strategie mit eigenen Werkzeugen zu erstellen, um Geld zu sparen und es dann vielleicht für zusätzlichen Speicherplatz oder einen größeren VPS verwenden zu können.
Klingt interessant? In diesem Artikel zeigen wir Ihnen, wie Sie ein Tool namens Duplicity verwenden, um Dateien und Verzeichnisse zu sichern und zu verschlüsseln. Darüber hinaus wird uns die Verwendung inkrementeller Backups für diese Aufgabe helfen, Speicherplatz zu sparen.
Das gesagt, legen wir los.
Installation des Duplicity-Backup-Tools in Linux
Um duplicity in RHEL-basierten Distributionen zu installieren, müssen Sie zunächst das EPEL-Repository aktivieren (diesen Schritt können Sie überspringen, wenn Sie Fedora selbst verwenden).
Auf RHEL 9:
subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
Auf CentOS 9, AlmaLinux 9, Rocky Linux 9:
dnf config-manager --set-enabled crb dnf install epel-release
Auf RHEL 8:
subscription-manager repos --enable codeready-builder-for-rhel-8-$(arch)-rpms dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
Auf CentOS 9, AlmaLinux 9, Rocky Linux 9:
dnf config-manager --set-enabled powertools dnf install epel-release
Führen Sie dann aus,
dnf install duplicity
Für Debian-basierte Distributionen wie Ubuntu und Linux Mint.
sudo apt update sudo apt install duplicity
In Theorie werden viele Methoden zum Herstellen einer Verbindung zu einem Dateiserver unterstützt, obwohl bisher nur ssh/scp/sftp, lokale Dateizugriff, rsync, ftp, HSI, WebDAV und Amazon S3 praktisch getestet wurden.
Sobald die Installation abgeschlossen ist, werden wir ausschließlich sftp in verschiedenen Szenarien verwenden, sowohl zum Sichern als auch zum Wiederherstellen der Daten.
Unsere Testumgebung besteht aus einem RHEL 8 Kasten (um gesichert zu werden) und einer Debian 11 Maschine (Backup-Server).
Erstellen von SSH-Schlüsseln für den Passwortlosen Login auf einen Remote-Server
Lassen Sie uns zunächst die SSH-Schlüssel auf unserem RHEL-System erstellen und sie auf den Debian-Backup-Server übertragen.
Wenn Sie SSH auf einem anderen Port ausführen, geht der folgende Befehl davon aus, dass der sshd-Dämon auf Port XXXXX im Debian-Server lauscht. Ersetzen Sie AAA.BBB.CCC.DDD durch die tatsächliche IP des entfernten Servers.
ssh-keygen -t rsa ssh-copy-id [email protected] ssh-copy-id -p XXXXX [email protected]
Dann sollten Sie sicherstellen, dass Sie eine Verbindung zum Backup-Server herstellen können, ohne ein Passwort zu verwenden:
ssh [email protected]

Jetzt müssen wir die GPG-Schlüssel erstellen, die für die Verschlüsselung und Entschlüsselung unserer Daten verwendet werden:
gpg2 --full-gen-key
Sie werden aufgefordert, Folgendes einzugeben:
- Art des Schlüssels
- Schlüsselgröße
- Wie lange der Schlüssel gültig sein soll
- A passphrase

Um die für die Erstellung der Schlüssel erforderliche Entropie zu generieren, können Sie sich über ein anderes Terminalfenster auf dem Server anmelden und einige Aufgaben durchführen oder einige Befehle ausführen, um Entropie zu generieren (sonst müssen Sie lange auf diesen Teil des Prozesses warten, bis er abgeschlossen ist).
Nachdem die Schlüssel generiert wurden, können Sie sie wie folgt auflisten:
gpg --list-keys

Der oben gelb markierte String wird als Public Key ID bezeichnet und ist ein erforderliches Argument zur Verschlüsselung Ihrer Dateien.
Erstellen Sie ein Linux-Backup mit Duplicity
Um einfach zu beginnen, sichern wir nur das Verzeichnis /var/log, mit Ausnahme von /var/log/anaconda und /var/log/sa.
Da dies unser erstes Backup ist, wird es ein Vollbackup sein. Nachfolgende Durchläufe erstellen inkrementelle Backups (es sei denn, wir fügen die Option \texttt{–full} direkt neben \texttt{duplicity} im folgenden Befehl hinzu):
PASSPHRASE="tecmint" duplicity --encrypt-key 115B4BB13BC768B8B2704E5663C429C3DB8BAD3B --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://[email protected]//backups/rhel8 OR PASSPHRASE="YourPassphraseHere" duplicity --encrypt-key YourPublicKeyIdHere --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://root@RemoteServer:XXXXX//backups/rhel8
Vergewissern Sie sich, dass Sie den doppelten Schrägstrich im obigen Befehl nicht vergessen! Diese werden verwendet, um den absoluten Pfad zu einem Verzeichnis mit dem Namen /backups/rhel8 auf dem Backup-Server anzugeben, wo die Backup-Dateien gespeichert werden.
Ersetzen Sie IhrPasswortHier, IhrÖffentlicherSchlüsselIdHier, und RemoteServer durch das zuvor eingegebene Passwort, die GPG-Öffentliche Schlüssel-ID und durch die IP oder den Hostnamen des Backup-Servers, entsprechend.
Ihr Ausgabewert sollte ähnlich wie im folgenden Bild aussehen:

Das obige Bild zeigt an, dass insgesamt 86,3 MB in ein 3,22 MB großes Ziel gesichert wurden. Wechseln wir auf den Backup-Server, um unser neu erstelltes Backup zu überprüfen:

A second run of the same command yields a much smaller backup size and time:

Wiederherstellung von Linux-Backups mit Duplicity
Um eine Datei, ein Verzeichnis mit dessen Inhalt oder das gesamte Backup erfolgreich wiederherzustellen, darf das Ziel nicht existieren (duplicity überschreibt keine vorhandene Datei oder Verzeichnis). Zur Verdeutlichung löschen wir das \texttt{cron}-Log auf der CentOS-Box:
rm -f /var/log/cron
Die Syntax zum Wiederherstellen einer einzelnen Datei vom Remote-Server lautet:
PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore filename sftp://root@RemoteHost//backups/rhel8 /where/to/restore/filename
wo,
- Dateiname die zu extrahierende Datei ist, mit einem relativen Pfad zum Verzeichnis, das gesichert wurde
- /wohin/wiederherstellen ist das Verzeichnis im lokalen System, in das wir die Datei wiederherstellen möchten.
In unserem Fall müssen wir den Haupt-Cron-Protokoll aus dem Remote-Backup wiederherstellen, indem wir folgendes ausführen:
PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore cron sftp://[email protected]:XXXXX//backups/rhel8 /var/log/cron
Das Cron-Protokoll sollte an das gewünschte Ziel wiederhergestellt werden.
Ebenso können Sie ein Verzeichnis von /var/log löschen und es mit dem Backup wiederherstellen:
rm -rf /var/log/mail PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore mail sftp://[email protected]:XXXXX//backups/rhel8 /var/log/mail
In diesem Beispiel sollte das Mail-Verzeichnis an seinen ursprünglichen Speicherort mit allen seinen Inhalten wiederhergestellt werden.
Duplicity-Befehlsverwendung
Zu jeder Zeit können Sie die Liste der archivierten Dateien mit dem folgenden Befehl anzeigen:
duplicity list-current-files sftp://[email protected]:XXXXX//backups/rhel8
Backups löschen, die älter als 6 Monate sind:
duplicity remove-older-than 6M sftp://[email protected]:XXXXX//backups/rhel8
Wiederherstellen von meinerDatei innerhalb des Verzeichnisses gacanepa, wie es vor 2 Tagen und 12 Stunden war:
duplicity -t 2D12h --file-to-restore gacanepa/myfile sftp://[email protected]:XXXXX//remotedir/backups /home/gacanepa/myfile
In diesem letzten Befehl sehen wir ein Beispiel für die Verwendung des Zeitintervalls (wie von -t angegeben): eine Reihe von Paaren, bei denen jedes aus einer Zahl gefolgt von einem der Zeichen s, m, h, D, W, M oder Y besteht (wobei Sekunden, Minuten, Stunden, Tage, Wochen, Monate oder Jahre angegeben werden).
Zusammenfassung
In diesem Artikel haben wir erklärt, wie man Duplicity verwendet, ein Backup-Dienstprogramm, das standardmäßig Verschlüsselung für Dateien und Verzeichnisse bietet. Ich empfehle Ihnen dringend, einen Blick auf die Website des Duplicity-Projekts zu werfen, um weitere Dokumentationen und Beispiele zu erhalten.
Wir haben eine Manpage von Duplicity im PDF-Format für Ihre Lesebequemlichkeit bereitgestellt, die auch ein vollständiger Referenzleitfaden ist.
Fühlen Sie sich frei, uns Fragen oder Kommentare mitzuteilen.
Source:
https://www.tecmint.com/duplicity-create-encrypted-incremental-linux-backup/