Backup2l

Da Guide@Debianizzati.Org.

Debian-swirl.png Versioni Compatibili
Debian 6 "Squeeze"
Debian 7 "Wheezy"
Debian 8 "Jessie"
Debian 9 "Stretch"

Indice

backup2l è uno programma (script bash) che, secondo le parole dell'autore, è destinato al "low-maintenance backup/restore tool for mountable media", cioè uno strumento "leggero" da utilizzare dalla riga di comando per la generazione, la manutenzione e il ripristino dei backup; gli archivi creati a tal fine sono registrati in una parte del file system a ciò dedicata dall'utente (ad esempio, la partizione di un disco rigido appositamente collegato al file system o qualunque altra sua parte).

La progettazione del programma è stata finalizzata a:

Per decidere se un file deve essere incluso nel backup (è nuovo o modificato), il programma, dopo aver verificato i criteri di inclusione configurati dall'utente, ne controlla il nome, la data di modifica, le dimensioni, le proprietà e le autorizzazioni: ciò è eseguito con alcune cautele in modo da mantenere la compatibilità con file system di altri sistemi operativi. Tutti i file di controllo sono memorizzati congiuntamente al file dell'archivio dati nella directory di backup e il loro contenuto è per lo più autoesplicativo: in caso di emergenza, l'utente non solo può fare affidamento sulle funzionalità di ripristino del programma, ma può - se necessario - accedere anche direttamente agli archivi dati per estrarne manualmente il contenuto. Qualora si preveda che il volume dei dati destinati al backup ecceda le dimensioni della periferica rimovibile eventualmente destinata ad archiviarli, è possibile utilizzare una funzione di split-and-collect per fare in modo che gli archivi abbiano una dimensione che li renda ripartibili su più supporti.

Infine, le funzionalità di ripristino, da attivare manualmente, consentono di ricreare facilmente i file o le directory a partire dagli archivi di backup (comprensivi degli attributi originali).

Installazione

Il programma è disponibile nei repository on-line di Debian GNU/Linux e, quindi, può agevolmente essere installato con i consueti gestori di pacchetti, ad esempio, impartendo come utente root i seguenti comandi da terminale:

#apt-get install backup2l

Per maggiori informazioni su backup2l usate il comando : man page

dipendenze: findutils

raccomandato: tar, afio

consigliato: bzip2, cdlabelgen

Questo è tutto quello che serve per l'installazione.

Configurazione

La configurazione è piuttosto semplice e consiste nella impostazione di alcuni parametri del file /etc/backup2l.conf che, di fatto, è uno script bash e, quindi, le righe precedute dal carattere '#' rappresentano commenti, mentre tutti i rimanenti contenuti rappresentano istruzioni per il programma. Di seguito saranno riportati solo i parametri di cui è indispensabile conoscere l'esistenza per utilizzare da subito backup2l.

Volume identification

il parametro VOLNAME specifica il prefisso utilizzato dal programma per attribuire la prima parte del nome del file destinato ad archiviare i dati secondo lo schema di backup differenziale; ad esempio:

# Volume identification

# This is the prefix for all output files;
# multiple volumes can be handled by using different configuration files
VOLNAME="all"

qualora sia mantenuto il parametro di default "all", gli archivi di backup saranno sistematicamente generati, ad esempio, con i seguenti nomi:

all.1 
all.11
all.111
etc........

dove i numeri posposti al prefisso "all" rappresentano i livelli e sottolivelli di ciascun backup differenziale che si è succeduto nel tempo.

Source files

Il parametro SRCLIST indica al programma l'elenco delle directory del proprio file system da includere nel backup; per ciascuna di esse' è specificato il percorso completo (path) a partire da directory radice ('/') ed uno "spazio" di separazione dalla successiva voce nell'elenco; ad esempio, il valore di default del parametro prevede di includere le directory /etc, /root, /home, /var/mail, /usr/local:

# Source files
 
 # List of directories to make backups of.
 # All paths MUST be absolute and start with a '/'!
 SRCLIST=(/etc /root /home /var/mail /usr/local)

naturalmente, il valore di questo parametro potrà e dovrà essere modificato in ragione delle esigenze dell'utente e della collocazione nel file system dei dati di suo interesse.

Skip condition

Il parametro SKIPCOND permette di specificare, se necessario, eventuali criteri di esclusione dal backup per file che soddisfano i requisiti del parametro SRCLIST. Ad esempio, volendo includere nel backup la directory del progetto di un programma scritto in linguaggio C, si potrebbe volerne includere tutto il contenuto tranne gli object file (quelli che terminano con l'estensione .o) prodotti dal compilatore e propedeutici alla generazione dell'eseguibile, ma ritenuti superflui ai fini del backup.

Ciò può essere ottenuto specificando il pattern del nome dei file che si intendono escludere secondo la sintassi del comando find (consultare il manuale del comando per maggiori dettagli).

Ad esempio, il valore di default previsto per tale parametro esclude tutti i file il cui nome contiene la sequenza di caratteri .nobackup oppure (clausola -o che rappresenta un or logico) che terminano con .o:

# The following expression specifies the files not to be archived.
# See the find(1) man page for further info. It is discouraged to
# use anything different from conditions (e. g. actions) as it may have
# unforeseeable side effects.
 
# This example skips all files and directories with a path name containing
# '.nobackup' and all .o files:
SKIPCOND=(-path "*.nobackup*" -o -name "*.o")

Qualora, ad esempio, volessimo escludere anche tutti i file che terminano con l'estensione .tmp il parametro potrebbe essere così modificato:

SKIPCOND=(-path "*.nobackup*" -o -name "*.o" -o -name "*.tmp")

Questo parametro è estremamente utile soprattutto in sistemi contenenti grandi volumi di dati in quanto, come è esperienza comune, all'interno di essi sono presenti un gran numero di file che è possibile escludere con sicurezza dal backup ottimizzando lo spazio occupato sul dispositivo a ciò destinato.

In ogni caso, qualora non si abbia bisogno di escludere alcun file, il parametro può essere semplicemente annullato commentandolo nel file di configurazione, cioè anteponendo ad esso il carattere '#'; ad esempio:

# SKIPCOND=(-path "*.nobackup*" -o -name "*.o")

e togliendo il commento in:

# If you do not have anything to skip, use:
SKIPCOND=(-false)     # "SKIPCOND=()" does not work

Backup directory (destination)

Il parametro BACKUP_DIR specifica il percorso completo (path) a partire da directory radice (/) all'interno del quale il programma genererà gli archivi di backup ed i file di controllo.

Nello stesso percorso esso cercherà gli archivi di backup in caso di ripristino; ad esempio, il valore di default del parametro è /disk2/backup:

# Destination

# Mount point of backup device (optional)
#BACKUP_DEV="/disk2"

# Destination directory for backups;
# it must exist and must not be the top-level of BACKUP_DEV
BACKUP_DIR="/disk2/backup"

Naturalmente, esso deve essere cambiato indicando la collocazione prescelta sul proprio sistema altrimenti il programma non funzionerà.

Backup parameters

I parametri di seguito indicati controllano l'algoritmo di backup gerarchico differenziale utilizzato dal programma:

I valori di default previsti dal programma sono adeguati alla maggior parte dei casi d'uso e sono di seguito riportati:

# Backup parameters

# Number of levels of differential backups (1..9)
MAX_LEVEL=3

# Maximum number of differential backups per level (1..9)
MAX_PER_LEVEL=8

# Maximum number of full backups (1..8)
MAX_FULL=2

# For differential backups: number of generations to keep per level;
# old backups are removed such that at least GENERATIONS * MAX_PER_LEVEL
# recent versions are still available for the respective level
GENERATIONS=1

# If the following variable is 1, a check file is automatically generated
CREATE_CHECK_FILE=1

Attivazione backup2l

Per poter abilitare il funzionamento dello script, occorre commentare una riga nella parte finale

# Remove this line after the setup is finished.
#UNCONFIGURED=1

Fatto questo lo script potrà essere eseguito.

Verifica della configurazione dello scheduler

Terminata la configurazione di backup2l non resta che verificarne la predisposizione all'esecuzione tramite lo scheduler di sistema.

Come impostazione di default, l'installazione di backup2l prevede la creazione di uno script nella cartella /etc/cron.daily con il nome zz-backup2l il cui contenuto è il seguente:

#!/bin/bash

# The following command invokes 'backup2l' with the default configuration
# file (/etc/backup2l.conf).
#
# (Re)move it or this entire script if you do not want automatic backups.
#
# Redirect its output if you do not want automatic e-mails after each backup.

! which backup2l > /dev/null || nice -n 19 backup2l -b 

Come si può vedere, lo script:

Durante l'esecuzione del backup, il programma genera un output che lo scheduler, di norma, allega ad un'email inviata all'amministratore di sistema con la registrazione delle attività svolte.

Warning.png ATTENZIONE
per poter ricevere le email così generate è indispensabile aver configurato un MTA (mail transfer agent) sul proprio sistema (come, ad esempio, exim).


Il backup è, quindi, eseguito almeno una volta al giorno, all'orario specificato nel file di configurazione /etc/crontab; resta inteso che il backup non sarà eseguito qualora all'orario previsto il sistema fosse spento oppure lo scheduler non fosse in attivo.

Esempio

A partire da una configurazione che prevede i seguenti parametri:

MAX_LEVEL=2
MAX_PER_LEVEL=9
MAX_FULL=2

backup2l genera un resoconto completo che è inviato per email, come nell'esempio sotto riportato:

/etc/cron.daily/zz-backup2l:
backup2l v1.4 by Gundolf Kiefer

Sun Aug 30 06:35:36 CEST 2009

Running pre-backup procedure...
pre-backup: nothing to do

Removing old backups...
removing <all.11>
removing <all.12>
removing <all.13>
removing <all.14>
removing <all.15>
removing <all.16>
removing <all.17>
removing <all.18>
removing <all.19>
removing <all.1>
moving <all.21> to <all.11>
moving <all.22> to <all.12>
moving <all.23> to <all.13>
moving <all.24> to <all.14>
moving <all.25> to <all.15>
moving <all.26> to <all.16>
moving <all.27> to <all.17>
moving <all.281> to <all.181>
moving <all.282> to <all.182>
moving <all.283> to <all.183>
moving <all.284> to <all.184>
moving <all.285> to <all.185>
moving <all.286> to <all.186>
moving <all.287> to <all.187>
moving <all.288> to <all.188>
moving <all.289> to <all.189>
moving <all.28> to <all.18>
moving <all.291> to <all.191>
moving <all.292> to <all.192>
moving <all.293> to <all.193>
moving <all.294> to <all.194>
moving <all.295> to <all.195>
moving <all.296> to <all.196>
moving <all.297> to <all.197>
moving <all.298> to <all.198>
moving <all.299> to <all.199>
moving <all.29> to <all.19>
moving <all.2> to <all.1>
removing <all.181>
removing <all.182>
removing <all.183>
removing <all.184>
removing <all.185>
removing <all.186>
removing <all.187>
removing <all.188>
removing <all.189>

Preparing full backup <all.2>...
57239 / 57239 file(s), 10984 / 10984 dir(s), 5.1GB / 5.1GB (uncompressed)
skipping: 0 file(s), 0 dir(s), 0 B (uncompressed)

Creating archive using 'DRIVER_TAR_GZ'...
Checking TOC of archive file (< real file, > archive entry)...
9210c9210
< /home/mmbarabba/data/karamba/jads/monitor-em-a??ao.png
---
> /home/mmbarabba/data/karamba/jads/monitor-em-a\303\247ao.png
Creating check file for <all.2>...

Running post-backup procedure...
post-backup: nothing to do

Sun Aug 30 06:50:58 CEST 2009


Summary
=======

Backup Date Time | Size | Skipped Files+D | New Obs. | Err.
------------------------------------------------------------------------------
all.1 2009-05-22 06:33 |4747413K | 0 63157 |63157 0 | 1
all.11 2009-06-01 06:33 | 25601K | 0 63779 | 1021 399 | 0
all.12 2009-06-11 06:33 | 11918K | 0 63781 | 179 177 | 0
all.13 2009-06-21 06:33 | 18581K | 0 64058 | 471 194 | 0
all.14 2009-07-01 06:33 | 39216K | 0 67235 | 5663 2486 | 0
all.15 2009-07-11 06:38 | 46210K | 0 67812 | 1477 900 | 0
all.16 2009-07-21 06:34 | 21308K | 0 67809 | 722 725 | 0
all.17 2009-07-31 06:34 | 22159K | 0 67944 | 875 740 | 0
all.18 2009-08-10 06:39 | 12044K | 0 68065 | 336 215 | 0
all.19 2009-08-20 06:40 | 43597K | 0 68194 | 1507 1378 | 0
all.191 2009-08-21 06:32 | 14503K | 0 68200 | 158 152 | 0
all.192 2009-08-22 06:33 | 11011K | 0 68205 | 80 75 | 0
all.193 2009-08-23 06:33 | 10960K | 0 68217 | 44 32 | 0
all.194 2009-08-24 06:33 | 10961K | 0 68228 | 43 32 | 0
all.195 2009-08-25 06:33 | 11141K | 0 68202 | 79 105 | 0
all.196 2009-08-26 06:35 | 11023K | 0 68213 | 43 32 | 0
all.197 2009-08-27 06:35 | 21848K | 0 68205 | 759 767 | 0
all.198 2009-08-28 06:44 | 11104K | 0 68198 | 209 216 | 0
all.199 2009-08-29 06:43 | 10979K | 0 68213 | 47 32 | 0
all.2 2009-08-30 06:35 |4842014K | 0 68223 |68223 0 | 1

Filesystem Size Used Avail Use% Mounted on
/dev/hdb1 38G 9.7G 27G 28% /mnt/backup

Come potete vedere, il resoconto è ben dettagliato e qualora vi fossero errori, sono segnalati con il riferimento al path completo del file interessato per consentire un intervento mirato.
Il report è ben dettagliato e in questo caso si svolge alla fine del ciclo programmato, per poi ricominciare.

Sintassi

Si riporta di seguito la sintassi del programma tratta dalla pagina di manuale con i riferimenti ritenuti più interessanti:

backup2l [ -c conffile ] [ -t backup-ID ] command

Opzioni

Comandi

Warning.png ATTENZIONE
il pattern di ricerca è applicato non solo ai nomi dei file, ma anche a tutte le voci presenti nell'output generato a partire dal contenuto dell'archivio di backup: è, quindi, possibile eseguire ricerche anche su altre proprietà dei file come, ad esempio, il creatore o la data di modifica. Qualora di desiderasse limitare la ricerca solo nome del file, è possibile far precedere il pattern di ricerca da "<space>/.*".


Warning.png ATTENZIONE
è possibile, ma è sconsigliato, ripristinare i file del backup nelle loro path originali eseguendo il comando cd / prima del comando backup2l -r


Utilizzo

Backup manuale

L'uso di backup2l è piuttosto semplice. Come precedentemente accennato, una volta correttamente completata la configurazione, il backup è eseguito automaticamente su base giornaliera qualora il sistema e il suo scheduler siano operativi all'orario previsto. Ciò non di meno, è possibile avviare backup2l manualmente, ad esempio nel caso in cui sia avvenuta, nel corso della stessa giornata, un'importante variazione ai dati successivamente all'attivazione automatica della procedura; in tal caso, il comando da impartire è:

backup2l -b 

È bene ricordare che tale comando di norma è utilizzato con l'utenza di root (ad esempio, quando è avviato dal scheduler di sistema).

Ripristino

Il comando di ripristino deve essere necessariamente impartito manualmente generalmente con utenza di 'root': fortunatamente, è un'operazione molto semplice sebbene vada eseguita con alcune cautele. In particolare, come già richiamato nella spiegazione del comando -restore, è bene precisare che backup2l per default ripristina i file provenienti dagli archivi nella directory corrente, cioè quella da cui è eseguito e visualizzabile con il comando pwd; come abbiamo prima citato, è possibile, ma è sconsigliato, ripristinare i file del backup nelle loro path originali eseguendo il comando "cd /" prima del comando backup2l -r. Lo stesso autore del programma, Gundolf Kiefer, da me contattato in merito a tale argomento, ha così risposto:

«You can invoke backup2l -r ... from / to get the files where they were, but that is not recommended as you may accidently overwrite important files by older versions. It is wiser to restore into a temporary directory first and then move the files wherever you want»

«È possibile richiamare backup2l-r ... da / [directory radice, ndr] per riportare i file dove erano, ma non è raccomandato in quanto potrebbe accidentalmente sovrascrivere file importanti con versioni più vecchie. È più saggio eseguire il ripristino prima in una directory temporanea e poi spostare i file dove desiderato»

Volendo, quindi, seguire le cautele sopra indicate, prima di eseguire un ripristino, è preferibile:

  1. creare una directory temporanea per l'estrazione del backup
  2. portarsi al suo interno
  3. eseguire il comando di ripristino

Nell'esempio sotto indicato, a partire dal backup con BID (backup ID) pari a all.153, è ripristinato solo il file /home/html/user/prova.txt perché espressamente specificato:

# mkdir /home/user/backupx
# cd /home/user/backupx
# backup2l -t all.153 -r /home/html/user/prova.txt

Alcune osservazioni:

Una volta completato il ripristino del 'file' specificato, esso comparirà nella cartella temporanea:

/home/user/backupx/home/html/user/prova.txt

dove /home/user/backupx è il path della directory temporanea.

Conclusioni

backup2l è un ottimo strumento, al contempo semplice e potente.

È particolarmente indicato per il backup dei dati di un'installazione di tipo server, ma è comunque possibile utilizzarlo con soddisfazione anche in un'installazione di tipo domestica.

È bene ricordare, comunque, che il programma esegue dei backup differenziali gerarchici e, quindi, che il ripristino, generalmente, coinvolge non uno, ma più archivi, cioè è necessario risalire nella gerarchia dei backup differenziali qualora il file ricercato non abbia subito recenti modifiche: pertanto, per il buon esito del ripristino, è indispensabile non modificare manualmente gli archivi generati dal programma per non interferire con l'algoritmo di rotazione previsto dallo stesso.

Riferimenti




Guida scritta da: Mm-barabba

Swirl-auth40.png Debianized 40%

Estesa da:
Verificata da:

Spoon 00:05, 23 giu 2017 (CEST)

Verificare ed estendere la guida | Cos'è una guida Debianized

Strumenti personali
Namespace
Varianti
Azioni
Navigazione
Risorse
Strumenti