Duplicity – Erstellen verschlüsselter inkrementeller Backups in Linux

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:

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]
SSH Passwordless Remote Login

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
Create GPG RSA Key in Linux

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
List GPG 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:

Create a Backup using Duplicity

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:

Confirm Linux Backup Files

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

Compress Backup

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/