Ricerca nel sito web

rdiff-backup - Uno strumento di backup incrementale remoto per Linux


rdiff-backup è uno script Python potente e facile da usare per il backup incrementale locale/remoto, che funziona su qualsiasi sistema operativo POSIX come Linux, Mac OS X o Cygwin. Riunisce le straordinarie funzionalità di un mirror e di un backup incrementale.

Significativamente, preserva le sottodirectory, i file dev, i collegamenti reali e gli attributi critici dei file come autorizzazioni, proprietà uid/gid, tempi di modifica, attributi estesi, acl e fork delle risorse. Può funzionare in modalità efficiente in termini di larghezza di banda su una pipe, in modo simile al popolare strumento di backup rsync.

rdiff-backup esegue il backup di una singola directory su un'altra su una rete utilizzando SSH, il che implica che il trasferimento dei dati è crittografato e quindi sicuro. La directory di destinazione (sul sistema remoto) risulta essere una copia esatta della directory di origine, tuttavia le differenze inverse aggiuntive vengono archiviate in una sottodirectory speciale nella directory di destinazione, rendendo possibile il recupero dei file persi qualche tempo fa.

Dipendenze

Per utilizzare rdiff-backup in Linux, avrai bisogno dei seguenti pacchetti installati sul tuo sistema:

  • Python v2.2 o successivo
  • librsync v0.9.7 o successiva
  • I moduli Python pylibacl e pyxattr sono facoltativi ma necessari rispettivamente per l'elenco di controllo degli accessi POSIX (ACL) e il supporto degli attributi estesi.
  • rdiff-backup-statistics richiede Python v2.4 o successivo.

Come installare rdiff-backup in Linux

Importante: se stai operando su una rete, dovrai installare rdiff-backup su entrambi i sistemi, preferibilmente entrambe le installazioni di rdiff-backup dovranno essere identiche stessa versione.

Lo script è già presente nei repository ufficiali delle principali distribuzioni Linux, è sufficiente eseguire il comando seguente per installare rdiff-backup e le sue dipendenze:

Installa rdiff-backup su Ubuntu

Per installare Rdiff-Backup su Ubuntu Focal o Debian Bullseye o versione successiva (ha 2.0).


sudo apt-get update
sudo apt-get install librsync-dev rdiff-backup

Per installare Rdiff-Backup sui backport di Ubuntu per versioni precedenti (è necessario un backport 2.0).


sudo add-apt-repository ppa:rdiff-backup/rdiff-backup-backports
sudo apt update
sudo apt install rdiff-backu

Su CentOS/RHEL 8

Per installare Rdiff-Backup su CentOS e RHEL 8 (da COPR).


sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup

Su CentOS/RHEL 7

Per installare Rdiff-Backup su CentOS e RHEL 7 (da COPR).


sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup

Su CentOS/RHEL 6


sudo yum install centos-release-scl
sudo yum install rh-python36 gcc libacl-devel
scl enable rh-python36 bash
sudo pip install rdiff-backup pyxattr pylibacl
echo 'exec scl enable rh-python36 -- rdiff-backup "$@"' | sudo tee /usr/bin/rdiff-backup
sudo chmod +x /usr/bin/rdiff-backup

Su Fedora

Per installare Rdiff-Backup su Fedora 32+.


sudo dnf install rdiff-backup

Come utilizzare rdiff-backup in Linux

Come accennato in precedenza, rdiff-backup utilizza SSH per connettersi a macchine remote sulla rete e l'autenticazione predefinita in SSH è il metodo nome utente/password, che normalmente richiede l'interazione umana.

Tuttavia, per automatizzare attività come i backup automatici con script e altro, dovrai configurare l'accesso senza password SSH utilizzando le chiavi SSH, poiché le chiavi SSH aumentano la fiducia tra due server Linux per una facile sincronizzazione o trasferimento dei file.

Dopo aver configurato l'accesso senza password SSH, puoi iniziare a utilizzare lo script con i seguenti esempi.

Backup dei file su partizioni diverse

L'esempio seguente eseguirà il backup della directory /etc in una directory Backup su un'altra partizione:

sudo rdiff-backup /etc /media/aaronkilik/Data/Backup/mint_etc.backup

Per escludere una particolare directory e le sue sottodirectory, puoi utilizzare l'opzione --exclude come segue:

sudo rdiff-backup --exclude /etc/cockpit --exclude /etc/bluetooth /media/aaronkilik/Data/Backup/mint_etc.backup

Possiamo includere tutti i file del dispositivo, i file fifo, i file socket e i collegamenti simbolici con l'opzione --include-special-files come di seguito:

sudo rdiff-backup --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup

Ci sono altri due flag importanti che possiamo impostare per la selezione dei file; Dimensione --max-file-size che esclude i file più grandi della dimensione specificata in byte e dimensione --min-file-size che esclude i file più piccoli di la dimensione specificata in byte:

sudo rdiff-backup --max-file-size 5M --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup

Backup di file remoti su server Linux locale

Ai fini di questa sezione, utilizzeremo:

Remote Server (tecmint)	        : 192.168.56.102 
Local Backup Server (backup) 	: 192.168.56.10

Come abbiamo detto prima, devi installare la stessa versione di rdiff-backup su entrambe le macchine, ora prova a verificare la versione su entrambe le macchine come segue:

rdiff-backup -V

Sul server di backup, crea una directory in cui memorizzerà i file di backup in questo modo:

mkdir -p /backups

Ora dal server di backup, esegui i seguenti comandi per effettuare un backup delle directory /var/log/ e /root dal server Linux remoto 192.168.56.102 in /backups:

rdiff-backup [email ::/var/log/ /backups/192.168.56.102_logs.backup
rdiff-backup [email ::/root/ /backups/192.168.56.102_rootfiles.backup

Lo screenshot seguente mostra il file root sul server remoto 192.168.56.102 e i file di backup sul server back 192.168.56.10:

Prendi nota della directory rdiff-backup-data creata nella directory backup come mostrato nello screenshot, contiene dati vitali relativi al processo di backup e ai file incrementali.

Ora, sul server 192.168.56.102, sono stati aggiunti ulteriori file alla directory principale come mostrato di seguito:

Eseguiamo ancora una volta il comando backup per ottenere i dati modificati, possiamo usare l'opzione -v[0-9] (dove il numero specifica il livello di verbosità, il valore predefinito è 3 che è silenzioso) per imposta la funzione di verbosità:

rdiff-backup -v4 [email ::/root/ /backups/192.168.56.102_rootfiles.backup 

E per elencare il numero e la data dei backup incrementali parziali contenuti nella directory /backups/192.168.56.102_rootfiles.backup, possiamo eseguire:

rdiff-backup -l /backups/192.168.56.102_rootfiles.backup/

Automatizzazione del backup rdiff-back utilizzando Cron

Possiamo stampare statistiche riassuntive dopo un backup riuscito con --print-statistics. Tuttavia, se non impostiamo questa opzione, le informazioni saranno comunque disponibili nel file delle statistiche della sessione. Maggiori informazioni su questa opzione nella sezione STATISTICHE della pagina man.

Inoltre, il flag –remote-schema ci consente di specificare un metodo alternativo per connetterci a un computer remoto.

Ora iniziamo creando uno script backup.sh sul server di backup 192.168.56.10 come segue:

cd ~/bin
vi backup.sh

Aggiungi le seguenti righe al file di script.

#!/bin/bash

#This is a rdiff-backup utility backup script

#Backup command
rdiff-backup --print-statistics --remote-schema 'ssh -C %s "sudo /usr/bin/rdiff-backup --server --restrict-read-only  /"'  [email ::/var/logs  /backups/192.168.56.102_logs.back

#Checking rdiff-backup command success/error
status=$?
if [ $status != 0 ]; then
        #append error message in ~/backup.log file
        echo "rdiff-backup exit Code: $status - Command Unsuccessful" >>~/backup.log;
        exit 1;
fi

#Remove incremental backup files older than one month
rdiff-backup --force --remove-older-than 1M /backups/192.168.56.102_logs.back

Salva il file ed esci, quindi esegui il comando seguente per aggiungere lo script al crontab sul server di backup 192.168.56.10:

crontab -e

Aggiungi questa riga per eseguire lo script di backup ogni giorno a mezzanotte:

0   0  *  *  * /root/bin/backup.sh > /dev/null 2>&1

Salva il crontab e chiudilo, ora abbiamo automatizzato con successo il processo di backup. Assicurati che funzioni come previsto.

Leggi la pagina man di rdiff-backup per informazioni aggiuntive, opzioni di utilizzo esaustive ed esempi:

man rdiff-backup

Home page di rdiff-backup: http://www.nongnu.org/rdiff-backup/

Per ora è tutto! In questo tutorial, ti abbiamo mostrato come installare e sostanzialmente utilizzare rdiff-backup, uno script Python facile da usare per il backup incrementale locale/remoto in Linux. Condividi i tuoi pensieri con noi tramite la sezione feedback qui sotto.