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

So sichern Sie mit Duplicity unter Ubuntu 16.04

Duplicity ist eine Softwareanwendung, die verschlüsselte, digital signierte, versionierte Backup-Volumes im Tar-Format bereitstellt, die auf einen entfernten oder lokalen Dateiserver hochgeladen werden können. Es wird in allen wichtigen Linux-Distributionen wie Ubuntu, Linux Mint, Debian, Fedora und vielen mehr unterstützt. Duplicity unterstützt das lokale oder entfernte Synchronisieren von Dateien zwischen Dateisystemen oder Servern mit SSH/SCP, Rsync, FTP, WebDAV usw.

In diesem Tutorial erkläre ich, wie Duplicity eingerichtet und verwendet wird, um Backups auf Ihrem Ubuntu-Server sicher zu automatisieren.

Voraussetzungen

Wir müssen alle Standardpakete für Ubuntu aus den Repositories installieren.

$apt-get update
$apt-get install ncftp python-paramiko python-pycryptopp lftp python-boto python-dev librsync-dev

Duplicity installieren

Wir können Duplicity aus den Repository-Paketen installieren, indem wir einfach diesen Befehl ausführen.

$ apt install duplicity

Lassen Sie uns nach der Installation die doppelte Version bestätigen.

$ duplicity -V
duplicity 0.7.06

SSH- und GPG-Schlüssel erstellen

Als Nächstes müssen wir SSH-Schlüssel verwenden, um uns sicher beim Remote-System zu authentifizieren, ohne ein Passwort angeben zu müssen. Wir verwenden auch GPG-Schlüssel, um die Daten zu verschlüsseln, bevor wir sie an den Backup-Speicherort übertragen. Diese Schlüssel sorgen für eine sichere Interaktion zwischen den Servern.

Lassen Sie uns einen RSA-2048-Bit-verschlüsselten SSH-Schlüssel von unserem Root-Benutzer generieren, um passwortlose Anmeldungen an der Backup-Maschine zu ermöglichen.

$ ssh-keygen -t rsa
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:gxdDFAjm6AUSi7LzczlDE1orygCzplmjQCqBFkxJ8Dc root@duplicity-01
The key's randomart image is:
+---[RSA 2048]----+
|O=o o. o+. |
|o*.= .. |
|Ooo E o |
|** = + . o |
|O.* + . S |
|BB + o . . |
|=.o = |
| o o |
| |
+----[SHA256]-----+

Jetzt kopieren wir diesen RSA-Schlüssel an unseren Remote-Backup-Speicherort.

$ssh-copy-id [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '45.55.165.191 (45.55.165.191)' can't be established.
ECDSA key fingerprint is SHA256:XhFoQ3/mIsjGH7RfMwH6m0MHbj1B1kR4Sug5vfTQLdU.
Are you sure you want to continue connecting (yes/no)? yes
/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.

Daher können wir auf den Remote-Sicherungsserver zugreifen, ohne Passwörter vom Host bereitzustellen. Wir müssen einen Backup-Zielort erstellen, um unsere Backups zu speichern. Ich habe auf meinem Remote-Sicherungsserver einen Duplicity-Ordner erstellt.

$mkdir -p remotebackup/Duplicity

Unser nächster Schritt ist die Erstellung der GPG-Schlüssel. GPG-Schlüssel werden für zusätzliche Sicherheit und Verschlüsselung der über die Server übertragenen Daten verwendet. Erstellen Sie es, indem Sie einfach den folgenden Befehl ausführen:

$gpg --gen-key

Dieser Befehl erstellt die GPG-Schlüssel und speichert sie im Ordner /root/.gnupg/. Diese Schlüsselgenerierung ist interaktiv und wir müssen während des Prozesses verschiedene Fragen auswählen und beantworten.

$ gpg --gen-key
gpg (GnuPG) 1.4.20; Copyright (C) 2015 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.

Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection?
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <[email protected]>"

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

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.

gpg: gpg-agent is not available in this session
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.

Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy! (Need 287 more bytes)

An dieser Stelle werden Sie aufgefordert, Entropie zu erzeugen. Entropie ist im Grunde die Unvorhersehbarkeit in Ihrem System. Ihr VPS benötigt Entropie, um einen Schlüssel zu erstellen, der tatsächlich zufällig ist. Wenn Sie diese Nachricht als hervorgehobenen Teil erhalten, müssen Sie haveged installieren Paket, um einen zufälligen Schlüssel zu erstellen, und versuchen Sie den Befehl erneut.

$apt-get install haveged

Dieses Paket kann aus Ihrem Standard-Repository installiert werden. Nach der Installation müssen Sie sicherstellen, dass die folgende Einstellung wie unten in ihrer Konfigurationsdatei /etc/default/haveged.

aktualisiert wird
DAEMON_ARGS="-w 1024"

Stellen Sie schließlich sicher, dass es so konfiguriert ist, dass es beim Booten startet:

$update-rc.d haveged defaults

Nachdem Sie dies eingestellt haben, können Sie den gpg --gen-key erneut starten Befehl noch einmal und es wird den Vorgang mit Folgendem abschließen.

$ gpg --gen-key
gpg (GnuPG) 1.4.20; Copyright (C) 2015 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.

Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection?
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N)
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <[email protected]>"

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

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.

gpg: gpg-agent is not available in this session
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 F03B3360 marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
pub 2048R/F03B3360 2016-11-25
Key fingerprint = F262 785A B5E6 25E9 56E7 4484 3354 43D9 F03B 3360
uid Saheetha <[email protected]>
sub 2048R/C4D85223 2016-11-25

Sie können Ihre gpg-Schlüsselinformationen auch abrufen, indem Sie diesen Befehl ausführen.

$ gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub 2048R/F03B3360 2016-11-25
uid Saheetha <[email protected]>
sub 2048R/C4D85223 2016-11-25

Wie man Duplicity verwendet

Führen wir einen ersten Test für unser Duplizitätssystem durch, indem wir einen Ordner mit Dummy-Dateien erstellen, die gesichert werden sollen. Sie können einen Testordner erstellen und einige Dateien zum Sichern erstellen.

$ mkdir Test-DoC
$ cd Test-DoC
$ touch file{1..100}

Jetzt können Sie diesen Befehl ausführen, um den Server auf unserem Remote-Sicherungsserver zu sichern.

$root@duplicity-01:~# duplicity /root/Test-DoC/ sftp://[email protected]//remotebackup/Duplicity
The authenticity of host '45.55.165.191' can't be established.
SSH-RSA key fingerprint is 20:9d:3b:fe:af:df:d1:40:5d:bc:f4:2c:6e:30:54:e0.
Are you sure you want to continue connecting (yes/no)? yes
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 1480059313.48 (Fri Nov 25 07:35:13 2016)
EndTime 1480059313.53 (Fri Nov 25 07:35:13 2016)
ElapsedTime 0.05 (0.05 seconds)
SourceFiles 101
SourceFileSize 4096 (4.00 KB)
NewFiles 101
NewFileSize 4096 (4.00 KB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 101
RawDeltaSize 0 (0 bytes)
TotalDestinationSizeChange 1029 (1.00 KB)
Errors 0
-------------------------------------------------

Sie können die Sicherung bestätigen, indem Sie sich bei unserem Remote-Server anmelden.

root@duplicity-02:/remotebackup/Duplicity# ll
total 20
drwxr-xr-x 2 root root 4096 Nov 25 07:35 ./
drwxr-xr-x 3 root root 4096 Nov 25 07:11 ../
-rw-r--r-- 1 root root 438 Nov 25 07:35 duplicity-full.20161125T073505Z.manifest.gpg
-rw-r--r-- 1 root root 1029 Nov 25 07:35 duplicity-full.20161125T073505Z.vol1.difftar.gpg
-rw-r--r-- 1 root root 1596 Nov 25 07:35 duplicity-full-signatures.20161125T073505Z.sigtar.gpg

Diese Dateien sollen die Sicherungsinformationen enthalten. Da es sich nur um Testdateien handelt, können wir die gesamten Dateien entfernen.

Erstellen einer Sicherung des gesamten Servers

Lassen Sie uns unser erstes Server-Backup erstellen. Wir erstellen ein vollständiges Root-Server-Backup mit Ausnahme einiger Ordner wie /proc, /sys und /tmp. Hier müssen wir den zuvor generierten GPG-Pub-Schlüssel und Paraphrase verwenden, um unsere Daten zu sichern und zu verschlüsseln. Dies ist die allgemeine Syntax für die Backup-Erstellung.

duplicity --encrypt-key Pub-key_from_GPG --exclude files_to_exclude --include files_to_include path_to_back_up sftp://root@remotebackupHostname//remotebackup/duplicity

Ich habe diesen Befehl ausgeführt, um meinen Server zu sichern.

root@duplicity-01:~# PASSPHRASE="docker" duplicity --encrypt-key F03B3360 --exclude /proc --exclude /sys --exclude /tmp  / sftp://[email protected]//remotebackup/Duplicity/
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
No signatures found, switching to full backup.
--------------[ Backup Statistics ]--------------
StartTime 1480143194.50 (Sat Nov 26 06:53:14 2016)
EndTime 1480143304.84 (Sat Nov 26 06:55:04 2016)
ElapsedTime 110.34 (1 minute 50.34 seconds)
SourceFiles 69101
SourceFileSize 885736795 (845 MB)
NewFiles 69101
NewFileSize 885736795 (845 MB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 69101
RawDeltaSize 847552198 (808 MB)
TotalDestinationSizeChange 345904578 (330 MB)
Errors 0
-------------------------------------------------

Es wird einige Zeit dauern, bis dieser Sicherungsvorgang abgeschlossen ist. Da dies das erste Mal ist, dass wir die Sicherung ausführen, erstellt Duplicity eine vollständige Sicherung. Duplicity teilt die Datenblöcke in Volumes auf, um die Dateiübertragungen zu vereinfachen.

root@duplicity-02:/remotebackup/Duplicity# ll
total 354864
drwxr-xr-x 2 root root 4096 Nov 26 06:55 ./
drwxr-xr-x 3 root root 4096 Nov 25 07:11 ../
-rw-r--r-- 1 root root 303666 Nov 26 06:55 duplicity-full.20161126T065314Z.manifest.gpg
-rw-r--r-- 1 root root 26241374 Nov 26 06:54 duplicity-full.20161126T065314Z.vol10.difftar.gpg
-rw-r--r-- 1 root root 26192752 Nov 26 06:54 duplicity-full.20161126T065314Z.vol11.difftar.gpg
-rw-r--r-- 1 root root 26206134 Nov 26 06:54 duplicity-full.20161126T065314Z.vol12.difftar.gpg
-rw-r--r-- 1 root root 26196266 Nov 26 06:54 duplicity-full.20161126T065314Z.vol13.difftar.gpg
-rw-r--r-- 1 root root 4999361 Nov 26 06:55 duplicity-full.20161126T065314Z.vol14.difftar.gpg
-rw-r--r-- 1 root root 26256306 Nov 26 06:53 duplicity-full.20161126T065314Z.vol1.difftar.gpg
-rw-r--r-- 1 root root 26216804 Nov 26 06:53 duplicity-full.20161126T065314Z.vol2.difftar.gpg
-rw-r--r-- 1 root root 26198345 Nov 26 06:53 duplicity-full.20161126T065314Z.vol3.difftar.gpg
-rw-r--r-- 1 root root 26197666 Nov 26 06:53 duplicity-full.20161126T065314Z.vol4.difftar.gpg
-rw-r--r-- 1 root root 26237799 Nov 26 06:53 duplicity-full.20161126T065314Z.vol5.difftar.gpg
-rw-r--r-- 1 root root 26218126 Nov 26 06:53 duplicity-full.20161126T065314Z.vol6.difftar.gpg
-rw-r--r-- 1 root root 26252966 Nov 26 06:53 duplicity-full.20161126T065314Z.vol7.difftar.gpg
-rw-r--r-- 1 root root 26234136 Nov 26 06:54 duplicity-full.20161126T065314Z.vol8.difftar.gpg
-rw-r--r-- 1 root root 26256543 Nov 26 06:54 duplicity-full.20161126T065314Z.vol9.difftar.gpg
-rw-r--r-- 1 root root 17136137 Nov 26 06:55 duplicity-full-signatures.20161126T065314Z.sigtar.gpg

Auf einem neuen Droplet erstellte meine Konfiguration 15 Volumes, die auf das Remote-System übertragen wurden. Da wir ein vollständiges Backup für meinen Server auf unserem Backup-Server haben, wird das nächste Backup ein inkrementelles Backup sein. Diese sind schneller und benötigen weniger Datenübertragungszeit. Sie können sogar ein weiteres vollständiges Backup erzwingen, indem Sie einfach diesen Befehl ausführen.

$PASSPHRASE="docker" duplicity full --encrypt-key F03B3360 --exclude /proc --exclude /sys --exclude /tmp  / sftp://[email protected]//remotebackup/Duplicity/

Planung unserer Backups

Jetzt können wir lernen, wie wir unsere Sicherungen täglich oder wöchentlich planen, indem wir das Sicherungsskript so einstellen, dass es automatisch ausgeführt wird. Lassen Sie uns zunächst eine Passphrase-Datei in unserem /root-Ordner erstellen, um die Passphrase automatisch ohne interaktive Eingabeaufforderung zur Paraphrase weiterzugeben.

$cat /root/.passphrase
PASSPHRASE="docker"

Sichern Sie die Dateiberechtigungen und beschränken Sie sie auf 600.

Mal sehen, wie man das Backup täglich erstellt. Wir müssen unser Backup-Skript im Ordner /etc/cron.daily erstellen. Alle in diesem Ordner festgelegten Cron-Jobs werden täglich ausgeführt.

$:/etc/cron.daily# cat duplicity.inc
#!/bin/sh

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

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

Stellen Sie sicher, dass Sie dem Skript die Ausführungsberechtigung erteilen.

$:/etc/cron.daily# chmod +x duplicity.inc

Wir können dieses Skript ausführen, um sicherzustellen, dass alles richtig funktioniert.

root@duplicity-01:/etc/cron.daily# ./duplicity.inc
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Sat Nov 26 06:53:14 2016
--------------[ Backup Statistics ]--------------
StartTime 1480564726.91 (Thu Dec 1 03:58:46 2016)
EndTime 1480564748.83 (Thu Dec 1 03:59:08 2016)
ElapsedTime 21.91 (21.91 seconds)
SourceFiles 69108
SourceFileSize 899520535 (858 MB)
NewFiles 32
NewFileSize 20761841 (19.8 MB)
DeletedFiles 13
ChangedFiles 9
ChangedFileSize 2779 (2.71 KB)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 54
RawDeltaSize 20737072 (19.8 MB)
TotalDestinationSizeChange 17502790 (16.7 MB)
Errors 0
-------------------------------------------------

Ebenso können wir ein Backup planen, um wöchentlich ein vollständiges Backup zu erzwingen und zu warten. Da inkrementelle Sicherungen immer unhandlicher werden, wenn sich Änderungen häufen. Wir werden wöchentliche vollständige Backups konfigurieren, um die Basis zu aktualisieren.

Lassen Sie uns dies tun, indem wir ein vollständiges Duplicity-Backup-Skript im Ordner /etc/cron.weekly erstellen. Sie können ein duplicity.full-Skript in diesem Verzeichnis erstellen.

$:/etc/cron.weekly# chmod +x duplicity.full
$:/etc/cron.weekly# cat duplicity.full
#!/bin/sh

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

export PASSPHRASE
$(which duplicity) full --encrypt-key F03B3360 --exclude /proc --exclude /sys --exclude /tmp --exclude /var / sftp://[email protected]//remotebackup/Duplicity/

Wir können diesen Befehl auch an unser duplicity.full-Skript anhängen, um die alten Sicherungsdateien zu bereinigen. Fügen Sie diesen Befehl hinzu, um nur drei Sicherungen und ihre entsprechenden inkrementellen Sicherungen aufzubewahren.

$(which duplicity) remove-all-but-n-full 3 --force sftp://[email protected]//remotebackup/Duplicity/

Daher erstellt unser wöchentliches Skript ein vollständiges Backup für unseren Server und entfernt alle unerwünschten alten Backup-Dateien vom Server. Wir können unser Skript manuell ausführen, um seine Funktionsweise zu testen.

$:/etc/cron.weekly# ./duplicity.full
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Sat Nov 26 06:53:14 2016
--------------[ Backup Statistics ]--------------
StartTime 1480570674.29 (Thu Dec 1 05:37:54 2016)
EndTime 1480570791.54 (Thu Dec 1 05:39:51 2016)
ElapsedTime 117.26 (1 minute 57.26 seconds)
SourceFiles 69109
SourceFileSize 906577560 (865 MB)
NewFiles 69109
NewFileSize 906577560 (865 MB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 69109
RawDeltaSize 868388867 (828 MB)
TotalDestinationSizeChange 363488138 (347 MB)
Errors 0
-------------------------------------------------

Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Thu Dec 1 05:37:53 2016
No old backup sets found, nothing deleted.

Schlussfolgerung

Herzliche Glückwünsche! Wir haben unsere voll funktionsfähige automatisierte Backup-Lösung einsatzbereit. Einer der Hauptvorteile von Duplicity gegenüber anderen Backup-Lösungen besteht darin, dass die Daten mit dem GnuPG-Schlüssel verschlüsselt werden. Es bietet auch eine automatisierte Backup-Lösung, die großartig ist und mit einfachen Cron-Jobs durchgeführt werden kann. Ich hoffe, dieser Artikel ist nützlich für Sie! Bitte posten Sie Ihre wertvollen Kommentare und Vorschläge dazu.


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