Ricerca nel sito web

Rsnapshot (basato su Rsync): un'utilità di backup del file system locale/remoto per Linux


rsnapshot è un'utilità di backup del file system locale/remoto open source, scritta in linguaggio Perl che sfrutta la potenza di rsnapshotRsync e SSH per creare backup incrementali programmati di filesystem Linux/Unix, occupando solo lo spazio di un singolo backup completo più le differenze e conservare tali backup su un disco locale su diversi dischi rigidi, una chiavetta USB esterna , un'unità montata su NFS o semplicemente in rete su un altro computer tramite SSH.

Questo articolo mostrerà come installare, configurare e utilizzare rsnapshot per creare incrementali oraria, giornaliera, settimanale e < backup localimensili e backup remoti. Per eseguire tutti i passaggi descritti in questo articolo, devi essere un utente root.

Passaggio 1: installazione di Rsnapshot Backup in Linux

L'installazione di rsnapshot utilizzando Yum e APT potrebbe differire leggermente se utilizzi Red Hat e Distribuzioni basate su Debian.

Su RHEL/CentOS

Per prima cosa dovrai installare e abilitare un repository di terze parti chiamato EPEL. Segui il collegamento seguente per installare e abilitare nei tuoi sistemi RHEL/CentOS. Gli utenti Fedora non richiedono alcuna configurazione speciale del repository.

  1. Installa e abilita il repository EPEL in RHEL/CentOS 6/5/4

Una volta completata la configurazione, installa rsnapshot dalla riga di comando come mostrato.

yum install rsnapshot
Su Debian/Ubuntu/Linux Mint

Per impostazione predefinita, rsnapshot è incluso nei repository di Ubuntu, quindi puoi installarlo utilizzando il comando apt-get come mostrato.

apt-get install rsnapshot

Passaggio 2: configurazione dell'accesso senza password SSH

Per eseguire il backup di server Linux remoti, il tuo server di backup rsnapshot sarà in grado di connettersi tramite SSH senza password. Per fare ciò, dovrai creare una chiave pubblica e privata SSH per autenticarti sul server rsnapshot. Segui il collegamento seguente per generare chiavi pubbliche e private sul tuo server di backup rsnapshot.

  1. Crea un accesso senza password SSH utilizzando SSH Keygen

Passaggio 3: configurazione di Rsnapshot

Ora dovrai modificare e aggiungere alcuni parametri al file di configurazione rsnapshot. Apri il file rsnapshot.conf con l'editor vi o nano.

vi /etc/rsnapshot.conf

Successivamente crea una directory di backup in cui desideri archiviare tutti i tuoi backup. Nel mio caso la posizione della directory di backup è "/data/backup/". Cerca e modifica il seguente parametro per impostare la posizione di backup.

snapshot_root			 /data/backup/

Elimina anche il commento dalla riga "cmd_ssh" per consentire l'esecuzione di backup remoti su SSH. Per rimuovere il commento dalla riga rimuovi il "#" davanti alla riga seguente in modo che rsnapshot possa trasferire in modo sicuro i tuoi dati su un server di backup.

cmd_ssh			/usr/bin/ssh

Successivamente, devi decidere quanti vecchi backup desideri conservare, perché rsnapshot non aveva idea della frequenza con cui desideri acquisire istantanee. È necessario specificare la quantità di dati da salvare, aggiungere intervalli da conservare e quanti di ciascuno.

Bene, le impostazioni predefinite sono abbastanza buone, ma vorrei comunque che tu abilitassi l'intervallo "mensile" in modo da poter avere anche backup a lungo termine. Modifica questa sezione in modo che sia simile alle impostazioni seguenti.

#########################################
          BACKUP INTERVALS            #
Must be unique and in ascending order #
i.e. hourly, daily, weekly, etc.      #
#########################################

interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3

Un'altra cosa che devi modificare è la variabile "ssh_args". Se hai modificato la porta SSH predefinita (22) con qualcos'altro, devi specificare il numero di porta del server di backup remoto.

ssh_args		-p 7851

Infine, aggiungi le directory di backup locali e remote di cui desideri eseguire il backup.

Backup delle directory locali

Se hai deciso di eseguire il backup delle tue directory localmente sullo stesso computer, la voce di backup sarà simile a questa. Ad esempio, sto eseguendo il backup delle mie directory /tecmint e /etc.

backup		/tecmint/		localhost/
backup		/etc/			localhost/
Backup di directory remote

Se desideri eseguire il backup delle directory di un server remoto, devi indicare a rsnapshot dove si trova il server e di quali directory desideri eseguire il backup. Qui sto eseguendo un backup della directory "/home" del mio server remoto nella directory "/data/backup" sul server rsnapshot.

backup		 [email :/home/ 		/data/backup/

Leggi anche:

  1. Come eseguire il backup/sincronizzazione delle directory utilizzando lo strumento Rsync (sincronizzazione remota).
  2. Come trasferire file/cartelle utilizzando il comando SCP
Escludi file e directory

Qui escluderò tutto e poi definirò specificamente solo ciò di cui voglio eseguire il backup. Per fare ciò, è necessario creare un file di esclusione.

vi /data/backup/tecmint.exclude

Per prima cosa ottieni l'elenco delle directory di cui desideri eseguire il backup e aggiungi ( – *) per escludere tutto il resto. Questo eseguirà il backup solo di ciò che hai elencato nel file. Il mio file di esclusione è simile al seguente.

+ /boot
+ /data
+ /tecmint
+ /etc
+ /home
+ /opt
+ /root
+ /usr
- /usr/*
- /var/cache
+ /var
- /*

Usare l'opzione di esclusione file può essere molto complicato a causa dell'uso della ricorsione rsync. Quindi, il mio esempio sopra potrebbe non essere quello che stai cercando. Successivamente aggiungi il file di esclusione al file rsnapshot.conf.

exclude_file    /data/backup/tecmint.exclude

Finalmente hai quasi finito con la configurazione iniziale. Salva il file di configurazione "/etc/rsnapshot.conf" prima di procedere ulteriormente. Ci sono molte opzioni da spiegare, ma ecco il mio file di configurazione di esempio.

config_version  1.2
snapshot_root   /data/backup/
cmd_cp  /bin/cp
cmd_rm  /bin/rm
cmd_rsync       /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger      /usr/bin/logger
cmd_du  /usr/bin/du
interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3
ssh_args	-p 25000
verbose 	2
loglevel        4
logfile /var/log/rsnapshot/
exclude_file    /data/backup/tecmint.exclude
rsync_long_args --delete        --numeric-ids   --delete-excluded
lockfile        /var/run/rsnapshot.pid
backup		/tecmint/		localhost/
backup		/etc/			localhost/
backup		[email :/home/ 		/data/backup/

Tutte le opzioni di cui sopra e le spiegazioni degli argomenti sono le seguenti:

  1. config_version 1.2=Versione del file di configurazione
  2. snapshot_root=Destinazione di backup per archiviare le istantanee
  3. cmd_cp=Percorso per copiare il comando
  4. cmd_rm=Percorso per rimuovere il comando
  5. cmd_rsync=Percorso per la sincronizzazione
  6. cmd_ssh=Percorso verso SSH
  7. cmd_logger=Percorso dell'interfaccia dei comandi della shell per syslog
  8. cmd_du=Percorso del comando di utilizzo del disco
  9. intervallo orario=Quanti backup orari conservare.
  10. intervallo giornaliero=Quanti backup giornalieri conservare.
  11. intervallo settimanale=quanti backup settimanali conservare.
  12. intervallo mensile=Quanti backup mensili conservare.
  13. ssh_args=Argomenti SSH facoltativi, come una porta diversa (-p )
  14. verboso=autoesplicativo
  15. loglevel=autoesplicativo
  16. logfile=Percorso del file di registro
  17. exclude_file=Percorso del file di esclusione (verrà spiegato più dettagliatamente)
  18. rsync_long_args=Argomenti lunghi da passare a rsync
  19. lockfile=autoesplicativo
  20. backup=percorso completo degli elementi di cui eseguire il backup seguito dal relativo percorso di posizionamento.

Passaggio 4: verificare la configurazione di Rsnapshot

Una volta terminata l'intera configurazione, è il momento di verificare che tutto funzioni come previsto. Esegui il comando seguente per verificare che la configurazione abbia la sintassi corretta.

rsnapshot configtest

Syntax OK

Se tutto è configurato correttamente, riceverai un messaggio "Sintassi OK". Se ricevi messaggi di errore, significa che devi correggere tali errori prima di eseguire rsnapshot.

Successivamente, esegui un test su uno degli snapshot per assicurarti di generare risultati corretti. Prendiamo il parametro "orario" per eseguire un test utilizzando l'argomento -t (test). Questo comando seguente mostrerà un elenco dettagliato delle cose che farà, senza farle effettivamente.

rsnapshot -t hourly
Uscita del campione
echo 2028 > /var/run/rsnapshot.pid 
mkdir -m 0700 -p /data/backup/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /usr/local /data/backup/hourly.0/localhost/ 
touch /data/backup/hourly.0/

Nota: il comando precedente indica arsnapshot di creare un backup "orario". In realtà stampa i comandi che eseguirà quando lo eseguiremo realmente.

Passaggio 5: esecuzione manuale di Rsnapshot

Dopo aver verificato i risultati, puoi rimuovere l'opzione “-t” per eseguire realmente il comando.

rsnapshot hourly

Il comando precedente eseguirà lo script di backup con tutta la configurazione che abbiamo aggiunto nel file rsnapshot.conf e creerà una directory "backup" e quindi creerà la struttura di directory sotto di essa che organizza i nostri file. Dopo aver eseguito il comando precedente, puoi verificare i risultati andando alla directory di backup ed elencare la struttura della directory utilizzando il comando ls -l come mostrato.

cd /data/backup
ls -l

total 4
drwxr-xr-x 3 root root 4096 Oct 28 09:11 hourly.0

Passaggio 6: automatizzazione del processo

Per automatizzare il processo, è necessario pianificare l'esecuzione di rsnapshot a determinati intervalli da Cron. Per impostazione predefinita, rsnapshot viene fornito con il file cron in "/etc/cron.d/rsnapshot", se non esiste creane uno e aggiungi le seguenti righe.

Per impostazione predefinita le regole sono commentate, quindi è necessario rimuovere il "#" davanti alla sezione di pianificazione per abilitare questi valori.

This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly
30     3     * * *    root    /usr/bin/rsnapshot daily
0      3     * * 1    root    /usr/bin/rsnapshot weekly
30     2     1 * *    root    /usr/bin/rsnapshot monthly

Lasciami spiegare esattamente cosa fanno le regole cron di cui sopra:

  1. Viene eseguito ogni 4 ore e crea una directory ogni ora nella directory /backup.
  2. Viene eseguito ogni giorno alle 3:30 e crea una directory daily nella directory /backup.
  3. Viene eseguito ogni settimana ogni lunedì alle 3:00 e crea una directory settimanale in /backup directory forte>.
  4. Viene eseguito ogni mensile alle 2:30 e crea una directory mensile nella directory /backup.

Per capire meglio come funzionano le regole cron, ti suggerisco di leggere il nostro articolo che descrive.

  1. 11 Esempi di pianificazione Cron

Passaggio 7: rapporti Rsnapshot

L'rsnapshot fornisce un piccolo ed elegante script Perl di reporting che ti invia un avviso email con tutti i dettagli su ciò che è accaduto durante il backup dei dati. Per impostare questo script, devi copiarlo da qualche parte in "/usr/local/bin" e renderlo eseguibile.

cp /usr/share/doc/rsnapshot-1.3.1/utils/rsnapreport.pl /usr/local/bin
chmod +x /usr/local/bin/rsnapreport.pl

Successivamente, aggiungi il parametro "–stats" nel tuo file "rsnapshot.conf" alla sezione degli argomenti lunghi di rsync.

vi /etc/rsnapshot.conf
rsync_long_args --stats	--delete        --numeric-ids   --delete-excluded

Ora modifica le regole crontab aggiunte in precedenza e chiama lo script rsnapreport.pl per passare i report all'indirizzo email specificato.

This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Hourly Backup" [email 
30     3     * * *    root    /usr/bin/rsnapshot daily 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Daily Backup" [email 
0      3     * * 1    root    /usr/bin/rsnapshot weekly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Weekly Backup" [email 
30     2     1 * *    root    /usr/bin/rsnapshot monthly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Montly Backup" [email 

Una volta aggiunte correttamente le voci sopra, riceverai un rapporto al tuo indirizzo e-mail simile a quello riportato di seguito.

SOURCE           TOTAL FILES	FILES TRANS	TOTAL MB    MB TRANS   LIST GEN TIME  FILE XFER TIME
--------------------------------------------------------------------------------------------------------
localhost/          185734	   11853   	 2889.45    6179.18    40.661 second   0.000 seconds

Collegamenti di riferimento

  1. home page di rsnapshot

Per ora è tutto, se si verificano problemi durante l'installazione, lasciami un commento. Fino ad allora restate sintonizzati su TecMint per articoli più interessanti sul mondo Open source.