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

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

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

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:

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:

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

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/