Dimensione: 15404
Commento: il secondo e il quarto script non funzionano
|
Dimensione: 12708
Commento: controllato tutto. funziona tutto. carico allegati
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 8: | Linea 8: |
'''Duplicity''' effettua il backup di cartelle producendo archivi in formato `.tar` cifrati e caricandoli su file server remoti o locali. Essendo basato su '''rsync''' gli archivi incrementali sono efficienti in termini di spazio e memorizzano solo le parti dei file che sono cambiate dall'ultimo backup. Utilizza '''!GnuPC''' per cifrare o firmare gli archivi, così saranno al sicuro da tentativi di spionaggio o di modifica da parte del server. |
'''Duplicity''' effettua backup di cartelle producendo archivi compressi in formato `.tar` e salvandoli su destinazioni locali io remote. Utilizza [:Sicurezza/GnuPg:GnuPg:GPG] per cifrare o firmare gli archivi in modo da renderli sicuri da tentativi di spionaggio o di modifica. |
Linea 15: | Linea 13: |
* Il passo successivo è quello di preparare il percorso per ricevere i file di backup. Negli esempi successivi si userà un server FTP remoto. Per configurare adeguatamente i permessi del proprio server FTP si veda [:Server/Ftp:questa guida] oppure si consulti la documentazione del proprio web hosting. * Una volta configurato l'account FTP è una buona idea creare la struttura delle cartelle da salvare sul server FTP remoto. In questa guida si useranno gli stessi nomi delle cartelle oggetto di backup. |
* Preparare il percorso per ricevere i file di backup. Negli esempi successivi si userà un server FTP remoto. Per quanto concerne la configurazione del proprio server FTP si veda la [:Server/Ftp:relativa guida] oppure si consulti la documentazione del proprio web hosting. * Una volta configurato l'account FTP creare la cartella di destinazione dei file di backup in una posizione non raggiungile dal server web. Per esempi successivi sul server FTP è stata creata la cartella `backup`. * Negli esempi successivi, si tenterà di compiere delle copie di backup di una cartella locale avente la seguente struttura: {{{ mario@mario:~/Scrivania$ tree salvami/ salvami/ |-- due.txt |-- sottocartella | `-- quattro.txt |-- tre.txt `-- uno.txt }}} |
Linea 21: | Linea 28: |
* Provare il funzionamento. Copiare e incollare il codice seguente {{{ #!/bin/sh export PASSPHRASE=SomeLongGeneratedHardToCrackKey export FTP_PASSWORD=WhateverPasswordYouSetUp duplicity /etc ftp://FtpUserID@ftp.domain.com/etc unset PASSPHRASE unset FTP_PASSWORD }}} all'interno di un file chiamato `backup.sh` attribuendo i giusti permessi con {{{ |
* Per compiere il backup copiare quanto segue in un [:Ufficio/EditorDiTesto:editor di testo] {{{ #!/bin/sh export PASSPHRASE=UnaPasswordMoltoLungaDifficilmenteCraccabile export FTP_PASSWORD=LaPasswordDelServerFTP duplicity /home/mario/Scrivania/salvami ftp://UtenteFTP@ftp.nomedominio.com/backup unset PASSPHRASE unset FTP_PASSWORD }}} e salvarlo denominandolo `backup.sh`. * Attribuire allo script appena creato i seguenti [:AmministrazioneSistema/PermessiFile:permessi] {{{ |
Linea 30: | Linea 38: |
}}} Questo script farà il backup della cartella `/etc` in volumi compressi e cifrati con la password specificata e quindi caricherà i file di backup sullo spazio FTP che è stato impostato usando il nome utente e la password specificata. * Dopo aver modificato l'esempio, lanciarlo digitando in una finestra di terminale il seguente comando {{{ |
}}} * Questo script eseguirà il backup della cartella `salvami` posizionata sulla `Scrivania` in volumi compressi e cifrati con la password specificata e quindi caricherà i file di backup sullo spazio FTP all'interno della cartella `backup` utilizzando i nomi utenti e la password specificate. * Dopo aver modificato adeguatamente l'esempio, lanciarlo digitando in una finestra di terminale il seguente comando {{{ |
Linea 34: | Linea 43: |
* Ecco un possibile esempio di output restituito dallo script {{{ |
* Al termine delle operazioni, lo script restituirà un output simile al seguente {{{ |
Linea 37: | Linea 45: |
StartTime 1133074801.81 (Sun Nov 27 01:00:01 2005) EndTime 1133074927.82 (Sun Nov 27 01:02:07 2005) ElapsedTime 126.01 (2 minutes 6.01 seconds) SourceFiles 3446 SourceFileSize 27195497 (25.9 MB) NewFiles 3446 NewFileSize 27195497 (25.9 MB) |
StartTime 1292235612.44 (Mon Dec 13 11:20:12 2010) EndTime 1292235612.48 (Mon Dec 13 11:20:12 2010) ElapsedTime 0.04 (0.04 seconds) SourceFiles 6 SourceFileSize 8192 (8.00 KB) NewFiles 6 NewFileSize 8192 (8.00 KB) |
Linea 48: | Linea 56: |
DeltaEntries 3446 RawDeltaSize 27018423 (25.8 MB) TotalDestinationSizeChange 6865063 (6.55 MB) |
DeltaEntries 6 RawDeltaSize 0 (0 bytes) TotalDestinationSizeChange 300 (300 bytes) |
Linea 53: | Linea 61: |
}}} | }}} dove si può leggere che in circa 4 secondi sono stati salvati 6 elementi della grandezza complessiva di 8Kb e non ci sono stati errori. |
Linea 55: | Linea 63: |
duplicity-full-signatures.2005-11-27T01:00:01-05:00.sigtar.gpg duplicity-full.2005-11-27T01:00:01-05:00.manifest.gpg duplicity-full.2005-11-27T01:00:01-05:00.vol1.difftar.gpg duplicity-full.2005-11-27T01:00:01-05:00.vol2.difftar.gpg }}} Segue una breve spiegazione sui file qui sopra indicati. Per ulteriori dettagli si rimanda alla [http://www.nongnu.org/duplicity/duplicity.1.html pagina man] di '''Duplicity''': |
duplicity-full-signatures.2010-11-27T01:00:01-05:00.sigtar.gpg duplicity-full.2010-11-27T01:00:01-05:00.manifest.gpg duplicity-full.2010-11-27T01:00:01-05:00.vol1.difftar.gpg duplicity-full.2010-11-27T01:00:01-05:00.vol2.difftar.gpg }}} Per ulteriori dettagli si rimanda alla [http://www.nongnu.org/duplicity/duplicity.1.html pagina man] di '''Duplicity'''. In questa sede, brevemente: |
Linea 68: | Linea 76: |
* A seconda dei parametri e del loro ordine in duplicity possono essere eseguite diverse funzioni. Ad esempio, un archivio può essere verificato per vedere se un backup completo è stato fatto e quali file sono stati modificati dopo l'ultimo backup. Il codice sotto riportato è un esempio di come verificare le copie eseguite con lo script `backup.sh` (dare permessi 700): {{{ #!/bin/sh export PASSPHRASE=SomeLongGeneratedHardToCrackKey export FTP_PASSWORD=WhateverPasswordYouSetUp duplicity verify ftp://FtpUserID@ftp.domain.com/etc /etc |
* Un archivio può essere verificato per controllare se il backup è stato eseguito completamente e quali file sono stati modificati dopo l'ultimo backup. Il codice sotto riportato è un esempio di come verificare le copie eseguite con lo script `backup.sh` (dare sempre permessi 700 come mostrato in precedenza): {{{ #!/bin/sh export PASSPHRASE=UnaPasswordMoltoLungaDifficilmenteCraccabile export FTP_PASSWORD=LaPasswordDelServerFTP duplicity verify ftp://UtenteFTP@ftp.nomedominio.com/backup /home/mario/Scrivania/salvami |
Linea 77: | Linea 85: |
Verify complete: 3503 files compared, 2 differences found. }}} * Per aumentare il livello del dettaglio delle informazioni fornite modificare l'opzione `-v` passando da 3 a 4, per esempio. Modificando in questo modo la riga indicata in precedenza {{{ duplicity verify -v4 ftp://FtpUserID@ftp.domain.com/etc /etc |
mario@mario:~/Scrivania$ ./verifica.sh NcFTP version is 3.2.4 Local and Remote metadata are synchronized, no sync needed. Last full backup date: Mon Dec 13 11:20:06 2010 Difference found: File sottocartella has mtime Mon Dec 13 11:39:46 2010, expected Mon Dec 13 11:13:30 2010 Difference found: New file sottocartella/cinque.txt Verify complete: 7 files compared, 2 differences found. }}} in questo caso volutamente sulla cartella locale è stato aggiunto un file. Le modifiche segnalate sono due in quanto viene tenuto conto della cartella in cui è contenuto il nuovo file. * Per aumentare il livello del dettaglio delle informazioni fornite modificare l'opzione `-v` passando da 4 (livello di default quando non è indicato come nel caso precedente) a 9 (il livello massimo, per esempio). Modificando in questo modo la riga indicata in precedenza {{{ duplicity verify -v9 ftp://UtenteFTP@ftp.nomedominio.com/backup /home/mario/Scrivania/salvami |
Linea 82: | Linea 96: |
* Si avrà il seguente output: {{{ Difference found: File . has mtime Fri Dec 2 05:58:42 2005, expected Wed Nov 30 11:42:01 2005 Difference found: File resolv.conf has mtime Fri Dec 2 05:58:42 2005, expected Mon Nov 28 18:58:28 2005 Verify complete: 3503 files compared, 2 differences found. }}} che oltre ad indicare che sono state individuate due differenze specifica anche cosa è stato cambiati. |
* Si avrà il seguente output molto dettagliato e molto più lungo. |
Linea 92: | Linea 102: |
export PASSPHRASE=SomeLongGeneratedHardToCrackKey export FTP_PASSWORD=WhateverPasswordYouSetUp duplicity list-current-files ftp://FtpUserID@ftp.domain.com/etc |
export PASSPHRASE=UnaPasswordMoltoLungaDifficilmenteCraccabile export FTP_PASSWORD=LaPasswordDelServerFTP duplicity list-current-files ftp://UtenteFTP@ftp.nomedominio.com/backup |
Linea 99: | Linea 109: |
... Sat Nov 12 19:58:23 2005 rcS.d/S70xorg-common Sat Nov 12 20:06:57 2005 rcS.d/S75sudo Sat Nov 12 20:35:43 2005 readahead Mon Nov 28 18:57:23 2005 readahead/readahead Mon Nov 28 18:57:23 2005 readahead/readahead.new Tue Jan 25 15:03:18 2005 reportbug.conf Mon Nov 28 18:58:28 2005 resolv.conf Sat Nov 12 19:55:51 2005 resolvconf Sat Nov 12 20:06:57 2005 resolvconf/update-libc.d Wed Aug 17 21:17:26 2005 resolvconf/update-libc.d/fetchmail Mon Jun 27 07:16:38 2005 rmt Mon Sep 19 06:41:04 2005 rpc Sat Nov 19 13:08:21 2005 samba Thu Jul 21 13:31:14 2005 samba/gdbcommands Sat Nov 19 13:08:21 2005 samba/smb.conf Sat Nov 19 13:05:32 2005 samba/smb.conf~ Sat Nov 12 20:00:22 2005 sane.d Tue Sep 27 09:14:55 2005 sane.d/abaton.conf Tue Sep 27 09:14:55 2005 sane.d/agfafocus.conf ... |
mario@mario:~/Scrivania$ ./elenco.sh NcFTP version is 3.2.4 Local and Remote metadata are synchronized, no sync needed. Last full backup date: Mon Dec 13 11:20:06 2010 Mon Dec 13 11:13:24 2010 . Mon Dec 13 11:13:07 2010 due.txt Mon Dec 13 11:13:30 2010 sottocartella Mon Dec 13 11:13:27 2010 sottocartella/quattro.txt Mon Dec 13 11:13:14 2010 tre.txt Mon Dec 13 11:12:58 2010 uno.txt |
Linea 124: | Linea 123: |
* Ad un certo punto, potrebbe essere necessario ripristinare un file. Questo compito può essere realizzato rapidamente e facilmente, facendo piccole modifiche allo script seguente: {{{ #!/bin/sh export PASSPHRASE=SomeLongGeneratedHardToCrackKey export FTP_PASSWORD=WhateverPasswordYouSetUp duplicity --file-to-restore apt/sources.list ftp://FtpUserID@ftp.domain.com/etc /home/user/sources.list unset PASSPHRASE unset FTP_PASSWORD }}} * Il comando precedente ripristina il file `sources.list` dall'ultimo backup trovato sullo spazio FTP copiando il file nella propria cartella '''Home'''. |
* Ad un certo punto, potrebbe essere necessario ripristinare un file. Questo compito può essere realizzato rapidamente e facilmente, facendo piccole delle modifiche allo script seguente: {{{ #!/bin/sh export PASSPHRASE=UnaPasswordMoltoLungaDifficilmenteCraccabile export FTP_PASSWORD=LaPasswordDelServerFTP duplicity --file-to-restore uno.txt ftp://UtenteFTP@ftp.nomedominio.com/backup /home/mario/Scrivania/uno.txt unset PASSPHRASE unset FTP_PASSWORD }}} * Il comando precedente ripristina il file `uno.txt` dall'ultimo backup trovato sullo spazio FTP copiando il file nella propria cartella `Scrivania`. |
Linea 135: | Linea 134: |
* Il percorso del file da ripristinare è relativo alla cartella su cui si basa il set d backup. Il comando `apt/sources.list` più la cartella su cui è presente il backup (`/etc`) è uguale a `/etc /apt/sources.list`. Non avrebbe funzionato mettendo `/etc/apt/sources.list` come percorso di origine perché il backup non avrebbe riconosciuto `/etc` come un percorso valido. * Duplicity non sovrascriverà un file esistente. Ecco l'output se viene apportata una modifica allo script di cui sopra per ripristinare il file `/etc/apt/sources.list` {{{ Restore destination directory /etc/apt/sources.list already exists. |
* Il percorso del file da ripristinare è relativo alla cartella su cui si basa il set d backup. Inserire il percorso relativo partendo dalla racice `backup`. Quindi, in questo caso, trovandosi in `backup` il file `uno.txt` da recuperare, è stato sufficiente indicare `uno.txt`. Per recuperare il file `quattro.txt` si doveva mettere `sottocartella/quattro.txt`. * Duplicity non sovrascriverà un file esistente. Si sarebbe ricevuto il seguente errore tentando si sovrascrivere il file `uno.txt` {{{ Restore destination directory ~/Scrivania/salvami/uno.txt already exists. |
Linea 139: | Linea 138: |
}}} Il file deve essere eliminato prima di eseguire lo script, o un percorso diverso o il nome del file deve essere utilizzato. Tale comportamento è bene per me da quando ho normalmente come estrarre il file ripristinato prima invece di sovrascrivere il file corrente con quello trovato nel set di backup. Si noti inoltre che per default non vi è alcuna uscita di questo comando se si completa con successo. Sarà sufficiente inserire il file nel percorso specificato e di uscita. Tuttavia, il livello di dettaglio può essere cambiato, come abbiamo fatto nello script verify.sh per ulteriori informazioni. C'è un altro scenario di ripristino che mi succede di tanto in tanto. Faccio una modifica a un file, diciamo sources.list di nuovo. Pochi giorni passano e trovo qualcosa che voglio installare, ma Synaptic mi dà errori circa le fonti. Ho rovinato qualcosa. Ma perché ho eseguito lo script backup.sh più volte nei giorni scorsi, il file sources.list male ora è nel set di backup più recente. Come faccio a recuperare una buona copia? Punto 3 dei requisiti è stato quello di essere in grado di eseguire il backup e il ripristino di versioni multiple di file e Duplicity permette proprio questo. Vorrei dare un'occhiata alla data dell'ultima modifica del file sources.list. Essa mostra è stato modificato 3 giorni fa. Così, ho bisogno di ripristinare il file dal backup scattata 4 giorni fa. Questo può essere fatto semplicemente aggiungendo il parametro di tempo di ripristino''-T3D''. Ecco lo script restore.sh a cura appare come segue: {{{ #!/bin/sh export PASSPHRASE=SomeLongGeneratedHardToCrackKey export FTP_PASSWORD=WhateverPasswordYouSetUp duplicity -t 3D --file-to-restore apt/sources.list ftp://FtpUserID@ftp.domain.com/etc /home/user/sources.list unset PASSPHRASE unset FTP_PASSWORD }}} Questo è tutto quello che c'è da fare. Se si apportano modifiche su base giornaliera al file e non sapete in quale giorno si desidera recuperare, ma si pensa che era da 4 a 6 giorni fa, allora perché non recuperare tutti in tale intervallo. Modificare il file restore.sh con comandi multipli doppiezza in questo modo: {{{ #!/bin/sh export PASSPHRASE=SomeLongGeneratedHardToCrackKey export FTP_PASSWORD=WhateverPasswordYouSetUp duplicity -t4D --file-to-restore apt/sources.list ftp://FtpUserID@ftp.domain.com/etc /home/user/sources.list.t4D duplicity -t5D --file-to-restore apt/sources.list ftp://FtpUserID@ftp.domain.com/etc /home/user/sources.list.t5D duplicity -t6D --file-to-restore apt/sources.list ftp://FtpUserID@ftp.domain.com/etc /home/user/sources.list.t6D unset PASSPHRASE unset FTP_PASSWORD }}} Ci sono molti altri modi elencati nella pagina man Duplicity a designare il set di backup che si desidera ripristinare da. Check it out per ulteriori informazioni. |
}}} Bisogna prima cancellare il file di origine oppure salvare il file del backup su un percorso diverso (come è stato fatto nell'esempio) oppure cambiare il nome del file. Potrebbe essere utile verificare un file di backup anteriore ad un certo periodo di tempo. il parametro `-t 3D` recupererà le copie di uno specifico file più vecchie di 3 giorni. Ecco lo script restore.sh modificato: {{{ #!/bin/sh export PASSPHRASE=UnaPasswordMoltoLungaDifficilmenteCraccabile export FTP_PASSWORD=LaPasswordDelServerFTP duplicity -t 3D --file-to-restore uno.txt ftp://UtenteFTP@ftp.nomedominio.com/backup /home/mario/Scrivania/uno.txt unset PASSPHRASE unset FTP_PASSWORD }}} Questo esempio invece recupererebbe il file `uno.txt` nelle versioni del backup di 4, 5 e 6 giorni fa {{{ #!/bin/sh export PASSPHRASE=UnaPasswordMoltoLungaDifficilmenteCraccabile export FTP_PASSWORD=LaPasswordDelServerFTP duplicity -t4D --file-to-restore uno.txt ftp://UtenteFTP@ftp.nomedominio.com/backup /home/mario/Scrivania/uno.txt duplicity -t5D --file-to-restore uno.txt ftp://UtenteFTP@ftp.nomedominio.com/backup /home/mario/Scrivania/uno.txt duplicity -t6D --file-to-restore uno.txt ftp://UtenteFTP@ftp.nomedominio.com/backup /home/mario/Scrivania/uno.txt unset PASSPHRASE unset FTP_PASSWORD }}} Fare riferimento alla pagina di man per conoscere le altre modalità di ripristino dei file di backup. |
Linea 170: | Linea 164: |
Mettere il file `backup.sh` in cron (link a pagina cron): {{{ 0 0 * * * /root/scripts/etc/backup.sh >>/var/log/duplicity/etc.log }}} Si noti che i risultati Duplicity stanno andando a un file di registro in modo che possa essere controllato per vedere se i backup stanno completando con successo ogni sera. |
Aggiungere il file `backup.sh` all'interno di [:AmministrazioneSistema/Cron:cron] {{{ 0 0 * * * /home/mario/Scrivania/backup.sh >>/var/log/duplicity/etc.log }}} Sarà eseguito un backup a mezzanotte e verrà creato un log per potere verificare che i backup siano stati compiuti con successo. |
Linea 185: | Linea 179: |
duplicity remove-older-than 1Y --force ftp://FtpUserID@ftp.domain.com/etc | duplicity remove-older-than 1Y --force ftp://UtenteFTP@ftp.nomedominio.com/backup |
Linea 191: | Linea 185: |
* 'full-if-older-than 1M': Questa opzione fa in modo che si duplicità eseguire un backup completo una volta al mese - anche quando il backup del 1 ° giorno di un mese non riesce. Suppose we want to run full backups on the first day of the month, and only then. The second example script (below) shows the simplest way to do this, with the switch 'full-if-older-than 1M'. This switch makes sure that duplicity will perform a full backup once a month - even when the backup on the 1st day of a month fails. Alternatively, suppose one's determination of when to do full backups is more complex. Then one should do the appropriate calculations in the driver script. The first example script (below) calculates the first day of the month using ''bash''. |
* 'full-if-older-than 1M': Questa opzione fa in modo che duplicity eseguia un backup completo una volta al mese anche quando il backup del 1° giorno di un mese non riesce. Supponiamo si voglio eseguire il backup solo il primo giorno del mese. Il secondo script di seguito indicato mostra come è posssibile farlo utilizzando l'opzione 'full-if-older-than 1M'. Questo verificherà che duplicity faccia il backup una sola volta al mese anche quando il backup del primo del mese fallisca. |
Linea 200: | Linea 192: |
{{{ Questo script esegue il backup del file delle password GPass che uso. Si noti che ho impostato per crittografare Duplicity'''non''' i file GPass. Non solo non è necessario per crittografare i file dal GPass li ha già cifrato, ma è soprattutto importante non cifrare nuovamente da quando ho la mia frase di mantenere a lungo passare generato che sto usando per crittografare i set di backup di altri nel file delle password GPass . Se il file è stato crittografato GPass, sarebbe davvero un problema se il mio computer è stato distrutto e ho voluto riportare alcuni dei miei file altrove. Al fine di ottenere la passphrase per ripristinare i file che tengo in GPass, avrei per decriptare i file GPass con la passphrase stesso. }}} This script backs up the GPass password file that I use. Notice that I have Duplicity set to '''not''' encrypt the GPass files. Not only is it not necessary to encrypt those files since GPass has already encrypted them, but it's especially important not to encrypt them again since I keep my long generated pass phrase that I'm using to encrypt the other backup sets in the GPass password file. If the GPass file was encrypted, it would really be a problem if my computer was destroyed and I wanted to restore some of my files elsewhere. In order to get the pass phrase to restore the files that I keep in GPass, I would have to decrypt the GPass files with the very same pass phrase. L'esempio è disponibile in [http://wiki.ubuntu-it.org/GiuseppeTerrasi/Prove12?action=AttachFile&do=get&target=gpg-backup.sh allegato]. Si vedano i commenti interni al file. |
Questo script esegue solo il backup del file delle password GPG. Si noti i file non saranno crittografati. Questo perché i file GPG lo sono già. L'esempio è disponibile in [http://wiki.ubuntu-it.org/GiuseppeTerrasi/Prove12?action=AttachFile&do=get&target=gpg-backup.sh allegato]. Si vedano i commenti interni al file e lo si modifichi nel modo appropriato. |
Linea 210: | Linea 199: |
Per fare compia completa ogni mese (vedi anche sopra). | Per fare compia completa ogni mese si veda anche sopra |
Indice(depth=2) Informazioni(rilasci="10.10 10.04 9.10 8.04"; forum="http://forum.ubuntu-it.org/index.php/topic,59072.0.html")
Introduzione
Duplicity effettua backup di cartelle producendo archivi compressi in formato .tar e salvandoli su destinazioni locali io remote. Utilizza [:Sicurezza/GnuPg:GnuPg:GPG] per cifrare o firmare gli archivi in modo da renderli sicuri da tentativi di spionaggio o di modifica.
Installazione e configurazione
[:AmministrazioneSistema/InstallareProgrammi:Installare] il pacchetto [apt://duplicity duplicity].
Preparare il percorso per ricevere i file di backup. Negli esempi successivi si userà un server FTP remoto. Per quanto concerne la configurazione del proprio server FTP si veda la [:Server/Ftp:relativa guida] oppure si consulti la documentazione del proprio web hosting.
Una volta configurato l'account FTP creare la cartella di destinazione dei file di backup in una posizione non raggiungile dal server web. Per esempi successivi sul server FTP è stata creata la cartella backup.
Negli esempi successivi, si tenterà di compiere delle copie di backup di una cartella locale avente la seguente struttura:
mario@mario:~/Scrivania$ tree salvami/ salvami/ |-- due.txt |-- sottocartella | `-- quattro.txt |-- tre.txt `-- uno.txt
Funzionalità di base
Backup
Per compiere il backup copiare quanto segue in un [:Ufficio/EditorDiTesto:editor di testo]
export PASSPHRASE=UnaPasswordMoltoLungaDifficilmenteCraccabile export FTP_PASSWORD=LaPasswordDelServerFTP duplicity /home/mario/Scrivania/salvami ftp://UtenteFTP@ftp.nomedominio.com/backup unset PASSPHRASE unset FTP_PASSWORD
e salvarlo denominandolo backup.sh.
Attribuire allo script appena creato i seguenti [:AmministrazioneSistema/PermessiFile:permessi]
chmod 700 backup.sh
Questo script eseguirà il backup della cartella salvami posizionata sulla Scrivania in volumi compressi e cifrati con la password specificata e quindi caricherà i file di backup sullo spazio FTP all'interno della cartella backup utilizzando i nomi utenti e la password specificate.
Dopo aver modificato adeguatamente l'esempio, lanciarlo digitando in una finestra di terminale il seguente comando
./backup.sh
Al termine delle operazioni, lo script restituirà un output simile al seguente
--------------[ Backup Statistics ]-------------- StartTime 1292235612.44 (Mon Dec 13 11:20:12 2010) EndTime 1292235612.48 (Mon Dec 13 11:20:12 2010) ElapsedTime 0.04 (0.04 seconds) SourceFiles 6 SourceFileSize 8192 (8.00 KB) NewFiles 6 NewFileSize 8192 (8.00 KB) DeletedFiles 0 ChangedFiles 0 ChangedFileSize 0 (0 bytes) ChangedDeltaSize 0 (0 bytes) DeltaEntries 6 RawDeltaSize 0 (0 bytes) TotalDestinationSizeChange 300 (300 bytes) Errors 0 -------------------------------------------------
dove si può leggere che in circa 4 secondi sono stati salvati 6 elementi della grandezza complessiva di 8Kb e non ci sono stati errori.Sul server FTP si dovrebbe trovare un elenco di file simile al seguente:
duplicity-full-signatures.2010-11-27T01:00:01-05:00.sigtar.gpg duplicity-full.2010-11-27T01:00:01-05:00.manifest.gpg duplicity-full.2010-11-27T01:00:01-05:00.vol1.difftar.gpg duplicity-full.2010-11-27T01:00:01-05:00.vol2.difftar.gpg
Per ulteriori dettagli si rimanda alla [http://www.nongnu.org/duplicity/duplicity.1.html pagina man] di Duplicity. In questa sede, brevemente:
Il file sigtar.gpg contiene la chiave di ogni file del quale viene eseguito il backup in modo che Duplicity riesca a capire quale parte di un file è stato modificato. Con queste informazioni si possono caricare solo le parti mancanti per completare un nuovo set di backup.
Il file manifest.gpg contiene un elenco di tutti i file nel set di backup e un hash SHA1 di ogni file, probabilmente così Duplicity può dire molto rapidamente se un file è stato cambiato o no dopo l'ultimo backup.
I file vol?.difftar.gpg contengono i dati di file effettivamente copiati. Sembra che i volumi Duplicity siamo al massimo di 5 MB. Questo è utile durante ripristina così l'intero set di backup non devono essere scaricati per recuperare un singolo file. Duplicity scaricherà solo il volume che contiene quel file.
Verifica
Un archivio può essere verificato per controllare se il backup è stato eseguito completamente e quali file sono stati modificati dopo l'ultimo backup. Il codice sotto riportato è un esempio di come verificare le copie eseguite con lo script backup.sh (dare sempre permessi 700 come mostrato in precedenza):
export PASSPHRASE=UnaPasswordMoltoLungaDifficilmenteCraccabile export FTP_PASSWORD=LaPasswordDelServerFTP duplicity verify ftp://UtenteFTP@ftp.nomedominio.com/backup /home/mario/Scrivania/salvami unset PASSPHRASE unset FTP_PASSWORD
Un possibile output:
mario@mario:~/Scrivania$ ./verifica.sh NcFTP version is 3.2.4 Local and Remote metadata are synchronized, no sync needed. Last full backup date: Mon Dec 13 11:20:06 2010 Difference found: File sottocartella has mtime Mon Dec 13 11:39:46 2010, expected Mon Dec 13 11:13:30 2010 Difference found: New file sottocartella/cinque.txt Verify complete: 7 files compared, 2 differences found.
in questo caso volutamente sulla cartella locale è stato aggiunto un file. Le modifiche segnalate sono due in quanto viene tenuto conto della cartella in cui è contenuto il nuovo file.Per aumentare il livello del dettaglio delle informazioni fornite modificare l'opzione -v passando da 4 (livello di default quando non è indicato come nel caso precedente) a 9 (il livello massimo, per esempio). Modificando in questo modo la riga indicata in precedenza
duplicity verify -v9 ftp://UtenteFTP@ftp.nomedominio.com/backup /home/mario/Scrivania/salvami
- Si avrà il seguente output molto dettagliato e molto più lungo.
Elenco dei file archiviati
A volte è utile controllare quali file sono nella copia di backup più recente. Questo può essere fatto con il seguente script:
export PASSPHRASE=UnaPasswordMoltoLungaDifficilmenteCraccabile export FTP_PASSWORD=LaPasswordDelServerFTP duplicity list-current-files ftp://UtenteFTP@ftp.nomedominio.com/backup unset PASSPHRASE unset FTP_PASSWORD
Appena avviato, si riceverà una lunga lista di lista. Questa è una parte dell'output:
mario@mario:~/Scrivania$ ./elenco.sh NcFTP version is 3.2.4 Local and Remote metadata are synchronized, no sync needed. Last full backup date: Mon Dec 13 11:20:06 2010 Mon Dec 13 11:13:24 2010 . Mon Dec 13 11:13:07 2010 due.txt Mon Dec 13 11:13:30 2010 sottocartella Mon Dec 13 11:13:27 2010 sottocartella/quattro.txt Mon Dec 13 11:13:14 2010 tre.txt Mon Dec 13 11:12:58 2010 uno.txt
Ripristino
Ad un certo punto, potrebbe essere necessario ripristinare un file. Questo compito può essere realizzato rapidamente e facilmente, facendo piccole delle modifiche allo script seguente:
export PASSPHRASE=UnaPasswordMoltoLungaDifficilmenteCraccabile export FTP_PASSWORD=LaPasswordDelServerFTP duplicity --file-to-restore uno.txt ftp://UtenteFTP@ftp.nomedominio.com/backup /home/mario/Scrivania/uno.txt unset PASSPHRASE unset FTP_PASSWORD
Il comando precedente ripristina il file uno.txt dall'ultimo backup trovato sullo spazio FTP copiando il file nella propria cartella Scrivania.
Alcune note sullo script restore.sh appena visto:
Il percorso del file da ripristinare è relativo alla cartella su cui si basa il set d backup. Inserire il percorso relativo partendo dalla racice backup. Quindi, in questo caso, trovandosi in backup il file uno.txt da recuperare, è stato sufficiente indicare uno.txt. Per recuperare il file quattro.txt si doveva mettere sottocartella/quattro.txt.
Duplicity non sovrascriverà un file esistente. Si sarebbe ricevuto il seguente errore tentando si sovrascrivere il file uno.txt
Restore destination directory ~/Scrivania/salvami/uno.txt already exists. Will not overwrite.
Bisogna prima cancellare il file di origine oppure salvare il file del backup su un percorso diverso (come è stato fatto nell'esempio) oppure cambiare il nome del file.
Potrebbe essere utile verificare un file di backup anteriore ad un certo periodo di tempo. il parametro -t 3D recupererà le copie di uno specifico file più vecchie di 3 giorni. Ecco lo script restore.sh modificato:
export PASSPHRASE=UnaPasswordMoltoLungaDifficilmenteCraccabile export FTP_PASSWORD=LaPasswordDelServerFTP duplicity -t 3D --file-to-restore uno.txt ftp://UtenteFTP@ftp.nomedominio.com/backup /home/mario/Scrivania/uno.txt unset PASSPHRASE unset FTP_PASSWORD
Questo esempio invece recupererebbe il file uno.txt nelle versioni del backup di 4, 5 e 6 giorni fa
export PASSPHRASE=UnaPasswordMoltoLungaDifficilmenteCraccabile export FTP_PASSWORD=LaPasswordDelServerFTP duplicity -t4D --file-to-restore uno.txt ftp://UtenteFTP@ftp.nomedominio.com/backup /home/mario/Scrivania/uno.txt duplicity -t5D --file-to-restore uno.txt ftp://UtenteFTP@ftp.nomedominio.com/backup /home/mario/Scrivania/uno.txt duplicity -t6D --file-to-restore uno.txt ftp://UtenteFTP@ftp.nomedominio.com/backup /home/mario/Scrivania/uno.txt unset PASSPHRASE unset FTP_PASSWORD
Fare riferimento alla pagina di man per conoscere le altre modalità di ripristino dei file di backup.
Automatizzare Duplicity
Aggiungere il file backup.sh all'interno di [:AmministrazioneSistema/Cron:cron]
0 0 * * * /home/mario/Scrivania/backup.sh >>/var/log/duplicity/etc.log
Sarà eseguito un backup a mezzanotte e verrà creato un log per potere verificare che i backup siano stati compiuti con successo.
Funzionalità avanzate
Dopo un po ', ho notato che ci vuole un po' per ripristinare i file quando ci sono così tanti i backup incrementali. Dopo tutto, il file di base che voglio ripristinare solo esiste il primo backup completo. I backup incrementali contenere solo le modifiche a quel file. Così, Duplicity non solo deve scaricare il volume che contiene il file di base, ma tutti i file di backup incrementale che detengono le modifiche che devono essere applicati al file, al fine di elaborare il file che ho chiesto. Così, alcuni di gestione è necessario per mantenere il sistema di backup di uscire di controllo.
Io adesso faccio due forme di gestione: io faccio il backup completo il primo giorno di ogni mese, e posso cancellare i vecchi backup dopo un anno (che potrebbe essere adattato in seguito a qualcosa di meno, a seconda dello spazio).
Cancellare i vecchi backup
Questo comando elimina i backup più vecchi di un anno:
duplicity remove-older-than 1Y --force ftp://UtenteFTP@ftp.nomedominio.com/backup
Non è possibile fare un backup (completo o incrementale) e cancellare i vecchi file con lo stesso comando.
Cambiare modalità di backup
- 'full-if-older-than 1M': Questa opzione fa in modo che duplicity eseguia un backup completo una volta al mese anche quando il backup del 1° giorno di un mese non riesce.
Supponiamo si voglio eseguire il backup solo il primo giorno del mese. Il secondo script di seguito indicato mostra come è posssibile farlo utilizzando l'opzione 'full-if-older-than 1M'. Questo verificherà che duplicity faccia il backup una sola volta al mese anche quando il backup del primo del mese fallisca.
Script di esempio
Primo script di esempio
Questo script esegue solo il backup del file delle password GPG. Si noti i file non saranno crittografati. Questo perché i file GPG lo sono già.
L'esempio è disponibile in [http://wiki.ubuntu-it.org/GiuseppeTerrasi/Prove12?action=AttachFile&do=get&target=gpg-backup.sh allegato]. Si vedano i commenti interni al file e lo si modifichi nel modo appropriato.
Secondo script di esempio
Per fare compia completa ogni mese si veda anche sopra
L'esempio è disponibile in [http://wiki.ubuntu-it.org/GiuseppeTerrasi/Prove12?action=AttachFile&do=get&target=mt-complete-bk.sh allegato]. Si vedano i commenti interni al file.
Ulteriori risorse
[https://help.ubuntu.com/community/DuplicityBackupHowto/ Documento originale]
[http://www.nongnu.org/duplicity/index.html Sito ufficiale del progetto]
[http://www.debian-administration.org/articles/209 Approfondimenti su debian-administration.org]