Backup2l: differenze tra le versioni

+ Versioni compatibili
(Creata pagina con '=backup2l= backup2l è uno programma (script bash) che, secondo le parole dell'autore, è destinato al "low-maintenance backup/restore tool for mountable media", cioè uno strum...')
 
(+ Versioni compatibili)
Riga 1: Riga 1:
=backup2l=
{{Versioni compatibili}}
 
__TOC__
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).
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:
La progettazione del programma è stata finalizzata a:
*minimizzare la manutenzione da parte dell'amministratore: una volta installato e configurato, non richiede altri particolari interventi in quanto è avviato giornalmente in automatico dallo scheduler di sistema (cron);
*minimizzare la manutenzione da parte dell'amministratore: una volta installato e configurato, non richiede altri particolari interventi in quanto è avviato giornalmente in automatico dallo scheduler di sistema ([[cron]]);
*ottenere trasparenza nelle procedure di archiviazione: richiama programmi ben conosciuti e consolidati (come tar, afio e bzip2) per la generazione e compressione degli archivi prodotti;
*ottenere trasparenza nelle procedure di archiviazione: richiama programmi ben conosciuti e consolidati (come tar, afio e bzip2) per la generazione e compressione degli archivi prodotti;
*robustezza nei risultati: implementazione di un algoritmo per backup gerarchici differenziali con un numero di livelli e sottolivelli personalizzabili che prevede la rotazione degli archivi creati in modo da impiegare in modo efficiente lo spazio disponibile sulle periferiche utilizzate (per maggiori dettagli sullo schema di rotazione, consultare la pagina di manuale con il comando man backup2l).
*robustezza nei risultati: implementazione di un algoritmo per backup gerarchici differenziali con un numero di livelli e sottolivelli personalizzabili che prevede la rotazione degli archivi creati in modo da impiegare in modo efficiente lo spazio disponibile sulle periferiche utilizzate (per maggiori dettagli sullo schema di rotazione, consultare la pagina di manuale con il comando "man backup2l").


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.
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.
Riga 13: Riga 13:


==Installazione ==
==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:
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
<pre>#apt-get install backup2l</pre>
   
   
Per maggiori informazioni su backup2l usate il comando : ''man page''
Per maggiori informazioni su backup2l usate il comando : ''man page''
Riga 29: Riga 29:
==configurazione==
==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.
La configurazione è piuttosto semplice e consiste nella impostazione di alcuni parametri del file <code>/etc/backup2l.conf</code> 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===
===Volume identification===
Riga 40: Riga 40:
VOLNAME="all"
VOLNAME="all"
</pre>
</pre>
qualora sia mantenuto il parametro di default all, gli archivi di backup saranno sistematicamente generati, ad esempio, con i seguenti nomi:
qualora sia mantenuto il parametro di default "all", gli archivi di backup saranno sistematicamente generati, ad esempio, con i seguenti nomi:
all.1  
<pre>
all.11
all.1  
all.111
all.11
etc........
all.111
 
etc........
dove i numeri posposti al prefisso all rappresentano i livelli e sottolivelli di ciascun backup differenziale che si è succeduto nel tempo.
</pre>
dove i numeri posposti al prefisso "all" rappresentano i livelli e sottolivelli di ciascun backup differenziale che si è succeduto nel tempo.


=== Source files ===
=== 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''':
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''':
<pre>
<pre>
# Source files
# Source files
Riga 57: Riga 58:
  SRCLIST=(/etc /root /home /var/mail /usr/local)
  SRCLIST=(/etc /root /home /var/mail /usr/local)
</pre>
</pre>
naturalmente, il valore di questo parametro potrà e dovrà essere modificato in ragione dell'esigenze dell'utente e della collocazione nel file system dei dati di suo interesse.
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 ===
=== Skip condition ===
Riga 81: Riga 82:
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.
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:
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:
<pre>
<pre>
# SKIPCOND=(-path "*.nobackup*" -o -name "*.o")
# SKIPCOND=(-path "*.nobackup*" -o -name "*.o")
Riga 166: Riga 167:
*con una priorità di processo (programma nice) tale da interferire il meno possibile con il normale funzionamento del sistema (nice -n 19 backup2l -b).
*con una priorità di processo (programma nice) tale da interferire il meno possibile con il normale funzionamento del sistema (nice -n 19 backup2l -b).


Durante l'esecuzione del backup, il programma genera un output che lo scheduler, di norma, allega ad un email inviato all'amministratore di sistema con la registrazione delle attività svolte.
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.


{{ Warningbox | per poter ricevere le email così generate è indispensabile aver configurato un MTA (mail transfer agent) sul proprio sistema (come, ad esempio, exim).}}
{{ Warningbox | 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.
Il backup è, quindi, eseguito almeno una volta al giorno, all'orario specificato nel file di configurazione <code>/etc/crontab</code>; resta inteso che il backup non sarà eseguito qualora all'orario previsto il sistema fosse spento oppure lo scheduler non fosse in attivo.


==esempio==
==Esempio==


A partire da una configurazione che prevede i seguenti parametri:
A partire da una configurazione che prevede i seguenti parametri:
<pre>MAX_LEVEL=2
<pre>
MAX_LEVEL=2
MAX_PER_LEVEL=9
MAX_PER_LEVEL=9
MAX_FULL=2</pre>
MAX_FULL=2
</pre>
backup2l genera un resoconto completo che è inviato per email, come nell'esempio sotto riportato:
backup2l genera un resoconto completo che è inviato per email, come nell'esempio sotto riportato:
<pre>/etc/cron.daily/zz-backup2l:
<pre>
/etc/cron.daily/zz-backup2l:
backup2l v1.4 by Gundolf Kiefer
backup2l v1.4 by Gundolf Kiefer


Riga 281: Riga 285:


Filesystem Size Used Avail Use% Mounted on
Filesystem Size Used Avail Use% Mounted on
/dev/hdb1 38G 9.7G 27G 28% /mnt/backup</pre>
/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.
</pre>
<br>
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.<br>
Il report è ben dettagliato e in questo caso si svolge alla fine del ciclo programmato , per poi ricominciare .
Il report è ben dettagliato e in questo caso si svolge alla fine del ciclo programmato , per poi ricominciare .


==Sintassi==
==Sintassi==
Si riporta di seguito la sintassi del programma tratta dalla pagina di manuale con i riferimenti ritenuti più interessanti:
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
  <pre>backup2l [ -c conffile ] [ -t backup-ID ] command</pre>


===Opzioni===
===Opzioni===
*-c, --conf conffile: se presente, permette di specificare il file di configurazione qualora fosse diverso da quello di default (etc/backup2l.conf).
*-c, --conf conffile: se presente, permette di specificare il file di configurazione qualora fosse diverso da quello di default (<code>/etc/backup2l.conf</code>).
*-t, --time BID: se presente, questa opzione seleziona uno specifico backup utilizzando come riferimento il BID (backup ID o identificativo di backup), cioé un identificativo univoco che il programma attribuisce a ciascun archivio di backup in funzione del livello e sottolivello a cui si riferisce (consultare il manuale del programma per maggiori dettagli); su tale archivio così selezionato saranno applicati i successivi comandi --locate e --restore.
*-t, --time BID: se presente, questa opzione seleziona uno specifico backup utilizzando come riferimento il BID (backup ID o identificativo di backup), cioè un identificativo univoco che il programma attribuisce a ciascun archivio di backup in funzione del livello e sottolivello a cui si riferisce (consultare il manuale del programma per maggiori dettagli); su tale archivio così selezionato saranno applicati i successivi comandi --locate e --restore.


===Comandi===
===Comandi===
Riga 303: Riga 307:
{{ Warningbox | 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>/.*". }}
{{ Warningbox | 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>/.*". }}


*-l, --locate [ pattern list ]: visualizza la path in cui saranno ripristinati i file dell'ultimo backup o di quello specificato con l'opzione --time ; se fornito, il parametro pattern list è utilizzato in analogia a quanto già indicato per il comando --get-available. Sono interessati i file attivi cioé quelli presenti nel sistema al momento del backup. In sistesi, quindi, questo comando indica quali file saranno estratti, da quale archivio per ripristinare lo stato del sistema al momento dello specifico backup selezionato;
*-l, --locate [ pattern list ]: visualizza la path in cui saranno ripristinati i file dell'ultimo backup o di quello specificato con l'opzione --time ; se fornito, il parametro pattern list è utilizzato in analogia a quanto già indicato per il comando --get-available. Sono interessati i file attivi cioè quelli presenti nel sistema al momento del backup. In sintesi, quindi, questo comando indica quali file saranno estratti, da quale archivio per ripristinare lo stato del sistema al momento dello specifico backup selezionato;
*-r, --restore [ pattern list ]: esegue le stesse azioni del comando --locate, ma in più esegue fisicamente il ripristino del backup; è bene precisare che i file sono ripristinati nella directory corrente, cioé quella da cui è eseguito il comando backup2l -r e visualizzabile con il comando pwd;
*-r, --restore [ pattern list ]: esegue le stesse azioni del comando --locate, ma in più esegue fisicamente il ripristino del backup; è bene precisare che i file sono ripristinati nella directory corrente, cioè quella da cui è eseguito il comando backup2l -r e visualizzabile con il comando "pwd";


{{ Warningbox | è possibile, ma è sconsigliato, ripristinare i file del backup nelle loro path originali eseguendo il comando cd / prima del comando backup2l -r }}
{{ Warningbox | è possibile, ma è sconsigliato, ripristinare i file del backup nelle loro path originali eseguendo il comando cd / prima del comando backup2l -r }}
Riga 311: Riga 315:
*-m, --make-check [ BID list ]: crea un 'file di controllo' usando il programma md5sum; se nessun BID (backup ID) è specificato, il file è creato per tutti gli archivi che ne sono sprovvisti;
*-m, --make-check [ BID list ]: crea un 'file di controllo' usando il programma md5sum; se nessun BID (backup ID) è specificato, il file è creato per tutti gli archivi che ne sono sprovvisti;
*-v, --verify [ BID list ]: verifica l'integrità degli archivi di backup usando il file di controllo precedentemente generato; se nessun BID (backup ID) è specificato, tutti gli archivi esistenti sono controllati; se il file di controllo non è stato generato, è verificata solo l'esistenza del file e l'integrità del file secondo quanto previsto dal programma di archiviazione utilizzato;
*-v, --verify [ BID list ]: verifica l'integrità degli archivi di backup usando il file di controllo precedentemente generato; se nessun BID (backup ID) è specificato, tutti gli archivi esistenti sono controllati; se il file di controllo non è stato generato, è verificata solo l'esistenza del file e l'integrità del file secondo quanto previsto dal programma di archiviazione utilizzato;
*-x, --extract capacity max-free BID-list: organizza gli archivi dei backup specificati in modo da poter essere a loro volta archivati su supporti rimovibili, come i CD-ROM, di limitata capacità (pari a capacity MByte), lasciando su ciascuno di essi al massimo max-free MByte liberi; il parametro BID-list può anche essere specificato attraverso wildcards come, ad esempio, 1 '2*'; il comando genera un elenco di directory numerate ciascuna delle quali rappresenta il supporto su cui dovrà essere trasferito; la procedura preserva l'ordine degli archivi di backup e gli archivi le cui dimensioni eccedono quella del supporto sono suddivisi in più file con un numero seriale aggiunto al nome di ciascuno di essi. Le operazioni sono interattive: basta eseguire il comando per capire le attività eseguite ed è possibile interromperlo qualora esse fossero difformi da quanto desiderato.
*-x, --extract capacity max-free BID-list: organizza gli archivi dei backup specificati in modo da poter essere a loro volta archiviati su supporti rimovibili, come i CD-ROM, di limitata capacità (pari a capacity MByte), lasciando su ciascuno di essi al massimo max-free MByte liberi; il parametro BID-list può anche essere specificato attraverso wildcards come, ad esempio, 1 '2*'; il comando genera un elenco di directory numerate ciascuna delle quali rappresenta il supporto su cui dovrà essere trasferito; la procedura preserva l'ordine degli archivi di backup e gli archivi le cui dimensioni eccedono quella del supporto sono suddivisi in più file con un numero seriale aggiunto al nome di ciascuno di essi. Le operazioni sono interattive: basta eseguire il comando per capire le attività eseguite ed è possibile interromperlo qualora esse fossero difformi da quanto desiderato.


==Utilizzo==
==Utilizzo==
Riga 323: Riga 327:


===Ripristino===
===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:
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»''
''«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»''
Riga 334: Riga 338:
#eseguire il comando di ripristino
#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:
Nell'esempio sotto indicato, a partire dal backup con BID (backup ID) pari a all.153, è ripristinato solo il file <code>/home/html/user/prova.txt</code> perché espressamente specificato:
<pre<
<pre>
# mkdir /home/user/backupx
# mkdir /home/user/backupx
# cd /home/user/backupx
# cd /home/user/backupx
Riga 349: Riga 353:
/home/user/backupx/home/html/user/prova.txt
/home/user/backupx/home/html/user/prova.txt
</pre>
</pre>
dove ''/home/user/backupx'' è la path della directory temporanea.
dove ''/home/user/backupx'' è il path della directory temporanea.


==Conclusioni==
==Conclusioni==
Riga 358: Riga 362:
È 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.
È 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==
== Riferimenti ==
http://backup2l.sourceforge.net/:http::Link
http://backup2l.sourceforge.net/:http::Link
<br>
<br>
6 999

contributi