GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So sichern Sie mit Duplicity unter Ubuntu 20.04

Wenn Sie ein Systemadministrator sind und für die Verwaltung von Servern verantwortlich sind, dann ist die Datensicherung eine Ihrer wichtigsten Aufgaben. Daher müssen Sie über ausreichende Kenntnisse von Backup-Tools verfügen, die Ihre Aufgabe erleichtern.

Duplicity ist ein kostenloses, Open-Source- und erweitertes Befehlszeilen-Backup-Dienstprogramm, das auf librsync und GnuPG aufbaut. Es erstellt digital signierte, versionierte und verschlüsselte Tar-Volumes zur Speicherung auf einem lokalen oder entfernten Computer. Duplicity unterstützt viele Protokolle für die Verbindung zu einem Dateiserver, einschließlich ssh/scp, rsync, ftp, DropBox, Amazon S3, Google Docs, Google Drive, lokales Dateisystem, OneDrive, WebDAV und viele mehr.

In diesem Tutorial zeigen wir Ihnen, wie Sie Duplicity installieren und konfigurieren, um eine manuelle und automatisierte Sicherung auf einem Ubuntu 20.04-Server durchzuführen.

Voraussetzungen

• Zwei Server mit Ubuntu 20.04.
• Eine statische IP-Adresse 104.245.32.161 ist auf dem Duplicity-Server konfiguriert und 104.245.32.194 ist auf dem Backup-Server konfiguriert.
• Auf Ihrem Server ist ein Root-Passwort konfiguriert.

Erste Schritte

Bevor Sie beginnen, müssen Sie Ihr Paket auf die neueste Version aktualisieren. Sie können alle mit dem folgenden Befehl aktualisieren:

apt-get update -y

Nachdem Sie alle Pakete aktualisiert haben, müssen Sie auch einige erforderliche Abhängigkeiten auf Ihrem Server installieren. Sie können alle installieren, indem Sie den folgenden Befehl ausführen:

apt-get install ncftp python3-paramiko python-pycryptopp lftp python3-boto python3-dev librsync-dev -y

Sobald alle Pakete installiert sind, können Sie mit der Installation von Duplicity fortfahren.

Duplicity installieren

Standardmäßig ist Duplicity im Standard-Repository von Ubuntu 20.04 verfügbar. Sie können es installieren, indem Sie einfach den folgenden Befehl ausführen:

apt-get install duplicity -y

Überprüfen Sie nach der Installation die installierte Version von Duplicity mit dem folgenden Befehl:

duplicity --version

Sie sollten die folgende Ausgabe sehen:

duplicity 0.8.12

Passwortlose SSH-Authentifizierung konfigurieren

Als Nächstes müssen Sie einen RSA-2048-Bit-verschlüsselten SSH-Schlüssel generieren und ihn verwenden, um sich sicher beim Remote-System zu authentifizieren, ohne ein Passwort anzugeben.

Generieren Sie zunächst einen RSA-Schlüssel mit dem folgenden Befehl:

ssh-keygen -t rsa -m PEM

Sie werden aufgefordert, den Speicherort des Schlüssels und der Passphrase wie unten gezeigt anzugeben:

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:BwKSLtXT+WHhPqhu3MIH07QEb0c5Zh/f0XolMRyQaQE root@ubuntu2004
The key's randomart image is:
+---[RSA 3072]----+
|  .o.. ..oE.o*++ |
|  o.+.o.O . + +.o|
| o   +.*o+ + . +.|
|. .   =+o.. . o .|
| .   =.oS .    . |
|    o.o  o       |
|   o.+           |
|   .= o          |
|   ..o           |
+----[SHA256]-----+

Kopieren Sie als Nächstes den generierten RSA-Schlüssel mit dem folgenden Befehl auf den Remote-Sicherungsserver:

ssh-copy-id [email protected]

Sie werden aufgefordert, das Remote-Server-Passwort wie unten gezeigt einzugeben:

/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
[email protected]'s password: 

Number of key(s) added: 1

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

GPG-Schlüssel generieren

Als Nächstes müssen Sie auch GPG-Schlüssel generieren, um die Daten zu verschlüsseln, bevor wir sie auf den Remote-Sicherungsserver übertragen. GPG-Schlüssel werden verwendet, um eine zusätzliche Sicherheitsebene und Verschlüsselung der über die Server übertragenen Daten bereitzustellen.

Sie können GPG-Schlüssel mit dem folgenden Befehl auf dem Duplicity-Server erstellen:

gpg --gen-key

Sie werden während der Schlüsselerstellung aufgefordert, das Passwort des GPG-Schlüssels einzugeben, wie unten gezeigt:

gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

gpg: directory '/root/.gnupg' created
gpg: keybox '/root/.gnupg/pubring.kbx' created
Note: Use "gpg --full-generate-key" for a full featured key generation dialog.

GnuPG needs to construct a user ID to identify your key.

Real name: Hitesh Jethva
Email address: [email protected]
You selected this USER-ID:
    "Hitesh Jethva <[email protected]>"

Change (N)ame, (E)mail, or (O)kay/(Q)uit? O
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key E8A334EB747BAD6A marked as ultimately trusted
gpg: directory '/root/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/root/.gnupg/openpgp-revocs.d/6683A9D4720C5895BF7A7AE9E8A334EB747BAD6A.rev'
public and secret key created and signed.

pub   rsa3072 2020-07-30 [SC] [expires: 2022-07-30]
      6683A9D4720C5895BF7A7AE9E8A334EB747BAD6A
uid                      Hitesh Jethva <[email protected]>
sub   rsa3072 2020-07-30 [E] [expires: 2022-07-30]

Der obige Befehl generiert die GPG-Schlüssel und speichert sie im Verzeichnis /root/.gnupg/.

Wenn Sie Ihren GPG-Schlüssel vergessen haben, können Sie ihn mit dem folgenden Befehl finden:

gpg --list-keys

Sie sollten die folgende Ausgabe erhalten:

gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2022-07-30
/root/.gnupg/pubring.kbx
------------------------
pub   rsa3072 2020-07-30 [SC] [expires: 2022-07-30]
      6683A9D4720C5895BF7A7AE9E8A334EB747BAD6A
uid           [ultimate] Hitesh Jethva <[email protected]>
sub   rsa3072 2020-07-30 [E] [expires: 2022-07-30]

Sicherungsverzeichnis erstellen

Als nächstes müssen Sie ein Verzeichnis auf dem Backup-Server erstellen, um das Backup zu speichern.

Melden Sie sich beim Backup-Server an und erstellen Sie mit dem folgenden Befehl ein Backup-Verzeichnis:

mkdir -p /remotebackup/Duplicity/

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Manuelle Sicherung durchführen

An diesem Punkt ist Duplicity installiert und konfiguriert. Lassen Sie uns nun ein manuelles Backup auf dem Duplicity-Server durchführen.

Führen Sie den folgenden Befehl aus, um ein Verzeichnis namens /etc auf dem Remote-Sicherungsserver (104.245.32.194) im Verzeichnis /remotebackup/Duplicity/ zu sichern:

duplicity /etc/ sftp://[email protected]//remotebackup/Duplicity/

Sie müssen Ihr GPG-Schlüsselpasswort eingeben, um den Sicherungsvorgang wie unten gezeigt durchzuführen:

Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
GnuPG passphrase for decryption: 
Retype passphrase for decryption to confirm: 
No signatures found, switching to full backup.
--------------[ Backup Statistics ]--------------
StartTime 1596110093.56 (Thu Jul 30 11:54:53 2020)
EndTime 1596110095.24 (Thu Jul 30 11:54:55 2020)
ElapsedTime 1.67 (1.67 seconds)
SourceFiles 1413
SourceFileSize 2698964 (2.57 MB)
NewFiles 1413
NewFileSize 2698964 (2.57 MB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 1413
RawDeltaSize 1857098 (1.77 MB)
TotalDestinationSizeChange 493579 (482 KB)
Errors 0
-------------------------------------------------

Melden Sie sich jetzt beim Remote-Sicherungsserver an und überprüfen Sie die Sicherung mit dem folgenden Befehl:

ls /remotebackup/Duplicity/

Sie sollten die folgende Ausgabe sehen:

duplicity-full.20200730T115821Z.manifest.gpg      duplicity-full-signatures.20200730T115821Z.sigtar.gpg
duplicity-full.20200730T115821Z.vol1.difftar.gpg

Sicherung mit Cron automatisieren

Sie können Ihre Sicherung auch täglich oder wöchentlich planen, indem Sie den Cron-Job so einstellen, dass er automatisch in einem bestimmten Zeitintervall ausgeführt wird.

Zuerst müssen Sie eine Passphrase-Datei im /root-Verzeichnis erstellen, um die Passphrase automatisch ohne interaktive Aufforderung zur Paraphrase zu übergeben.

Sie können es mit dem folgenden Befehl erstellen:

nano /root/.passphrase

Fügen Sie Ihr GPG-Schlüsselpasswort wie unten gezeigt hinzu:

PASSPHRASE="admin"

Speichern und schließen Sie die Datei und sichern Sie die Datei dann mit dem folgenden Befehl:

chmod 600 /root/.passphrase

Erstellen Sie nun ein tägliches Backup-Skript im /etc/cron.daily/-Verzeichnis, das täglich ausgeführt wird:

nano /etc/cron.daily/duplicity.inc

Fügen Sie die folgenden Zeilen hinzu:

#!/bin/sh

test -x $(which duplicity) || exit 0
. /root/.passphrase

export PASSPHRASE
$(which duplicity) --encrypt-key 6683A9D4720C5895BF7A7AE9E8A334EB747BAD6A --exclude /var --exclude /home --exclude /swapfile --exclude /proc --exclude /sys --exclude /tmp --exclude /usr / sftp://[email protected]//remotebackup/Duplicity/

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Geben Sie dem Skript dann mit dem folgenden Befehl die Ausführungsberechtigung:

chmod +x /etc/cron.daily/duplicity.inc

Das obige Skript sichert einen gesamten Root-Server mit Ausnahme einiger Ordner.

Testen Sie nun das Skript, um sicherzustellen, dass alles richtig funktioniert.

/etc/cron.daily/duplicity.inc

Sie sollten die folgende Ausgabe sehen:

Local and Remote metadata are synchronized, no sync needed.
Last full backup left a partial set, restarting.
Last full backup date: Thu Jul 30 12:06:52 2020
RESTART: The first volume failed to upload before termination.
         Restart is impossible...starting backup from beginning.
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
No signatures found, switching to full backup.
--------------[ Backup Statistics ]--------------
StartTime 1596110992.57 (Thu Jul 30 12:09:52 2020)
EndTime 1596111062.63 (Thu Jul 30 12:11:02 2020)
ElapsedTime 70.06 (1 minute 10.06 seconds)
SourceFiles 13313
SourceFileSize 777994890 (742 MB)
NewFiles 13313
NewFileSize 777994890 (742 MB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 13313
RawDeltaSize 772067520 (736 MB)
TotalDestinationSizeChange 318263295 (304 MB)
Errors 0
-------------------------------------------------

Sie können jetzt den Status Ihres Backups mit dem folgenden Befehl überprüfen:

PASSPHRASE="admin" duplicity --encrypt-key 6683A9D4720C5895BF7A7AE9E8A334EB747BAD6A collection-status  sftp://[email protected]//remotebackup/Duplicity/

Sie sollten die folgende Ausgabe erhalten:

Last full backup date: Thu Jul 30 12:14:17 2020
Collection Status
-----------------
Connecting with backend: BackendWrapper
Archive dir: /root/.cache/duplicity/b2af509c9fab82d874aa492a933aaf70

Found 0 secondary backup chains.

Found primary backup chain with matching signature chain:
-------------------------
Chain start time: Thu Jul 30 12:14:17 2020
Chain end time: Thu Jul 30 12:14:17 2020
Number of contained backup sets: 1
Total number of contained volumes: 2
 Type of backup set:                            Time:      Num volumes:
                Full         Thu Jul 30 12:14:17 2020                 2
-------------------------
No orphaned or incomplete backup sets found.

Wenn Sie eine vollständige Sicherung erstellen möchten, führen Sie den folgenden Befehl aus:

PASSPHRASE="admin" duplicity full  --encrypt-key 6683A9D4720C5895BF7A7AE9E8A334EB747BAD6A remove-all-but-n-full 3 --force sftp://[email protected]//remotebackup/Duplicity/

Sie können die alten Backup-Dateien auch mit der Option remove-all-but-n-full bereinigen. Wenn Sie beispielsweise alle unerwünschten alten Backup-Dateien entfernen und nur 2 Backups und ihre entsprechenden inkrementellen Backups behalten möchten, führen Sie den folgenden Befehl aus:

PASSPHRASE="admin" duplicity --encrypt-key 6683A9D4720C5895BF7A7AE9E8A334EB747BAD6A remove-all-but-n-full 2 --force  sftp://[email protected]//remotebackup/Duplicity/

Sicherung wiederherstellen

Sie können Ihre Dateien und Verzeichnisse auch einfach vom Remote-Sicherungsserver wiederherstellen. Sie können die Option --file-to-restore verwenden, um Dateien und Verzeichnisse wiederherzustellen.

Bevor Sie den Wiederherstellungsvorgang durchführen, können Sie mit dem folgenden Befehl alle verfügbaren Dateien und Verzeichnisse auf dem Sicherungsserver auflisten:

duplicity --encrypt-key 6683A9D4720C5895BF7A7AE9E8A334EB747BAD6A list-current-files  sftp://[email protected]//remotebackup/Duplicity/ | less

Sie sollten die folgende Ausgabe sehen:

Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Thu Jul 30 12:14:17 2020
Thu Jul 30 12:04:04 2020 .
Thu May 14 03:28:54 2020 bin
Thu May 14 03:35:45 2020 boot
Mon Apr 20 16:33:49 2020 boot/System.map-5.4.0-26-generic
Wed Apr 29 13:34:16 2020 boot/System.map-5.4.0-29-generic
Mon Apr 20 16:33:49 2020 boot/config-5.4.0-26-generic
Wed Apr 29 13:34:16 2020 boot/config-5.4.0-29-generic
Thu May 14 03:37:26 2020 boot/grub
Thu May 14 03:31:36 2020 boot/grub/fonts
Thu May 14 03:31:36 2020 boot/grub/fonts/unicode.pf2
Thu May 14 03:31:29 2020 boot/grub/gfxblacklist.txt
Thu May 14 03:37:26 2020 boot/grub/grub.cfg
Wed Jul 29 10:05:41 2020 boot/grub/grubenv
Thu May 14 03:31:37 2020 boot/grub/i386-pc
Thu May 14 03:31:36 2020 boot/grub/i386-pc/915resolution.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/acpi.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/adler32.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/affs.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/afs.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/ahci.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/all_video.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/aout.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/archelp.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/at_keyboard.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/ata.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/backtrace.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/bfs.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/biosdisk.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/bitmap.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/bitmap_scale.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/blocklist.mod
Thu May 14 03:31:37 2020 boot/grub/i386-pc/boot.img
Thu May 14 03:31:36 2020 boot/grub/i386-pc/boot.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/bsd.mod
Thu May 14 03:31:35 2020 boot/grub/i386-pc/bswap_test.mod
Thu May 14 03:31:36 2020 boot/grub/i386-pc/btrfs.mod

Stellen Sie nun das Verzeichnis mit dem Namen „opt“ vom Sicherungsserver in das Verzeichnis /opt wieder her, indem Sie den folgenden Befehl ausführen:

PASSPHRASE="admin" duplicity --encrypt-key 6683A9D4720C5895BF7A7AE9E8A334EB747BAD6A --file-to-restore opt sftp://[email protected]//remotebackup/Duplicity/ /opt

Wenn der Wiederherstellungsprozess erfolgreich abgeschlossen wurde, sollten Sie die folgende Ausgabe sehen:

Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Thu Jul 30 12:14:17 2020

Schlussfolgerung

Im obigen Tutorial haben wir gelernt, wie man Dateien und Verzeichnisse mit Duplicity auf einem Ubuntu 20.04-Server sichert und wiederherstellt. Wir haben auch gelernt, wie man den Backup-Prozess automatisch durchführt, indem man einen Backup-Prozess mit Cron plant. Ich hoffe, dieser Artikel wird Ihnen helfen, viel Zeit zu sparen.


Ubuntu
  1. So erstellen Sie ein VPN unter Ubuntu 20.04 mit Wireguard

  2. So richten Sie SSH-Schlüssel unter Ubuntu 18.04 ein

  3. So installieren Sie WordPress mit Nginx unter Ubuntu 18.04

  4. So synchronisieren Sie Verzeichnisse mit Lsyncd unter Ubuntu 20.04

  5. Wie installiere ich Duplicity auf Ubuntu?

So installieren Sie Grafana unter Ubuntu 20.04

So installieren Sie Browsh unter Ubuntu 20.04

So richten Sie ein VPN unter Ubuntu ein

So installieren Sie Ansible unter Ubuntu 20.04

Wie aktualisiere ich von 12.04 auf 12.10 mit CD?

So installieren Sie Ansible unter Ubuntu 18.04