Ricerca nel sito web

Duplicità: crea backup incrementali crittografati in Linux


L'esperienza dimostra che non si può mai essere troppo paranoici riguardo ai backup di sistema. Quando si tratta di proteggere e preservare dati preziosi, è meglio fare il possibile e assicurarsi di poter contare sui propri backup in caso di necessità.

Anche oggi, quando alcuni provider di cloud e hosting offrono backup automatizzati per VPS a un costo relativamente basso, faresti bene a creare la tua strategia di backup utilizzando i tuoi strumenti per risparmiare denaro e poi magari usarlo per acquistare spazio di archiviazione aggiuntivo o ottenere un VPS più grande.

Sembra interessante? In questo articolo ti mostreremo come utilizzare uno strumento chiamato Duplicity per eseguire il backup e crittografare file e directory. Inoltre, l'utilizzo di backup incrementali per questa attività ci aiuterà a risparmiare spazio.

Detto questo, cominciamo.

Installazione dello strumento Duplicity Backup in Linux

Per installare Duplicity nelle distribuzioni basate su RHEL, dovrai prima abilitare il repository EPEL (puoi omettere questo passaggio se stai utilizzando Fedora stessa):

yum update 
yum install epel-release
OR
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Allora corri,

yum install duplicity

Per Debian e derivati:

sudo apt update 
sudo apt install duplicity

In teoria, sono supportati molti metodi per la connessione a un file server, anche se finora nella pratica sono stati testati solo ssh/scp/sftp, accesso ai file locali, rsync, ftp, HSI, WebDAV e Amazon S3.

Una volta completata l'installazione, utilizzeremo esclusivamente sftp in vari scenari, sia per eseguire il backup che per ripristinare i dati.

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

Creazione di chiavi SSH per l'accesso senza password al server remoto

Iniziamo creando le chiavi SSH nella nostra casella RHEL e trasferendole sul server di backup Debian.

Se stai eseguendo SSH su una porta diversa, il comando seguente presuppone che il demone sshd sia in ascolto sulla porta XXXXX nel server Debian. Sostituisci AAA.BBB.CCC.DDD con l'IP effettivo del server remoto.

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

Quindi dovresti assicurarti di poterti connettere al server di backup senza utilizzare una password:

ssh [email 

Ora dobbiamo creare le chiavi GPG che verranno utilizzate per la crittografia e decrittografia dei nostri dati:

gpg2 --full-gen-key

Ti verrà richiesto di inserire:

  • Una specie di chiave
  • Dimensione chiave
  • Per quanto tempo la chiave dovrebbe essere valida
  • Una passphrase

Per creare l'entropia necessaria alla creazione delle chiavi, puoi accedere al server tramite un'altra finestra di terminale ed eseguire alcune attività o eseguire alcuni comandi per generare entropia (altrimenti dovrai attendere a lungo per questa parte di il processo da completare).

Una volta generate le chiavi, è possibile elencarle come segue:

gpg --list-keys

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

Creazione di un backup Linux con Duplicity

Per iniziare in modo semplice, eseguiamo il backup solo della directory /var/log, ad eccezione di /var/log/anaconda e /var/log/sa.

Poiché questo è il nostro primo backup, sarà completo. Le esecuzioni successive creeranno backup incrementali (a meno che non aggiungiamo l'opzione completa senza trattini proprio accanto a duplicità nel comando seguente):

PASSPHRASE="tecmint" duplicity --encrypt-key 115B4BB13BC768B8B2704E5663C429C3DB8BAD3B --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://[email //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 la doppia barra nel comando precedente! Sono utilizzati per indicare un percorso assoluto a una directory denominata /backups/rhel8 nella casella di backup e è dove verranno archiviati i file di backup.

Sostituisci YourPassphraseHere, YourPublicKeyIdHere e RemoteServer con la passphrase inserita in precedenza, l'ID della chiave pubblica GPG e con l'IP o il nome host del backup server, rispettivamente.

L'output dovrebbe essere simile alla seguente immagine:

L'immagine sopra indica che è stato eseguito il backup di un totale di 86,3 MB su 3,22 MB nella destinazione. Passiamo al server di backup per verificare il nostro backup appena creato:

Una seconda esecuzione dello stesso comando produce dimensioni e tempi di backup molto inferiori:

Ripristino dei backup Linux utilizzando 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 esistente). Per fare chiarezza eliminiamo il log cron nel box CentOS:

rm -f /var/log/cron

La 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 relativo percorso alla directory di cui è stato eseguito il backup
  • /where/to/restore è la directory nel sistema locale in cui vogliamo ripristinare il file.

Nel nostro caso, per ripristinare il log principale di cron dal backup remoto dobbiamo eseguire:

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

Il registro 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 :XXXXX//backups/rhel8 /var/log/mail

In questo esempio, la directory mail dovrebbe essere ripristinata nella sua posizione originale con tutto il suo contenuto.

Altre caratteristiche di Duplicity

In ogni momento è possibile visualizzare l'elenco dei file archiviati con il seguente comando:

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

Elimina i backup più vecchi di 6 mesi:

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

Ripristina miofile nella directory gacanepa com'era 2 giorni e 12 ore fa:

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

Nell'ultimo comando possiamo vedere un esempio dell'utilizzo dell'intervallo di tempo (come specificato da -t): una serie di coppie in cui ciascuna è composta da un numero seguito da uno dei caratteri < forte>s, m, h, D, W, M o Y (che indicano rispettivamente secondi, minuti, ore, giorni, settimane, mesi o anni).

Riepilogo

In questo articolo, abbiamo spiegato come utilizzare Duplicity, un'utilità di backup che fornisce la crittografia per file e directory immediatamente. Consiglio vivamente di dare un'occhiata al sito web del progetto duplicity per ulteriore documentazione ed esempi.

Abbiamo fornito una pagina man di Duplicity in formato PDF per comodità di lettura, che costituisce anche una guida di riferimento completa.

Sentitevi liberi di farci sapere se avete domande o commenti.