Sophie

Sophie

distrib > Mandriva > 2010.2 > x86_64 > by-pkgid > 12d8f04022301fdd2a3c6ad639caca21 > files > 512

dar-2.3.10-1mdv2010.1.x86_64.rpm

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.3.9: http://docutils.sourceforge.net/" />
<title>DAR differential backup mini-howto -IT-</title>
<meta name="author" content="Grzegorz Adam Hankiewicz" />
<meta name="date" content="2006-10-07 19:22:40 +0200" />
<meta name="copyright" content="This document has been placed in the public domain." />
<style type="text/css">

/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
:Date: $Date: 2006/10/21 20:39:41 $
:Version: $Revision: 1.2.4.1 $
:Copyright: This stylesheet has been placed in the public domain.

Default cascading style sheet for the HTML output of Docutils.
*/

/* "! important" is used here to override other ``margin-top`` and
   ``margin-bottom`` styles that are later in the stylesheet or 
   more specific.  See http://www.w3.org/TR/CSS1#the-cascade */
.first {
  margin-top: 0 ! important }

.last, .with-subtitle {
  margin-bottom: 0 ! important }

.hidden {
  display: none }

a.toc-backref {
  text-decoration: none ;
  color: black }

blockquote.epigraph {
  margin: 2em 5em ; }

dl.docutils dd {
  margin-bottom: 0.5em }

/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
  font-weight: bold }
*/

div.abstract {
  margin: 2em 5em }

div.abstract p.topic-title {
  font-weight: bold ;
  text-align: center }

div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
  margin: 2em ;
  border: medium outset ;
  padding: 1em }

div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
  font-weight: bold ;
  font-family: sans-serif }

div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
  color: red ;
  font-weight: bold ;
  font-family: sans-serif }

/* Uncomment (and remove this text!) to get reduced vertical space in
   compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
  margin-bottom: 0.5em }

div.compound .compound-last, div.compound .compound-middle {
  margin-top: 0.5em }
*/

div.dedication {
  margin: 2em 5em ;
  text-align: center ;
  font-style: italic }

div.dedication p.topic-title {
  font-weight: bold ;
  font-style: normal }

div.figure {
  margin-left: 2em }

div.footer, div.header {
  font-size: smaller }

div.line-block {
  display: block ;
  margin-top: 1em ;
  margin-bottom: 1em }

div.line-block div.line-block {
  margin-top: 0 ;
  margin-bottom: 0 ;
  margin-left: 1.5em }

div.sidebar {
  margin-left: 1em ;
  border: medium outset ;
  padding: 1em ;
  background-color: #ffffee ;
  width: 40% ;
  float: right ;
  clear: right }

div.sidebar p.rubric {
  font-family: sans-serif ;
  font-size: medium }

div.system-messages {
  margin: 5em }

div.system-messages h1 {
  color: red }

div.system-message {
  border: medium outset ;
  padding: 1em }

div.system-message p.system-message-title {
  color: red ;
  font-weight: bold }

div.topic {
  margin: 2em }

h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
  margin-top: 0.4em }

h1.title {
  text-align: center }

h2.subtitle {
  text-align: center }

hr.docutils {
  width: 75% }

ol.simple, ul.simple {
  margin-bottom: 1em }

ol.arabic {
  list-style: decimal }

ol.loweralpha {
  list-style: lower-alpha }

ol.upperalpha {
  list-style: upper-alpha }

ol.lowerroman {
  list-style: lower-roman }

ol.upperroman {
  list-style: upper-roman }

p.attribution {
  text-align: right ;
  margin-left: 50% }

p.caption {
  font-style: italic }

p.credits {
  font-style: italic ;
  font-size: smaller }

p.label {
  white-space: nowrap }

p.rubric {
  font-weight: bold ;
  font-size: larger ;
  color: maroon ;
  text-align: center }

p.sidebar-title {
  font-family: sans-serif ;
  font-weight: bold ;
  font-size: larger }

p.sidebar-subtitle {
  font-family: sans-serif ;
  font-weight: bold }

p.topic-title {
  font-weight: bold }

pre.address {
  margin-bottom: 0 ;
  margin-top: 0 ;
  font-family: serif ;
  font-size: 100% }

pre.line-block {
  font-family: serif ;
  font-size: 100% }

pre.literal-block, pre.doctest-block {
  margin-left: 2em ;
  margin-right: 2em ;
  background-color: #eeeeee }

span.classifier {
  font-family: sans-serif ;
  font-style: oblique }

span.classifier-delimiter {
  font-family: sans-serif ;
  font-weight: bold }

span.interpreted {
  font-family: sans-serif }

span.option {
  white-space: nowrap }

span.pre {
  white-space: pre }

span.problematic {
  color: red }

span.section-subtitle {
  /* font-size relative to parent (<h#> element) */
  font-size: 80% }

table.citation {
  border-left: solid thin gray }

table.docinfo {
  margin: 2em 4em }

table.docutils {
  margin-top: 0.5em ;
  margin-bottom: 0.5em }

table.footnote {
  border-left: solid thin black }

table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
  padding-left: 0.5em ;
  padding-right: 0.5em ;
  vertical-align: top }

table.docutils th.field-name, table.docinfo th.docinfo-name {
  font-weight: bold ;
  text-align: left ;
  white-space: nowrap ;
  padding-left: 0 }

h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
  font-size: 100% }

tt.docutils {
  background-color: #eeeeee }

ul.auto-toc {
  list-style-type: none }

</style>
</head>
<body>
<div class="document" id="dar-differential-backup-mini-howto-it">
<h1 class="title">DAR differential backup mini-howto -IT-</h1>
<table class="docinfo" frame="void" rules="none">
<col class="docinfo-name" />
<col class="docinfo-content" />
<tbody valign="top">
<tr><th class="docinfo-name">Author:</th>
<td>Grzegorz Adam Hankiewicz</td></tr>
<tr><th class="docinfo-name">Contact:</th>
<td><a class="first last reference" href="mailto:gradha&#64;titanium.sabren.com">gradha&#64;titanium.sabren.com</a></td></tr>
<tr class="field"><th class="docinfo-name">Translator:</th><td class="field-body">David Gervasoni</td>
</tr>
<tr><th class="docinfo-name">Contact:</th>
<td><a class="first last reference" href="mailto:davidgerva&#64;gmail.com">davidgerva&#64;gmail.com</a></td></tr>
<tr><th class="docinfo-name">Date:</th>
<td>2006-10-07 19:22:40 +0200</td></tr>
<tr><th class="docinfo-name">Version:</th>
<td>H5 (424)</td></tr>
<tr class="field"><th class="docinfo-name">Web site:</th><td class="field-body"><a class="reference" href="http://gradha.sdf-eu.org/textos/backup.en.html">http://gradha.sdf-eu.org/textos/backup.en.html</a></td>
</tr>
<tr><th class="docinfo-name">Copyright:</th>
<td>This document has been placed in the public domain.</td></tr>
<tr class="field"><th class="docinfo-name">Translations:</th><td class="field-body">From the web site you can get this document in
English, Italian and Spanish.</td>
</tr>
</tbody>
</table>
<div class="contents topic" id="contents">
<p class="topic-title first"><a name="contents">Contents</a></p>
<ul class="simple">
<li><a class="reference" href="#introduzione" id="id3" name="id3">Introduzione</a></li>
<li><a class="reference" href="#utilizzo-essenziale-di-dar" id="id4" name="id4">Utilizzo essenziale di DAR</a></li>
<li><a class="reference" href="#la-politica-di-backup" id="id5" name="id5">La politica di backup</a></li>
<li><a class="reference" href="#eseguire-backup-di-base-full-backup-con-dar" id="id6" name="id6">Eseguire backup di base (full backup) con DAR</a></li>
<li><a class="reference" href="#eseguire-backup-differenziali-con-dar" id="id7" name="id7">Eseguire backup differenziali con DAR</a></li>
<li><a class="reference" href="#qualche-script-per-automatizzare-i-processi" id="id8" name="id8">Qualche script per automatizzare i processi</a></li>
<li><a class="reference" href="#estrarre-i-backup-su-macchine-vuote" id="id9" name="id9">Estrarre i backup su macchine vuote</a></li>
<li><a class="reference" href="#aggiungere-dei-controlli-allo-script-di-backup" id="id10" name="id10">Aggiungere dei controlli allo script di backup</a></li>
<li><a class="reference" href="#idee-per-il-futuro" id="id11" name="id11">Idee per il futuro</a></li>
<li><a class="reference" href="#the-end" id="id12" name="id12">The end</a></li>
<li><a class="reference" href="#per-finire" id="id13" name="id13">Per finire</a></li>
</ul>
</div>
<div class="section" id="introduzione">
<h1><a class="toc-backref" href="#id3" name="introduzione">Introduzione</a></h1>
<blockquote>
<p>&quot;Chiunque dovrebbe fare le copie di backup dei suoi dati
importanti&quot;.  Questo avviso presente ovunque è generalmente
ignorato da molta gente. Anche io l'ho ignorato, fino al giorno
in cui ho perso una considerevole mole di dati. Non abbastanza
contento ho fatto in modo di perderne ancora in una serie di
successivi incidenti, per poi decidere che ne avevo abbastanza. Ho
cercato quindi su <a class="reference" href="http://freshmeat.net/">Freshmeat</a> qualche programma per la creazione di
backup che supportasse anche la creazione di backup differenziali
e ho trovato <a class="reference" href="http://dar.linux.free.fr/">DAR</a>.</p>
<p>Fare un backup completo (o base) significa salvare tutti i files
che ricadono sotto le cartelle interessate dalla politica di
backup. Un backup differenziale o incrementale conterrà invece
solo i files il cui contenuto è cambiato rispetto al precedente
backup, fosse esso completo o differenziale.</p>
<p><a class="reference" href="http://dar.linux.free.fr/">DAR</a> permette di creare facilmente una serie di backup
differenziali. Una soluzione che ho sviluppato esegue ogni notte
dei backup automatici. Il primo giorno del mese viene fatto un
backup completo. Il resto del mese vengono fatti solo backup
differenziali. Per quanto mi riguarda i files che cambiano
giornalmente non sono molti: il codice sorgente del progetto a
cui sto lavorando e, più spesso, le e-mail.</p>
<p>Così, quando mi serve, posso recuperare con facilità il contenuto
che presentava il mio computer uno specifico giorno.  <a class="reference" href="http://dar.linux.free.fr/">DAR</a> si
presenta come un programma semplice ed essenziale eseguibile da
linea di comando, ma si può rendere un po' più complicato con
poche opzioni. Questo piccolo mini-howto vi illustrerà la mia
specifica configurazione, molto grossolana, ma, nel mio caso,
funzionale. Ho già sperimentato il recupero dei dati dalle copie
di backup. Infatti verso la fine del 2003 mi sono trasferito
in un altro paese e ho portato con me giusto un CD ROM e una
<a class="reference" href="http://www.knoppix.org/">Knoppix</a> bootable e ho recuperato l'esatto stato della mia
vecchia installazione Debian in poche ore. Senza modifiche,
senza alcuna ulteriore installazione e senza perdere alcun file.</p>
<p>Questo documento è stato scritto usando la versione 1.3.0 di <a class="reference" href="http://dar.linux.free.fr/">DAR</a>.
Quando sono passato alla 2.0.3 tutto funzionava. Non ho nemmeno
dovuto aggiornare i miei backup. Quindi sembra che l'interfaccia
e i formati di backup siano stabili o al limite compatibili con
le versioni precedenti. Comunque non prendete tutto ciò che dico
(scrivo) quì come garantito. Verificate prima che la versione
di <a class="reference" href="http://dar.linux.free.fr/">DAR</a> che avete installato funzioni come dovrebbe e potrete,
in futuro, recuperare i files dai backup senza problemi.</p>
<p>Per questa versione del testo ho usato reStructuredText (ecco
spiegato il misterioso markup nella versione txt). Vedi
<a class="reference" href="http://docutils.sourceforge.net/">http://docutils.sourceforge.net/</a> per maggiori informazioni.</p>
</blockquote>
</div>
<div class="section" id="utilizzo-essenziale-di-dar">
<h1><a class="toc-backref" href="#id4" name="utilizzo-essenziale-di-dar">Utilizzo essenziale di DAR</a></h1>
<blockquote>
<p><a class="reference" href="http://dar.linux.free.fr/">DAR</a> è molto simile a <a class="reference" href="http://freshmeat.net/projects/tar/">tar</a> nel numero di opzioni che ha: ce
n'è una per ogni necessità, ma questo comporta una maggiore
difficoltà iniziale per il nuovo utente. Come sempre, in
qualsiasi momento, potete avere degli aiuti relativamente ai
comandi disponibili scrivendo <tt class="docutils literal"><span class="pre">dar</span> <span class="pre">-h</span></tt> o <tt class="docutils literal"><span class="pre">man</span> <span class="pre">dar</span></tt> dopo che
l'avete installato. Come nel programma <a class="reference" href="http://freshmeat.net/projects/tar/">tar</a>, esistono una serie
di opzioni obbligatorie che definiscono il tipo di operazione che
intendete fare (creare, estrarre, listare etc) e un'ulteriore
serie di opzioni che modificano la scelta prima effettuata.
Giusto per esempio immaginate di voler fare un backup di una
cartella della vostra directory /home. Dovrete scrivere qualcosa
di simile a questo:</p>
<pre class="literal-block">
dar -c backup_file_without_extension -g file1 -g file2 ... -g fileN
</pre>
<p>L'output dovrebbe essere simile al seguente:</p>
<pre class="literal-block">
$ dar -c my_backup_file -g safecopy.py/ -g translate_chars.py/


 --------------------------------------------
 15 inode(s) saved
 with 0 hard link(s) recorded
 0 inode(s) not saved (no file change)
 0 inode(s) failed to save (fileystem error)
 4 file(s) ignored (excluded by filters)
 0 file(s) recorded as deleted from reference backup
 --------------------------------------------
 Total number of file considered: 19
$ ls
mailbox_date_trimmer/  my_backup_file.1.dar  sdb.py/
mailbox_reader/        safecopy.py/          translate_chars.py/
</pre>
<p>Come avrete notato <a class="reference" href="http://dar.linux.free.fr/">DAR</a> aggiunge al nome del file un numero
e un'estensione. Il motivo dell'estensione è chiaro, aiutare
a capire che il file è un backup fatto con <a class="reference" href="http://dar.linux.free.fr/">DAR</a>. Il numero
è chiamato <em>slice</em> ed è connesso alla possibilità di <a class="reference" href="http://dar.linux.free.fr/">DAR</a> di
dividere il file di backup in base a grandezze specificate,
in modo da poterle memorizzare su diversi supporti. Se per
esempio voleste avere i backup su CD ROM, ma i backup delle
vostre directory sono più grandi della capacità del CD ROM,
potete chiedere a <a class="reference" href="http://dar.linux.free.fr/">DAR</a> di dividere l'archivio in tanti files
che potrete poi memorizzare su diverse unità.</p>
<p>Volete recuperare questo backup? Scrivete semplicemente
i seguenti comandi:</p>
<pre class="literal-block">
$ mkdir temp
$ cd temp
$ dar -x ../my_backup_file
file ownership will not be restored as dar is not run as root.
to avoid this message use -O option [return = OK | esc = cancel]
Continuing...


 --------------------------------------------
 15 file(s) restored
 0 file(s) not restored (not saved in archive)
 0 file(s) ignored (excluded by filters)
 0 file(s) less recent than the one on fileystem
 0 file(s) failed to restore (fileystem error)
 0 file(s) deleted
 --------------------------------------------
 Total number of file considered: 15
$ ls
safecopy.py/  translate_chars.py/
</pre>
</blockquote>
</div>
<div class="section" id="la-politica-di-backup">
<h1><a class="toc-backref" href="#id5" name="la-politica-di-backup">La politica di backup</a></h1>
<blockquote>
<p>Il primo passo per creare backup funzionali è determinare quali
parti del vostro sistema necessitano di essere archiviate. Questo
non sta a significare che non potete semplicemente fare un
backup del vostro intero sistema, ma dividerlo in almeno due
parti aiuterà molto DAR (o qualsiasi altro tool di backup)
nel suo lavoro.</p>
<p>Il sistema inplementato in casa mia conta di due hard disk. Il
primo hard disk è diviso in una partizione da 3.8 GB, dove risiede
il mio intero sistema, e un'altra partizione da 11 GB dove
sono memorizzati tutta la mia musica e altri file temporanei,
ad esempio alcuni pacchetti Debian fatti da me. Il secondo hard
disk ha una partizione da 9.4 GB e il suo unico scopo è di servire
come backup del disco primario. Non mi interessa fare il backup
dei file musicali perchè ho tutti i cd originali e uno script
per estrarre di nuovo le tracce e riconvertirle in ogg.</p>
<p>Della partizione da 3.8 GB di cui voglio fare il backup
generalmente sono liberi all'incirca 1.3 - 1.5 Gb. Ho diviso
&quot;logicamente&quot; i 2.3 GB occupati in <em>system</em> e <em>home directories</em>
(mentre scrivo, la mia home è di 588 MB).  La ragione di questa
divisione è che, come un normale utente, posso esclusivamente
modificare il contenuto della mia home directory e alcuni file
della partizione di cui non ho intenzione di fare il backup.
Contemporaneamente il settore della partizione in cui risiede
il sistema rimane abbastanza stabile e immutato perchè raramente
(dis)installo software. Infatti anche nella mia <em>home</em> directory
le sole cose che cambiano sono abitualmente la mia cartella
<tt class="docutils literal"><span class="pre">Mail</span></tt> e <tt class="docutils literal"><span class="pre">progetti</span></tt>, dove metto documenti come questo e
altri software che scrivo/modifico.</p>
<p>La distinzione di base fra <em>home directories</em> e <em>system</em>
può essere anche utile nella normale organizzazione. Se
lavori per una università spesso tutte le macchine hanno la
stessa configurazione di base, ma ogni macchina avrà i suoi
dati memorizzati. Puoi fare un singolo <em>system backup</em> di una
singola macchina e più <em>home backup</em> per ogni computer. Un'altra
configurazione comune è l'esistenza di un server centrale che
condivide le home directories in NFS. In questo modo dovete solo
fare il backup del server. Se vi sono utenti con privilegi di
alto livello permettete loro di fare il backup del sistema delle
loro proprie macchine, il backup delle home lo possono ignorare
visto che se ne occuperà il server.</p>
<p>come configurare <a class="reference" href="http://dar.linux.free.fr/">DAR</a>. Potete usare le opzioni o i file di
configurazione. Le opzioni sono utili quando non ne avete
troppe da specificare. I file di configurazione sono invece
meglio quando volete fare backup differenti, complessi,
con inclusioni/esclusioni; inoltre potete usare commenti per
documentare le opzioni specificate spiegando per esempio perchè
includete/escludete questa o quella directory.  Può essere utile
ciò se tornate ad utilizzare il computer dopo molto tempo e
volete sapere il perchè di ogni opzione.</p>
<p>La mia configurazione fa partire il programma <a class="reference" href="http://dar.linux.free.fr/">DAR</a> con una script
shell richiamato periodicamente da cron (<a class="reference" href="#qualche-script-per-automatizzare-i-processi">Qualche script per
automatizzare i processi</a>), così non devo digitare ogni volta
lunghe stringhe di comando. Questo breve documento vuole anche
introdurre brevemente alla creazione di tali scripts. Se preferite
utilizzare i file di configurazione leggete la documentazione
allegata a <a class="reference" href="http://dar.linux.free.fr/">DAR</a> per sapere come e quale sintassi utilizzare.</p>
</blockquote>
</div>
<div class="section" id="eseguire-backup-di-base-full-backup-con-dar">
<h1><a class="toc-backref" href="#id6" name="eseguire-backup-di-base-full-backup-con-dar">Eseguire backup di base (full backup) con DAR</a></h1>
<blockquote>
<p>Ecco qua sotto l'intera linea di comando che, da <strong>root</strong>,
devo utilizzare per il backup del mio <em>sistema</em>.  Non dovete
preoccuparvi vedendo il gran numero di opzioni inserite,
successivamente descriverò il motivo di ognuna di esse:</p>
<pre class="literal-block">
dar -m 256 -y -s 600M -D -R / -c `date -I`_data -Z &quot;*.gz&quot; \
   -Z &quot;*.bz2&quot; -Z &quot;*.zip&quot; -Z &quot;*.png&quot; -P home/gradha -P tmp \
   -P mnt -P dev/pts -P proc -P floppy -P burner -P cdrom
</pre>
<ul>
<li><dl class="first docutils">
<dt><tt class="docutils literal"><span class="pre">-m</span> <span class="pre">256</span></tt></dt>
<dd><p class="first last"><a class="reference" href="http://dar.linux.free.fr/">DAR</a> può comprimere i backup. La compressione è applicata
a ogni file e può essere anche inutile per file di ridotte
dimensioni. Di default, file di 100 bytes o meno non vengono
compressi. Con l'opzione <tt class="docutils literal"><span class="pre">-m</span></tt> si porta questo limite a 256,
cosa che sembra funzionare meglio per tutti quei piccoli file
di configurazione che stanno sotto <tt class="docutils literal"><span class="pre">/etc/</span></tt> e <tt class="docutils literal"><span class="pre">/home</span></tt>. Come
potete notare questa è un'opzione assolutamente facoltativa,
quasi un &quot;capriccio&quot;.</p>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt><tt class="docutils literal"><span class="pre">-y</span> <span class="pre">[level]</span></tt></dt>
<dd><p class="first last">Questa opzione attiva la compressione <a class="reference" href="http://sources.redhat.com/bzip2/">Bzip2</a> che di default non
è attiva. Potete anche specificare un livello di compressione
tramite un numero che può andare da 0 (nessuna compressione,
processo veloce) a 9 (miglior compressione, processo lento).
<a class="reference" href="http://sources.redhat.com/bzip2/">Bzip2</a> di default usa il livello 6 che è il rapporto migliore
velocità/compressione per la maggior parte dei file.
Personalmente non specifico il livello di compressione,
6 mi va più che bene.</p>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt><tt class="docutils literal"><span class="pre">-s</span> <span class="pre">600M</span></tt></dt>
<dd><p class="first last">Ecco quà l'opzione di <a class="reference" href="http://dar.linux.free.fr/">DAR</a> che vi permette di definire la
dimensione dei file di backup o, meglio, delle slice. La
grandezza specificata, in questo caso di 600 MB, sarà il
massimo spazio occupato dai file creati. Se il vostro backup
è più grande, ritroverete differenti file di backup con un
numero di progressione inserito appena prima dell'estensione,
cosìcchè potrete salvare ogni file su differenti supporti
(floppies, zip, CDROM, etc). I miei backup sono molto più
piccoli di questa dimensione e mantengo questa opzione giusto
per tranquillità, nel caso i file diventassero più grandi. Se
pensate che questa opzione possa esservi utile potete leggere
il manuale di dar per saperne di più.</p>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt><tt class="docutils literal"><span class="pre">-D</span></tt></dt>
<dd><p class="first last">Memorizza il nome e il percorso delle directory escluse
dall'opzione <tt class="docutils literal"><span class="pre">-P</span></tt> o che non ci sono fra quelle specificate
alla linea di comando. Questa è un'opzione utile quando state
recuperando un backup dal nulla; in questo modo non dovete
creare manualmente tutte le directory escluse.</p>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt><tt class="docutils literal"><span class="pre">-R</span> <span class="pre">/</span></tt></dt>
<dd><p class="first last">Specifica la directory di root (directory radice) in cui
salvare o dalla quale 'leggere' i file interessati dal
backup. Di default questa è la directory in cui si sta
lavorando (./). Se stiamo facendo un <em>backup di sistema</em>
dalla cartella x, ecco che questa sarà la directory di root.</p>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt><tt class="docutils literal"><span class="pre">-c</span> <span class="pre">`date</span> <span class="pre">-I`_data</span></tt></dt>
<dd><p class="first">Questa è l'opzione obbligatoria di cui vi ho parlato prima
e definisce la creazione del backup. Per chi non capisce
ciò che segue <tt class="docutils literal"><span class="pre">`date</span> <span class="pre">-I`</span></tt> è un trucchetto della shell.
Brevemente, <tt class="docutils literal"><span class="pre">date</span> <span class="pre">-I</span></tt> restituisce una data con formato
YYYY-MM-DD. L'output del comando fra gli apici singoli sarà
usato come input dell'opzione -c. In questo modo potete creare
backup con la data di creazione direttamente nel nome del file.
Se ancora non capite di cosa sto parlando, provate la seguente
istruzione dalla linea di comando:</p>
<pre class="last literal-block">
echo &quot;La data di oggi è `date -I`&quot;
</pre>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt><tt class="docutils literal"><span class="pre">-Z</span> <span class="pre">file_pattern</span></tt></dt>
<dd><p class="first last">Usando come argomento normali estensioni di file potete
decidere quali file volete memorizzare nel vostro backup senza
che siano compressi. Questo ha senso solo se usate anche
l'opzione <tt class="docutils literal"><span class="pre">-y</span></tt>. Comprimendo file compressi otterrete al
massimo file più grandi, nonchè spreco di risorse e occupazione
della CPU.</p>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt><tt class="docutils literal"><span class="pre">-P</span> <span class="pre">relative_path</span></tt></dt>
<dd><p class="first last">Con questa opzione dite a <a class="reference" href="http://dar.linux.free.fr/">DAR</a> quali directory non volete
memorizzare nel vostro backup. Quì potreste mettere ad esempio
la /home (Sono l'unico utilizzatore di questa macchina, ce
ne sono pochi altri, ma solo per testare alcune funzioni),
directory di sistema che non sono realmente dei file, come
<tt class="docutils literal"><span class="pre">proc</span></tt>, altri file che potreste aver montati sotto <tt class="docutils literal"><span class="pre">mnt</span></tt>
(come, ovviamente, il drive in cui metterete i file di backup)
etc, etc. Notate che i percorsi che inserite devono essere
relativi a quello specificato con l'opzione <tt class="docutils literal"><span class="pre">-R</span></tt>.</p>
</dd>
</dl>
</li>
</ul>
<p>Tutto ciò non è poi così difficile. Controllate le pagine di
manuale di <a class="reference" href="http://dar.linux.free.fr/">DAR</a> per maggiori informazioni sulle opzioni che
vi interessa usare. Ed ecco quì il comando che uso all'interno
della mia home:</p>
<pre class="literal-block">
dar -m 256 -y -s 600M -D -R /home/gradha -c `date -I`_data \
   -Z &quot;*.gz&quot; -Z &quot;*.bz2&quot; -Z &quot;*.zip&quot; -Z &quot;*.png&quot; \
   -P instalacion_manual -P Mail/mail_pa_leer
</pre>
<p>Nulla di nuovo sotto il sole. Come potete vedere molti dei comandi
sono identici a quelli 'di cui sopra', ho solo cambiato il nome
delle directories che voglio escludere utilizzando l'opzione
<tt class="docutils literal"><span class="pre">-P</span></tt> e la directory radice con l'opzione <tt class="docutils literal"><span class="pre">-R</span></tt>.</p>
</blockquote>
</div>
<div class="section" id="eseguire-backup-differenziali-con-dar">
<h1><a class="toc-backref" href="#id7" name="eseguire-backup-differenziali-con-dar">Eseguire backup differenziali con DAR</a></h1>
<blockquote>
<p>Una volta che avete creato un backup base, potete creare quelli
differenziali. Il primo backup differenziale deve essere creato
usando quello di base come riferimento. I backup differenziali
successivi useranno come riferimento l'ultimo backup differenziale
disponibile. Ecco quì il comando per un backup differenziale
del <em>sistema</em>:</p>
<pre class="literal-block">
dar -m 256 -y -s 600M -D -R / -c `date -I`_diff -Z &quot;*.gz&quot; \
   -Z &quot;*.bz2&quot; -Z &quot;*.zip&quot; -Z &quot;*.png&quot; -P home/gradha -P tmp \
   -P mnt -P dev/pts -P proc -P floppy -P burner -P cdrom \
   -A previous_backup
</pre>
<ul>
<li><dl class="first docutils">
<dt><tt class="docutils literal"><span class="pre">-c</span> <span class="pre">`date</span> <span class="pre">-I`_diff</span></tt></dt>
<dd><p class="first last">Ho solo cambiato il nome del file, per un motivo... &quot;pratico&quot;.</p>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt><tt class="docutils literal"><span class="pre">-A</span> <span class="pre">previous_backup</span></tt></dt>
<dd><p class="first last">Questa nuova opzione viene usata per dire a <a class="reference" href="http://dar.linux.free.fr/">DAR</a> dove trova
il file di backup precedente in modo da creare un backup
differenziale invece di uno base. L'unica cosa alla quale
fare attenzione è che voi non dovete specificare nè il numero
progressivo nè l'estensione, diversamente <a class="reference" href="http://dar.linux.free.fr/">DAR</a> porrebbe una
richiesta alla linea di comando.</p>
</dd>
</dl>
</li>
</ul>
<p>La linea di comando dell'utente è esattamente la stessa. Ecco
quà per completezza:</p>
<pre class="literal-block">
dar -m 256 -y -s 600M -D -R /home/gradha -c `date -I`_diff \
   -Z &quot;*.gz&quot; -Z &quot;*.bz2&quot; -Z &quot;*.zip&quot; -Z &quot;*.png&quot; \
   -P instalacion_manual -P Mail/mail_pa_leer -A previous_backup
</pre>
<p><a class="reference" href="http://dar.linux.free.fr/">DAR</a> ha un'altra interessante caratteristica che quì non usiamo:
i <em>cataloghi</em>. Quando create un backup con <a class="reference" href="http://dar.linux.free.fr/">DAR</a> questo contiene
i dati e un <em>catalogo</em>. Questo <em>catalogo</em> contiene informazioni
inerenti i file che sono stati salvati: la loro data, la
loro dimensione dopo la compressione, etc. Potete estrarre il
<em>catalogo</em> e memorizzarlo separatamente. Perchè dovreste farlo?
Per implementare backup differenziali in rete, ad esempio.</p>
<p>Al fine di creare un backup differenziale dovete procurare a <a class="reference" href="http://dar.linux.free.fr/">DAR</a>
il backup precedente in modo che il programma possa decidere
quali file sono stati modificati e quali no. Facendo questo
lavoro su di una rete ciò può occupare molta banda. Invece,
dopo aver creato il backup, potete estrarre il <em>catalogo</em>
e inviarlo alla macchina designata alla creazione dei backup.
Successivamente potete usare questo file con l'opzione <tt class="docutils literal"><span class="pre">-A</span></tt>,
in questo modo <a class="reference" href="http://dar.linux.free.fr/">DAR</a> lavorerà come se il file del backup base
fosse quello.</p>
<p>Questo può essere anche utile se usate le slices perchè
il <em>catalogo</em> è creato per la prima e l'ultima slice. E' più
semplice passare al comando un singolo file piuttosto che dover
utilizzare tutti i dischi del vostro precedente backup.</p>
</blockquote>
</div>
<div class="section" id="qualche-script-per-automatizzare-i-processi">
<h1><a class="toc-backref" href="#id8" name="qualche-script-per-automatizzare-i-processi">Qualche script per automatizzare i processi</a></h1>
<blockquote>
<p>Come ho detto prima è venuto il momento di mettere la nostra
procedura di backup sotto cron. Mettendo il seguente
script eseguibile per il backup del <em>sistema</em> sotto
<tt class="docutils literal"><span class="pre">/root/dar_backup.sh</span></tt>:</p>
<pre class="literal-block">
#!/bin/sh

DIR=/var/backups/system
FILE=${DIR}/`/bin/date -I`_data
# Commands
/usr/local/bin/dar -m 256 -y -s 600M -D -R / -c $FILE -Z &quot;*.gz&quot; \
   -Z &quot;*.bz2&quot; -Z &quot;*.zip&quot; -Z &quot;*.png&quot; -P home/gradha -P tmp \
   -P mnt -P dev/pts -P proc -P floppy -P burner \
   -P cdrom -P var/backups &gt; /dev/null
/usr/local/bin/dar -t $FILE &gt; /dev/null
/usr/bin/find $DIR -type f -exec chown .gradha \{\} \;
/usr/bin/find $DIR -type f -exec chmod 440 \{\} \;
</pre>
<p>Alcune cose da notare:</p>
<ul class="simple">
<li>DIR è la variabile che rappresenta la directory di destinazione.</li>
<li>FILE rappresenta il percorso del file di backup di oggi.</li>
<li>Uso percorsi assoluti nei comandi perchè il mio account di
root non li ha tutti inclusi nell'ambiente di default. Questo
è potenzialmente un rischio in ambito di sicurezza. Idealmente
dovreste compilare <a class="reference" href="http://dar.linux.free.fr/">DAR</a> come root e mantenere i binari dove li
avete creati, così nessuno potrà toccarli o eseguirvi <a class="reference" href="http://www.tripwire.org/">Tripwire</a>.</li>
<li><a class="reference" href="http://dar.linux.free.fr/">DAR</a> genera statistiche dopo ogni esecuzione. A noi non servono
se eseguite in cron perchè produrrebbero solo mail inutili.
Lo <tt class="docutils literal"><span class="pre">stdout</span></tt> è rediretto a <tt class="docutils literal"><span class="pre">/dev/null</span></tt>. Gli errori saranno
invece riportati in una mail nel caso qualcosa andasse storto.</li>
<li>Gli ultimi due comandi <tt class="docutils literal"><span class="pre">find</span></tt> sono opzionali. Li uso per
cambiare i permessi dei file per un normale utente che creerà
successivamente i backup. Un ulteriore rischio in fatto di
sicurezza. Root dovrebbe eseguire il backup dei file da root
e gli utenti i loro. Ma con un sistema mono-user questo non
è importante. Se un ipotetico intruso è capace di passare
attraverso il mio firewall, inserire la mia password e quindi
guardare tutti i miei backup: sono fregato.</li>
</ul>
<p>Ora ponete il seguente script per i backup differenziali,
quasi identico al precedente, sotto <tt class="docutils literal"><span class="pre">/root/dar_diff.sh</span></tt>:</p>
<pre class="literal-block">
#!/bin/sh

DIR=/var/backups/system
FILE=${DIR}/`/bin/date -I`_diff
PREV=`/bin/ls $DIR/*.dar|/usr/bin/tail -n 1`
/usr/local/bin/dar -m 256 -y -s 600M -D -R / -c $FILE -Z &quot;*.gz&quot; \
   -Z &quot;*.bz2&quot; -Z &quot;*.zip&quot; -Z &quot;*.png&quot; -P home/gradha -P tmp -P mnt \
   -P dev/pts -P proc -P floppy -P burner -P cdrom \
   -P var/backups -A ${PREV%%.*} &gt; /dev/null
/usr/local/bin/dar -t $FILE &gt; /dev/null
/usr/bin/find $DIR -type f -exec chown .gradha \{\} \;
/usr/bin/find $DIR -type f -exec chmod 440 \{\} \;
</pre>
<p>Gli unici due cambiamenti sono le aggiunte dell'opzione <tt class="docutils literal"><span class="pre">-A</span></tt>
e la generazione della variabile PREV con una linea di comando
un po' complicata. Vediamo cosa fa questa linea di comando:</p>
<ul class="simple">
<li>Prima di tutto, il comando <tt class="docutils literal"><span class="pre">ls</span></tt> crea una lista dei file
con estensione <tt class="docutils literal"><span class="pre">.dar</span></tt> presenti nella directory di backup;
euesto output è rediretto al comando successivo.</li>
<li>Di default <tt class="docutils literal"><span class="pre">ls</span></tt> elenca i file in ordine alfabetico. <tt class="docutils literal"><span class="pre">tail</span></tt>
è usato per ottenere l'ultimo file con l'opzione <tt class="docutils literal"><span class="pre">-n</span> <span class="pre">1</span></tt>
che ordina di mostrare solo l'ultima riga.</li>
<li><a class="reference" href="http://dar.linux.free.fr/">DAR</a> necessita di lavorare con filenames senza il numero
di slice e senza estensione. Se non correggiamo noi il nome
del file, <a class="reference" href="http://dar.linux.free.fr/">DAR</a> fermerà il processo e chiederà all'utente se
effettuare l'operazione in modo automatico o meno. Separiamo
quindi il nome del file con una feature Bash, chiamata
parametro d'espansione. Ci sono diverse possibili espansioni,
potete digitare <tt class="docutils literal"><span class="pre">man</span> <span class="pre">bash</span></tt> per vederle tutte. Usando <tt class="docutils literal"><span class="pre">%%</span></tt>
rimuoviamo la più lunga &quot;coda&quot; di caratteri che si trova dopo il
<tt class="docutils literal"><span class="pre">%%</span></tt>. Il risultato è il nome base che vogliamo passare a <a class="reference" href="http://dar.linux.free.fr/">DAR</a>.</li>
</ul>
<p>Ora dobbiamo solo mettere questi due script sotto il controllo
di cron. Questo è ciò che dobbiamo scrivere dopo il comando
<tt class="docutils literal"><span class="pre">crontab</span> <span class="pre">-e</span></tt>:</p>
<pre class="literal-block">
15 0 2-31 * * ./dar_diff.sh
15 0 1    * * ./dar_backup.sh
</pre>
<p>Controllate in <tt class="docutils literal"><span class="pre">man</span> <span class="pre">-S</span> <span class="pre">5</span> <span class="pre">crontab</span></tt> la sintassi del comando. In
breve queste due linee dicono a cron di far partire i processi
15 minuti dopo la mezzanotte. <tt class="docutils literal"><span class="pre">dar_backup.sh</span></tt> verrà eseguito
solo il primo giorno del mese. L'altro script verrà eseguito
tutti gli altri giorni.</p>
<p>Ecco quì gli scripts di backup per i vostri utenti. Essi sono
identici, cambiano solo alcune opzioni di <a class="reference" href="http://dar.linux.free.fr/">DAR</a> e i percorsi:</p>
<pre class="literal-block">
#!/bin/sh
# dar_backup.sh

DIR=/var/backups/gradha
FILE=${DIR}/`/bin/date -I`_data
# Commands
/usr/local/bin/dar -m 256 -y -s 600M -D -R /home/gradha -c $FILE \
   -Z &quot;*.gz&quot; -Z &quot;*.bz2&quot; -Z &quot;*.zip&quot; -Z &quot;*.png&quot; \
   -P instalacion_manual -P Mail/mail_pa_leer &gt; /dev/null
/usr/local/bin/dar -t $FILE &gt; /dev/null
/usr/bin/find $DIR -type f -exec chmod 400 \{\} \;

#!/bin/sh
# dar_diff.sh

DIR=/var/backups/gradha
FILE=${DIR}/`/bin/date -I`_diff
PREV=`/bin/ls $DIR/*.dar|/usr/bin/tail -n 1`
/usr/local/bin/dar -m 256 -y -s 600M -D -R /home/gradha -c $FILE \
   -Z &quot;*.gz&quot; -Z &quot;*.bz2&quot; -Z &quot;*.zip&quot; -Z &quot;*.zip&quot; \
   -P instalacion_manual -P Mail/mail_pa_leer \
   -A ${PREV%%.*} &gt; /dev/null
/usr/local/bin/dar -t $FILE &gt; /dev/null
/usr/bin/find $DIR -type f -exec chmod 400 \{\} \;
</pre>
<p>Non dimenticate di aggiungere a crontab le stringhe richieste
per i votri utenti.</p>
</blockquote>
</div>
<div class="section" id="estrarre-i-backup-su-macchine-vuote">
<h1><a class="toc-backref" href="#id9" name="estrarre-i-backup-su-macchine-vuote">Estrarre i backup su macchine vuote</a></h1>
<blockquote>
<p>Venuto il momento di recuperare i vostri backup, in base a quello
che avete salvato, avrete il backup completo del mese e tanti
backup differenziali quanti quelli che avete fatto. Il processo
di recupero dei dati è molto semplice: è uguale a quello descritto
nel primo paragrafo (<a class="reference" href="#utilizzo-essenziale-di-dar">Utilizzo essenziale di DAR</a>), l'importante
è che prima recuperiate il backup base e solo successivamente
quelli differenziali. Questo può essere noioso, così ecco quà
un'altro script che potete salvare fra i vostri file di backup:</p>
<pre class="literal-block">
#!/bin/sh

if [ -n &quot;$3&quot; ]; then
   CMD=&quot;$1&quot;
   INPUT=&quot;$2_data&quot;
   FS_ROOT=&quot;$3&quot;
   $CMD -x &quot;$INPUT&quot; -w -R &quot;$FS_ROOT&quot;
   for file in ${INPUT:0:8}*_diff*; do
      $CMD -x &quot;${file:0:15}&quot; -w -R &quot;$FS_ROOT&quot;
   done
   echo &quot;All done.&quot;
else
   echo &quot;Not enough parameters.

Usa: script dar_location base_full_backup directory

Dove dar_location è un percorso alla directory con i binari di dar,
base_full_backup è una data in formato 'YYYY-MM-DD' e directory è
il posto dove volete mettere i file recuperati, solitamente '/'
quando eseguito come root.&quot;
fi
</pre>
<p>Lo script si spiega da solo. L'unica cosa alla quale dovete fare
attenzione è l'opzione <tt class="docutils literal"><span class="pre">-w</span></tt> che dice a <a class="reference" href="http://dar.linux.free.fr/">DAR</a> di sovrascrivere i
file trovati. Questo è obbligatorio per i backup differenziali.
Ricordate di mettere lo script nella stessa directory dove
mettete i file di backup. Ecco un'utilizzo di esempio:</p>
<pre class="literal-block">
./recover.sh /usr/local/bin/dar 2003-10-01 /tmp/temp_path/
</pre>
<p>Provate ad utilizzare questo come utente normale con pochi file
di backup. Potete mettere i file recuperati in una directory
temporanea, così non dovete svuotare il vostro hard disk per
provarlo.</p>
</blockquote>
</div>
<div class="section" id="aggiungere-dei-controlli-allo-script-di-backup">
<h1><a class="toc-backref" href="#id10" name="aggiungere-dei-controlli-allo-script-di-backup">Aggiungere dei controlli allo script di backup</a></h1>
<blockquote>
<p>Denis Corbin suggerisce che lo script di creazione dei backup
verifichi anche l'exit status dei comandi di <a class="reference" href="http://dar.linux.free.fr/">DAR</a>. Per quanto
riguarda questo script così semplice, ciò non è di importanza
critica perchè <a class="reference" href="http://dar.linux.free.fr/">DAR</a> stesso stamperebbe a schermo un messaggio
d'errore e cron lo riporterebbe via mail (cosa che normalmente
non succede se tutto va per il verso giusto)</p>
<p>Comunque testare l'exit status può essere utile se state
verificando il funzionamento dello script e volete sapere quali
comandi sono eseguiti:</p>
<pre class="literal-block">
#!/bin/sh

DIR=/var/backups/system
FILE=${DIR}/`/bin/date -I`_data
# Commands
if /usr/local/bin/dar -m 256 -y -s 600M -D -R / -c $FILE -Z &quot;*.gz&quot; \
      -Z &quot;*.bz2&quot; -Z &quot;*.zip&quot; -Z &quot;*.png&quot; -P home/gradha -P tmp \
      -P mnt -P dev/pts -P proc -P floppy -P burner \
      -P cdrom -P var/backups &gt; /dev/null ; then
   if /usr/local/bin/dar -t $FILE &gt; /dev/null ; then
      echo &quot;Archive created and successfully tested.&quot;
   else
      echo &quot;Archive created but test FAILED.&quot;
   fi
else
   echo &quot;Archive creating FAILED.&quot;
fi
/usr/bin/find $DIR -type f -exec chown .gradha \{\} \;
/usr/bin/find $DIR -type f -exec chmod 440 \{\} \;
</pre>
<p>Potete testare facilmente questa versione facendo partire lo
script e killando i processi di <a class="reference" href="http://dar.linux.free.fr/">DAR</a> manualmente da un'altro
terminale o un'altra console con <tt class="docutils literal"><span class="pre">killall</span> <span class="pre">dar</span></tt>, che forzerà la
fine dei processi <a class="reference" href="http://dar.linux.free.fr/">DAR</a> e vedrete che uno dei rami di fallimento
sarà raggiunto nello script di backup.</p>
<p>Un'ulteriore possibile utilizzo per testare il codice può essere
la rimozione di archivi incompleti dall'hard disk se qualcosa
andasse male o evitare di testare l'archivio creato quando sapete
che il primo comando è già fallito. Successivamente si possono
facilmente concatenare i comandi di creazione e di test con
<tt class="docutils literal"><span class="pre">&amp;&amp;</span></tt> in una singola linea di testo. Ciò indica alla shell di
eseguire entrambi i comandi in sequenza e impedisce l'esecuzione
del secondo se il primo è fallito.</p>
<p>una procedura di backup, questa versione dello script lascierà
archivi errati vaganti. Per prevenire ciò potete fare in modo che
lo script esegua una <em>positive verification</em>. Ciò creerà il backup
in una directory temporanea insieme con un file <tt class="docutils literal"><span class="pre">*.valid</span></tt>.</p>
<p>Così un'altro script monitora la directory dove i file temporanei
sono messi e sposta in una directory definitiva i file con
<tt class="docutils literal"><span class="pre">*.valid</span></tt> eliminando quelli la cui ultima modifica è precedente
a un'ora.</p>
</blockquote>
</div>
<div class="section" id="idee-per-il-futuro">
<h1><a class="toc-backref" href="#id11" name="idee-per-il-futuro">Idee per il futuro</a></h1>
<blockquote>
<p>Non ho programmato di aggiornare questo testo presto perchè sono
molto pigro, ma se voi siete fra quegli hackers imperattivi,
ecco quà qualcosa che mi piacerebbe inserire:</p>
<ul>
<li><p class="first">Unificare gli script dei backup di base e differenziali in
uno unico, cosicchè se all'esecuzione dello script non esistono
backup base per il mese corrente questo venga reato. Utile per
macchine che rimangono spente molto tempo dopo che il backup
mensile è stato fatto.</p>
</li>
<li><p class="first">Aggiornare lo script in modo che crei giornalmente un immagine
per CD ROM con <a class="reference" href="http://www.fokus.fhg.de/research/cc/glone/employees/joerg.schilling/private/cdrecord.html">cdrecord</a> e la masterizzi automaticamente su
un cd riscrivibile presente nel drive. Così nel caso l'intero
hard disk si guasti sarebbe disponibile l'ultimo backup su un
media rimovibile. Certo la cosa è limitata e non può essere
automatica nel caso i backup occupino più spazio di un CDROM. La
stessa cosa vale per ZIP/JAZZ/qualsiasi cosa vogliate.</p>
</li>
<li><p class="first">Integrazione dei backup generati con una mini <a class="reference" href="http://www.knoppix.org/">Knoppix</a> bootable
o qualsiasi altra ditribuzione che possa essere avviata da
CDROM. Così avreste un CDROM per recuperare i dati che può
partire automaticamente e formattare il vostro hard disk.</p>
</li>
<li><p class="first">Sincronizzazione delle directory di backup attraverso internet
con hosts remoti. In questo modo se l'intera macchina è bruciata
fisicamente, ad esempio con la vostra casa, voi avete i vostri
backup in qualche altro posto. Potrebbe essere fatto facilmente
con programmi come <a class="reference" href="http://rsync.samba.org/">rsync</a> attraverso <a class="reference" href="http://www.openssh.com/">ssh</a> eseguiti tramite cron.</p>
</li>
<li><p class="first">Inserimento dei parametri comuni in un file separato da inculdere
dallo script utilizzando l'opzione di DAR, -B. Per esempio:</p>
<pre class="literal-block">
$ cat &gt; /var/backups/system/common.dcf
-m 256 -y -s 600M -D -R / -Z &quot;*.gz&quot; -Z &quot;*.bz2&quot; -Z &quot;*.zip&quot; \
-Z &quot;*.png&quot; -P home/gradha -P tmp -P mnt -P dev/pts \
-P proc -P floppy -P burner -P cdrom -P var/backups
</pre>
<p>Successivamente si può utilizzare questo nello script:</p>
<pre class="literal-block">
DIR=/var/backups/system
FILE=${DIR}/`/bin/date -I`_data
# Commands
/usr/local/bin/dar -B ${DIR}/common.dcf -c $FILE &gt; /dev/null
/usr/local/bin/dar -t $FILE &gt; /dev/null
/usr/bin/find $DIR -type f -exec chown .gradha \{\} \;
</pre>
<p>Che può essere riutilizzato anche nella versione differenziale!</p>
</li>
</ul>
<p>In effetti, qualcuno ha già iniziato a creare qualche
script a proprio uso e consumo e non ha problemi a
condividerli. Per evitare di &quot;disordinare&quot; questo mini-howto
ho intenzione di archiviarli <em>come sono</em> nel mio spazio web:
<a class="reference" href="http://gradha.sdf-eu.org/dar_scripts/">http://gradha.sdf-eu.org/dar_scripts/</a>.</p>
<p>Sentitevi liberi di inviare i vostri lavori e i vostri
aggiornamenti e li aggiungerò alla directory. Se avete intenzione
di inviare un singolo file di script o un <tt class="docutils literal"><span class="pre">.tar.gz</span></tt> con una
intera suite di backup, inserite un semplice file <tt class="docutils literal"><span class="pre">.txt</span></tt>
descrittivo che metterò assieme agli altri files, così la
gente potrà leggere cosa sono e cosa fanno i files prima di
scaricarli. Usate l'inglese nella vostra descrizione e non
dimenticate di mettere nome e e-mail così la gente potrà inviarvi
bugfixes o miglioramenti.</p>
</blockquote>
</div>
<div class="section" id="the-end">
<h1><a class="toc-backref" href="#id12" name="the-end">The end</a></h1>
<blockquote>
And that's the whole <em>magic</em>. Se avete qualche problema,
qualcosa non è chiaro o sbagliato (il che è peggio) inviatemi
un'e-mail. Se trovi questo documento utile e lo vuoi tradurre
inviami una traduzione del file <tt class="docutils literal"><span class="pre">source.en.txt</span></tt> così posso
distribuirla assieme a questa versione e gli utenti troveranno
più semplice la versione nella loro lingua. Dovreste raggiungere
facilmente il codice di questo dodumento alla mia home page
(link <a class="reference" href="#dar-differential-backup-mini-howto-it">at the beginning of the document</a>).</blockquote>
<blockquote>
Enjoy!</blockquote>
</div>
<div class="section" id="per-finire">
<h1><a class="toc-backref" href="#id13" name="per-finire">Per finire</a></h1>
<blockquote>
Versione un po' corretta, con un italiano un po' più
scorrevole. Ecco lo scopo che mi ero prefissato per questa
revisione. Non so se l'obbiettivo è stato raggiunto, ma non
immaginavo che tradurre dall'inglese fosse così difficile. Termini
che initaliano non sai come rendere, plurali di nomi inglesi
che in italiano rimangono singolari, modi di dire che, una volta
tradotti letteralmente, non ti escono più dalla testa.  Spero,
comunque, che riusciate a capire in modo più agevole questa
correzione rimanendo, come sempre, a disposizione.  David (link
<a class="reference" href="#dar-differential-backup-mini-howto-it">at the beginning of the document</a>)</blockquote>
</div>
</div>
</body>
</html>