GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come eseguire il backup utilizzando la duplicazione su Ubuntu 20.04

Se sei un amministratore di sistema e responsabile della gestione dei server, il backup dei dati è una delle tue attività più importanti. Quindi devi avere una conoscenza sufficiente degli strumenti di backup per semplificare il tuo compito.

Duplicity è un'utilità di backup da riga di comando gratuita, open source e avanzata basata su librsync e GnuPG. Produce volumi tar con firma digitale, versionati e crittografati per l'archiviazione su un computer locale o remoto. Duplicity supporta molti protocolli per la connessione a un file server, inclusi ssh/scp, rsync, ftp, DropBox, Amazon S3, Google Docs, Google Drive, filesystem locale, OneDrive, WebDAV e molti altri.

In questo tutorial, ti mostreremo come installare e configurare Duplicity per eseguire manualmente e automatizzare il backup sul server Ubuntu 20.04.

Prerequisiti

• Due server che eseguono Ubuntu 20.04.
• Un indirizzo IP statico 104.245.32.161 è configurato sul server Duplicity e 104.245.32.194 è configurato sul server di backup.
• Una password di root è configurata nel tuo server.

Per iniziare

Prima di iniziare, dovrai aggiornare il tuo pacchetto all'ultima versione. Puoi aggiornarli tutti con il seguente comando:

apt-get update -y

Dopo aver aggiornato tutti i pacchetti, dovrai anche installare alcune dipendenze richieste sul tuo server. Puoi installarli tutti eseguendo il seguente comando:

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

Una volta installati tutti i pacchetti, puoi procedere con l'installazione di Duplicity.

Installa Duplicity

Per impostazione predefinita, Duplicity è disponibile nel repository predefinito di Ubuntu 20.04. Puoi installarlo semplicemente eseguendo il seguente comando:

apt-get install duplicity -y

Una volta installato, verifica la versione installata di Duplicity con il seguente comando:

duplicity --version

Dovresti vedere il seguente output:

duplicity 0.8.12

Configura password SSH meno autenticazione

Successivamente, dovrai generare una chiave SSH crittografata RSA a 2048 bit e utilizzarla per autenticarti in modo sicuro con il sistema remoto senza fornire una password.

Innanzitutto, genera una chiave RSA con il seguente comando:

ssh-keygen -t rsa -m PEM

Ti verrà chiesto di specificare la posizione della chiave e della passphrase come mostrato di seguito:

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]-----+

Quindi, copia la chiave RSA generata sul server di backup remoto con il seguente comando:

ssh-copy-id [email protected]

Ti verrà chiesto di fornire la password del server remoto come mostrato di seguito:

/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.

Genera chiavi GPG

Successivamente, dovrai anche generare chiavi GPG per crittografare i dati prima di trasferirli al server di backup remoto. Le chiavi GPG vengono utilizzate per fornire un ulteriore livello di sicurezza e crittografia dei dati trasferiti attraverso i server.

Puoi eseguire la chiave GPG con il seguente comando sul server Duplicity:

gpg --gen-key

Ti verrà chiesto di fornire la password della chiave GPG durante il processo di generazione della chiave come mostrato di seguito:

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]

Il comando precedente genererà le chiavi GPG e le salverà nella directory /root/.gnupg/.

Se dimentichi la tua chiave GPG, puoi trovarla con il seguente comando:

gpg --list-keys

Dovresti ottenere il seguente output:

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]

Crea directory di backup

Successivamente, dovrai creare una directory sul server di backup in cui archiviare il backup.

Accedi al server di backup e crea una directory di backup con il seguente comando:

mkdir -p /remotebackup/Duplicity/

Una volta terminato, puoi procedere al passaggio successivo.

Esegui backup manuale

A questo punto, Duplicity è installato e configurato. Ora eseguiamo un backup manuale sul server Duplicity.

Eseguire il comando seguente per eseguire il backup di una directory denominata /etc sul server di backup remoto (104.245.32.194) all'interno della directory /remotebackup/Duplicity/:

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

Sarà necessario fornire la password della chiave GPG per eseguire l'operazione di backup come mostrato di seguito:

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
-------------------------------------------------

Ora, accedi al server di backup remoto e verifica il backup con il seguente comando:

ls /remotebackup/Duplicity/

Dovresti vedere il seguente output:

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

Automatizzare il backup con Cron

Puoi anche pianificare il backup giornalmente o settimanalmente impostando il processo Cron per eseguirlo automaticamente a un intervallo di tempo specificato.

Innanzitutto, dovrai creare un file passphrase nella directory /root per passare automaticamente la passphrase senza una richiesta interattiva per la parafrasi.

Puoi crearlo con il seguente comando:

nano /root/.passphrase

Aggiungi la password della tua chiave GPG come mostrato di seguito:

PASSPHRASE="admin"

Salva e chiudi il file, quindi proteggilo con il seguente comando:

chmod 600 /root/.passphrase

Ora, crea uno script di backup giornaliero all'interno della directory /etc/cron.daily/ che verrà eseguito quotidianamente:

nano /etc/cron.daily/duplicity.inc

Aggiungi le seguenti righe:

#!/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/

Salva e chiudi il file quando hai finito. Quindi, dai il permesso eseguibile allo script con il seguente comando:

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

Lo script precedente eseguirà il backup di un intero server radice escluse alcune cartelle.

Ora prova lo script per assicurarti che tutto funzioni correttamente.

/etc/cron.daily/duplicity.inc

Dovresti vedere il seguente output:

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
-------------------------------------------------

Ora puoi controllare lo stato del tuo backup con il seguente comando:

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

Dovresti ottenere il seguente output:

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.

Se desideri eseguire un backup completo, esegui il comando seguente:

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

Puoi anche pulire i vecchi file di backup usando l'opzione remove-all-but-n-full. Ad esempio, se desideri rimuovere tutti i vecchi file di backup indesiderati e conservare solo 2 backup e i relativi backup incrementali, esegui il comando seguente:

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

Ripristina backup

Puoi anche ripristinare facilmente file e directory dal server di backup remoto. Puoi utilizzare l'opzione --file-to-restore per ripristinare file e directory.

Prima di eseguire il processo di ripristino, puoi elencare tutti i file e le directory disponibili sul server di backup con il seguente comando:

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

Dovresti vedere il seguente output:

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

Ora, ripristina la directory denominata "opt" dal server di backup nella directory /opt eseguendo il comando seguente:

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

Se il processo di ripristino è stato completato correttamente, dovresti vedere il seguente output:

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

Conclusione

Nel tutorial sopra, abbiamo imparato come eseguire il backup e il ripristino di file e directory con Duplicity sul server Ubuntu 20.04. Abbiamo anche imparato come eseguire automaticamente il processo di backup pianificando un processo di backup con Cron. Spero che questo articolo ti aiuti a risparmiare molto tempo.


Ubuntu
  1. Come creare una VPN su Ubuntu 20.04 usando Wireguard

  2. Come configurare le chiavi SSH su Ubuntu 18.04

  3. Come installare WordPress usando Nginx su Ubuntu 18.04

  4. Come sincronizzare le directory usando Lsyncd su Ubuntu 20.04

  5. Come installo Duplicity su Ubuntu?

Come installare Grafana su Ubuntu 20.04

Come installare Browser su Ubuntu 20.04

Come configurare una VPN su Ubuntu

Come installare Ansible su Ubuntu 20.04

Come aggiornare da 12.04 a 12.10 utilizzando Cd?

Come installare Ansible su Ubuntu 18.04