Duplicity – Creare Backup Incrementali Criptati in Linux

L’esperienza dimostra che non puoi mai essere troppo paranoico riguardo ai backup del sistema. Quando si tratta di proteggere e conservare dati preziosi, è meglio andare oltre e assicurarsi che i tuoi backup ti possano dipendere se la necessità si presenta.

Anche oggi, quando alcuni fornitori di cloud e hosting offrono backup automatici per VPS a un costo relativamente basso, farete bene a creare la vostra strategia di backup utilizzando le vostre stesse tool per risparmiare del denaro e poi forse usarlo per acquistare spazio aggiuntivo o ottenere un VPS più grande.

Interessante? In questo articolo, vi mostreremo come utilizzare una tool chiamata Duplicity per fare backup e cifrare file e directory. Inoltre, l’utilizzo di backup incrementali per questa task ci aiuterà a risparmiare spazio.

Detto ciò, cominciamo.

Installazione della tool di backup Duplicity in Linux

Per installare duplicity in distribuzioni basate su RHEL, dovrai prima abilitare il repository EPEL (puoi saltare questo passaggio se state già utilizzando Fedora stessa). su RHEL 9:

Su 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

Su CentOS 9, AlmaLinux 9, Rocky Linux 9:

dnf config-manager --set-enabled crb
dnf install epel-release

Su 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

Su CentOS 9, AlmaLinux 9, Rocky Linux 9:

dnf config-manager --set-enabled powertools
dnf install epel-release

Quindi esegui,

dnf install duplicity

Per distribuzioni basate su Debian come Ubuntu e Linux Mint.

sudo apt update 
sudo apt install duplicity

In teoria, sono supportate molte modalità di connessione a un server di file, anche se finora sono state testate solo ssh/scp/sftp, accesso locale al file, rsync, ftp, HSI, WebDAV e Amazon S3.

Una volta completata l’installazione, utilizzeremo esclusivamente sftp in varie situazioni, sia per eseguire il backup che per ripristinare i dati.

Il nostro ambiente di test è composto da una RHEL 8 box (da eseguire il backup) e una Debian 11 macchina (server di backup).

Creazione di Chiavi SSH per l’Accesso Senza Password al Server Remoto

Inizieremo creando le chiavi SSH nel nostro server RHEL e trasferirle sul server Debian di backup.

Se stai utilizzando SSH su una porta differente, allora il comando seguente presuppone che il demone sshd sia in ascolto sulla porta XXXXX sul server Debian. Sostituisci AAA.BBB.CCC.DDD con l’IP reale del server remoto.

ssh-keygen -t rsa
ssh-copy-id [email protected]
ssh-copy-id -p XXXXX [email protected]  

Successivamente dovrai assicurarti di poter connetterti al server di backup senza utilizzare una password:

ssh [email protected]
SSH Passwordless Remote Login

Ora creiamo le chiavi GPG che verranno utilizzate per la cifratura e decifratura dei nostri dati:

gpg2 --full-gen-key

Verrà richiesto di inserire:

  • Tipo di chiave
  • Dimensione chiave
  • Per quanto tempo la chiave deve essere valida
  • A passphrase
Create GPG RSA Key in Linux

Per creare l’entropia necessaria per la creazione delle chiavi, puoi accedere al server attraverso un’altra finestra del terminale e eseguire alcune attività o eseguire alcuni comandi per generare entropia (altrimenti dovrai attendere un bel po’ perché questo processo termini).

Una volta generate le chiavi, le puoi elencare come segue:

gpg --list-keys
List GPG Keys

La stringa evidenziata in giallo sopra è nota come ID chiave pubblica ed è un argomento richiesto per crittografare i tuoi file.

Creare un Backup Linux con Duplicity

Per iniziare semplicemente, facciamo il backup solo della directory /var/log, ad eccezione di /var/log/anaconda e /var/log/sa.

Dato che questo è il nostro primo backup, sarà completo. Le esecuzioni successive creeranno backup incrementali (a meno che non aggiungiamo l’opzione full senza trattini subito dopo duplicity nel comando qui sotto):

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

Assicurati di non perdere il doppio slash nel comando sopra! Sono usati per indicare un percorso assoluto a una directory chiamata /backups/rhel8 nella scatola di backup che è dove verranno memorizzati i file di backup.

Sostituisci YourPassphraseHere, YourPublicKeyIdHere, e RemoteServer con la passphrase che hai inserito in precedenza, l’ID chiave pubblica GPG, e con l’IP o il nome host del server di backup, rispettivamente.

Il tuo output dovrebbe essere simile all’immagine seguente:

Create a Backup using Duplicity

L’immagine sopra indica che un totale di 86,3 MB è stato backuppato in un 3,22 MB nella destinazione. Passiamo al server di backup per controllare il nostro backup appena creato:

Confirm Linux Backup Files

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

Compress Backup

Ripristinare i Backup Linux usando Duplicity

Per ripristinare con successo un file, una directory con i suoi contenuti o l’intero backup, la destinazione non deve esistere (duplicity non sovrascriverà un file o una directory esistenti). Per chiarire, eliminiamo il log cron nella scatola CentOS:

rm -f /var/log/cron

Il comando di sintassi per ripristinare un singolo file dal server remoto è:

PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore filename sftp://root@RemoteHost//backups/rhel8 /where/to/restore/filename

dove,

  • nomefile è il file da estrarre, con un percorso relativo alla directory che è stata salvata
  • /dove/ripristinare è la directory nel sistema locale dove desideriamo ripristinare il file.

Nel nostro caso, per ripristinare il registro principale di cron dal backup remoto, è necessario eseguire:

PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore cron sftp://[email protected]:XXXXX//backups/rhel8 /var/log/cron

Il registro di cron dovrebbe essere ripristinato nella destinazione desiderata.

Allo stesso modo, sentiti libero di eliminare una directory da /var/log e ripristinarla utilizzando il backup:

rm -rf /var/log/mail
PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore mail sftp://[email protected]:XXXXX//backups/rhel8 /var/log/mail

In questo esempio, la directory mail dovrebbe essere ripristinata nella sua posizione originale con tutti i suoi contenuti.

Utilizzo del Comando Duplicity

In qualsiasi momento è possibile visualizzare l’elenco dei file archiviati con il seguente comando:

duplicity list-current-files sftp://[email protected]:XXXXX//backups/rhel8

Elimina i backup più vecchi di 6 mesi:

duplicity remove-older-than 6M sftp://[email protected]:XXXXX//backups/rhel8

Ripristina ilmiofile all’interno della directory gacanepa com’era 2 giorni e 12 ore fa:

duplicity -t 2D12h --file-to-restore gacanepa/myfile sftp://[email protected]:XXXXX//remotedir/backups /home/gacanepa/myfile

Nell’ultimo comando, possiamo vedere un esempio dell’uso dell’intervallo di tempo (come specificato da -t): una serie di coppie dove ciascuna consiste in un numero seguito da uno dei caratteri s, m, h, D, W, M, o Y (indicando secondi, minuti, ore, giorni, settimane, mesi o anni rispettivamente).

Sumario

Nell’articolo abbiamo spiegato come utilizzare Duplicity, un’utilità di backup che fornisce crittografia per file e directory già inclusa. Ti consiglio vivamente di dare un’occhiata al sito web del progetto duplicity per ulteriori documentazioni ed esempi.

Abbiamo fornito una pagina man di duplicity in formato PDF per la tua comodità di lettura, è anche una guida di riferimento completa.

Non esitare a farci sapere se hai domande o commenti.

Source:
https://www.tecmint.com/duplicity-create-encrypted-incremental-linux-backup/