Approfondimenti e Strategie di Web Marketing

Il Backup Perfetto su Linux – La Guida Completa (RSync e RSnapshot)

Il backup in ambiente Linux è una di quelle procedure che va impostata bene una sola volta, per poi dimenticarsene completamente. Trovo molto utile la guida scritta da Saverio Bolognani che spiega dettagliatamente come implementare il “Backup Perfetto” in ambienti Linux. Ovviamente la procedura quì descritta può essere applicata anche sui sistemi Ubuntu Linux.

Penso che il backup perfetto (in qualsiasi sistema operativo) debba soddisfare i seguenti requisiti.

Completamente automatico

L’utente non deve fare nulla dopo aver configurato il suo sistema di backup la prima volta. Il tutto deve essere automatico da quel momento in poi. Altrimenti la “qualità” del backup dipenderebbe dall’attenzione dell’utente e dalla sua scrupolosità, il che non è accettabile.

Separazione fisica dei supporti

Il backup deve essere contenuto in un supporto fisico che sia completamente separato e distante dal supporto sul quale sono memorizzati i dati originali. Il significato di “separato e distante” dipende dal livello di affidabilità che si richiede:

  • vuoi essere al sicuro nel caso di cancellazioni accidentali di file? allora una cartella separata o meglio ancora una partizione dedicata sul tuo hard disk è sufficiente
  • vuoi essere al sicuro nel caso di malfunzionamenti dell’hardware? allora hai bisogno almeno di un disco fisso separato per il tuo backup
  • vuoi essere al sicuro nel caso di malfunzionamenti del sistema nel suo complesso (tipo scarica elettrica) o anche nel caso di furti? allora un hard disk esterno è la scelta migliore (soluzione consigliata)
  • tenete presente che avere un computer e il backup su un hard disk esterno non è abbastanza per essere sicuri nel caso in cui, ad esempio, dei ladri entrano in casa oppure nel caso di eventi quali alluvioni o incendi. Per questo potreste voler tenere il backup in un altro edificio, per esempio al lavoro e non a casa.
  • volete addirittura essere sicuri anche nel caso di eventi geograficamente localizzati (grandi alluvioni, terremoti, guerra)? Le banche ad esempio lo vogliono. In questo caso dovete fare il backup in qualche altra parte del mondo, ad esempio su un server remoto in un altro paese.


Potreste pensare che tutto ciò sia oltre le vostre necessità, ed effettivamente a voi basterà un hard diskesterno sulla vostra scrivania. In ogni caso dipende dall’importanza dei vostri dati: non vorreste mai perdere la tesi di dottorato che avevate praticamente finito solo perché dei ladri sono entrati in casa vostra e hanno portato via sia il notebook che l’hard disk esterno…

Recupero dei file semplice

Recuperare i file di cui avete fatto il backup deve essere facilissimo! In particolare dovete avere la possibilità di recuperare anche solo alcuni dei vostri file, oppure di recuperare tutto in un colpo solo.

Inoltre, non deve essere necessario alcun software per poter ripristinare i propri file! Non è accettabile che il proprio backup dipenda da una certa software house, o scoprire che il proprio backup vecchio di 5 anni non è più recuperabile perché il software che avete usato non esiste per la nuova versione del sistema operativo (chiedete agli utenti di Win98 se riescono ad accedere ai backup che hanno fatto in quegli anni con il tool di backup ufficiale della Microsoft, quello incluso tra gli Accessori del computer…).

Backup con rsync

Lo strumento principale con il quale si riesce a fare quello che secondo me è il backup perfetto è RSync, un programma open source che permette di fare trasferimento incrementale e rapido di files. La ragione per la quale questa utility è così importante è perché permette di copiare il contenuto di una serie di cartelle in un’altra posizione trasferendo in realtà solo i file che sono cambiati dall’ultima “sincronizzazione”.

C’è un bell’articolo che spiega come utilizzare questo programma per eseguire il backup dei propri files. L’idea principale è quella di fare regolarmente delle copie di tutti i propri dati sul supporto di backup. Rsync rende questa cosa veloce proprio per le caratteristiche che ho appena esposto.

In realtà si può fare anche di meglio: si possono tenere delle “fotografie”, degli “snapshots” dei propri dati, per esempio ogni settimana, così non solo si ha un backup dei propri files, ma si hanno a disposizioni le versioni precedenti.

Si potrebbe pensare che conservare una serie di backup settimanali sia molto oneroso in termini di spazio, ma non è vero! Sfruttando gli hard link del filesystem Ext3, ci sarà bisogno solo dello spazio necessario a memorizzare i file che sono cambiati da uno snapshot al successivo. E il backup che si ottiene è semplicemente una serie di cartelle, contenenti tutti i propri dati “fotografati” in momenti diversi del passato. Gli hard link sono completamente “trasparenti” all’utente, cioè non c’è modo per accorgersi che si tratta di hard links e non di copie aggiuntive degli stessi file.

Tutte queste cose sono fatte in automatico ed in modo efficiente da un bellissimo programmino opensource: rsnapshot.

Rsnapshot

Rnapshot è un programma opensource che implementa quello che secondo me è il “backup perfetto”. Quello che fa è di fare degli “snapshot” dei propri file alla frequenza desiderata (ad esempio ogni settimana). Poi queste copie vengono immagazzinate da rsnapshot sul proprio supporto di backup in modo veloce ed efficiente grazie a rsync.

Tutti gli snapshot acquisiti nel passato sono quindi accessibili come normalissime cartelle, anche se in realtà non occupano lo spazio di una serie di copie quasi uguali – solo le differenze sono effettivamente memorizzate.

In più, si può risparmiare ancora più spazio diradando la frequenza dei backup nel passato. Per esempio si possono fare snapshot settimanali, salvare gli ultimi 4, e poi tenere uno snapshot per mese per i backup più vecchi di 4 settimane. La rotazione di queste immagini è fatta automaticamente.

Un’altra caratteristica importante è che si può fare il backup non solo delle proprie cartelle sul disco fisso, ma anche di cartelle condivise (anche su un PC windows), cartelle remote (SSH, FTP, …), ecc.

Ultimo ma non meno importante, per accedere ai propri backup basta avere un computer che riesca a leggere il filesystem Ext3, cioè praticamente ogni computer Linux, ma anche ogni computer Windows se si installa un piccolo driver, completamente gratuito.

L’unica cosa che richiede un attimo di tempo è configurare rsnapshot la prima volta. C’è un sacco di documentazione online sul sito ufficiale, anche un HOW TO con istruzioni passo passo, insieme a un sacco di guide non ufficiali in giro per internet. Qui semplicemente vi descrivo la mia configurazione, così chi vuole può usarla e adattarla alle proprie necessità. Per informazione, io uso ubuntu, ma tutti i passaggi che spiego dovrebbero funzionare per praticamente ogni distribuzione Linux.

Il file di configurazione più importante per rsnapshot (l’unico) è /etc/rsnapshot.com. È pieno di commenti dettagliati, quindi non dovreste avere problemi a configurarlo semplicemente scorrendolo e leggendo i commenti delle varie sezioni (una volta che avete letto la brevissima guida sul sito ufficiale). Qui riporto solo le sezioni che ho modificato per le mie esigenze specifiche.

Per chi non mastica l’inglese ho tradotto velocemente i commenti.

Snapshot root directory

# All snapshots will be stored under this root directory.
# Tutti gli snapshot vengono salvati in questa cartella.

snapshot_root /media/LACIE_ext3/

# If no_create_root is enabled, rsnapshot will not automatically create
# the snapshot_root directory. This is particularly useful if you are
# backing up to removable media, such as a FireWire or USB drive.
# Se no_create_root è settato a 1, rsnapshot non creerà
# automaticamente la cartella snapshot_root. Ciò è particolarmente
# utile per fare backup su supporti rimovibili, come hard disk USB o
# FireWire.

no_create_root 1

Il significato di queste opzioni è banale, e ben spiegato dai commenti. /media/LACIE_ext3 è la mia partizione Ext3 su un hard disk esterno LaCie.

External program dependencies

In questa sezione non ho modificato nulla.

Backup intervals

# The interval names (hourly, daily, …) are just names and have no
# influence on the length of the interval. The numbers set the number
# of snapshots to keep for each interval (hourly.0, hourly.1, …).
# The length of the interval is set by the time between two executions
# of rsnapshot <interval name>, this is normally done via cron.
# Feel free to adapt the names, and the sample cron file under
# /etc/cron.d/rsnapshot to your needs. The only requirement is that
# the intervals must be listed in ascending order.
# I nomi degli intervalli (weekly = settimanale, monthly = mensile, …)
# sono solo nomi e non hanno nessun effetto sulla reale lunghezza
# dell’intervallo. I numeri impostano il numero di snapshot da
# conservare per ogni intervallo (weekly.0, weekly.1, …).
# La lunghezza dell’intervallo viene impostato dall’intervallo temporale
# tra due esecuzioni di rsnapshot <nome intervallo>, generalmente
# tramite cron. Sentitevi liberi di adattare i nomi degli intervalli, e di
# conseguenza il file /etc/cron.d/rsnapshot secondo le vostre
# esigenze. L’unica vincolo è che gli intervalli devono essere elencati
# in ordine ascendente.

interval weekly 4
interval monthly 36

Quest sezione configure la struttura dei backup nel tempo. Nel mio caso ho decido di conservare 4 backup nel passato, distanziati di una settimana (quindi che coprono l’ultimo mese). Quando i backup sono più vecchi di un mese, viene conservato solo un backup al mese. Per esempio se guardo i miei backup oggi che è il 10 Febbraio 2008, appaiono così:

drwxr-xr-x 3 root root 4096 2008-02-03 11:03 weekly.0
drwxr-xr-x 3 root root 4096 2008-02-03 10:05 weekly.1
drwxr-xr-x 3 root root 4096 2008-01-28 21:04 weekly.2
drwxr-xr-x 3 root root 4096 2008-01-27 00:04 weekly.3
drwxr-xr-x 3 root root 4096 2008-01-22 20:18 monthly.0
drwxr-xr-x 3 root root 4096 2008-01-06 13:04 monthly.1
drwxr-xr-x 3 root root 4096 2007-12-07 16:03 monthly.2
drwxr-xr-x 3 root root 4096 2007-11-05 15:04 monthly.3
drwxr-xr-x 3 root root 4096 2007-10-29 10:04 monthly.4
drwxr-xr-x 3 root root 4096 2007-10-08 20:04 monthly.5
drwxr-xr-x 3 root root 4096 2007-09-02 10:03 monthly.6
drwxr-xr-x 3 root root 4096 2007-08-05 17:34 monthly.7

Fate attenzione che i nomi che assegnate ad ogni backup non hanno nessuna conseguenza sulla frequenza del backup! Servono solo all’utente come etichette. La reale frequenza dei backup dipende da come viene chiamata l’utility rsnapshot (vedi sotto).

L’unico effetto di queste righe di setup è quindi fare in modo che quando l’utente esegue
rsnapshot weekly
allora rsnapshot fa ruotare tutti i backup settimanali (weekly), cancellando l’ultimo (weekly.3), e rinominando gli altri (weekly.1 diventa weekly.2 e così via) e ovviamente creando un nuovo weekly.0 con il backup di oggi. Quando invece viene eseguito
rsnapshot monthly
allora rsnapshot rinomina tutti i backup mensili (monthly) (monthly.1 diventa monthly.2 e così via) e rinomina l’ultimo backup settimanale (weekly.3) in monthly.0.

Global options

Anche qui non ho cambiato nulla.

Backup points / scripts

# LOCALHOST
backup /home/saverio/ localhost/
backup /etc/ localhost/

In questa sezione specificate di quali cartelle volete fare il backup (nel mio caso solo la home directory e /etc. Il secondo argomento di ogni riga specifica sotto quale cartella vanno salvate le copie sul supporto di backup. Attenzione alle barre (/) alla fine dei percorsi!

Pianificare i backup

Il passo successivo consiste nel pianificare l’esecuzione dell’utility di backup. In Linux i comandi pianificati vengono gestiti da alcuni demoni (daemons, cioè programmi che girano in background). Io ho utilizzato cron, disponibile in Ubuntu e in moltissime altre distribuzioni. Sotto la cartella /etc ci sono una serie di sottocartelle per configurare cron:

/etc/cron.d
contiene una serie di file, uno per ogni comando pianificato
/etc/cron.daily
contiene una serie di eseguibili che vanno lanciati ogni giorno
/etc/cron.weekly
contiene una serie di eseguibili che vanno lanciati ogni settimana

e così via. La soluzione che ho scelto è quella di aggiungere un file nella cartella cron.d. Il file si chiama /etc/cron.d/rsnapshot e contiene solamente la riga:

3 * * * * root /usr/bin/nice /home/saverio/bin/rsnapshot_script

che, secondo lo standard crontab, significa che il comando rsnapshot_weekly deve essere eseguito ogni ora, quando i minuti valgono 03 (cioè alle 9.03, 10.03, 11.03, etc…). Il comando viene eseguito con privilegi di superutente (root) e in background (vedi “man nice”).

Diamo quindi un’occhiata al comando rsnapshot_weekly nella mia cartella /home/saverio/bin. È un piccolo script che ho scritto:

#! /bin/bash

# Esegue lo script di backup ogni Domenica se una Domenica è passata senza che il backup sia stato eseguito.
# Ogni mese esegue anche il backup mensile.

una_settimana=7
un_mese=31

timestamp_file_weekly=/home/saverio/.backup_timestamp_weekly
log_file=/home/saverio/.backup.log

date_di_oggi=`date “+%Y%m%d”`
giorno_della_settimana=`date “+%u”`
ora_attuale=`date “+%s”`


date >> $log_file

if [ -e $timestamp_file_weekly ]; then
date_del_backup=`stat –format=%y $timestamp_file_weekly |
… tr -d – | awk ‘{print $1}’`

ora_del_backup=`stat –format=%Y $timestamp_file_weekly`
echo Ultimo backup settimanale $data_del_backup >> $log_file
if (( $giorno_della_settimana % 7 >= $ora_attuale / 86400 -
…$ora_del_backup / 86400 )); then

echo “non sono passate Domeniche senza fare il backup, non
…faccio niente” >> $log_file

exit 0;
fi
echo “una Domenica e passata senza fare il backup: lo faccio ora!”
…>> $log_file

if (( $data_di_oggi – $data_del_backup >= $un_mese )); then
echo “e cominciato un nuovo mese: faccio il backup mensile” >>
…$log_file

/usr/bin/rsnapshot monthly && echo “backup mensile: FATTO!” >>
…$log_file

fi
fi

echo “facciamo un backup settimanale” >> $log_file
date > /home/saverio/.today

/usr/bin/rsnapshot weekly && touch $timestamp_file_weekly && echo
…”backup settimanale: FATTO!” >> $log_file

Ho aggiunto i puntini quando la riga viene spezzata, quindi non fate copia e incolla perché non funzionerebbe. Potete scaricare lo script rsnapshot_script cliccando sul link.

Quello che fa lo script, per chi non ha voglia di guardarne i dettagli, è di eseguire il backup settimanale ogni Domenica. Gestisce correttamente tutti i casi in cui, per esempio, l’hard disk esterno non è collegato al portatile. Inoltre, prevede la possibilità che una Domenica l’utente non accenda il PC, oppure non colleghi l’hard disk esterno. In questo caso lo script farà il backup non appena trova l’hard disk collegato nei giorni immediatamente successivi.

Esegue anche il backup mensile (che non è un backup, è solo la rotazione dei vecchi backup) la prima Domenica del mese.

Non dovete leggervi tutto lo script, l’unica cosa che dovete sapere è che ci sono due opzioni: timestamp_file_weekly che è un file vuoto che serve solo per tener traccia dell’ultimo backup. Potete creare questo file vuoto semplicemente eseguendo
touch timestamp_filename
Il secondo parametro che va impostato è il percorso per il log_file, che è il file dove verrà mantenuto il log di tutto quello che viene fatto (vedi sotto).

Log

Lo script che ho scritto tiene automaticamente un log di tutto quello che fa, per controllarne l’operato e per eventuale debugging. Questo è un esempio del log file sul mio PC (è in inglese perché lo script è in inglese):

Sat Feb 2 23:03:01 CET 2008
Ultimo backup settimanale 20080128
Non sono passate Domeniche senza backup, non faccio nulla
Sun Feb 3 10:03:01 CET 2008
Ultimo backup settimanale 20080128
una Domenica e passata senza fare il backup!
E cominciato un nuovo mese: ora di fare il backup mensile
facciamo un backup settimanale
Sun Feb 3 11:03:01 CET 2008
Ultimo backup settimanale 20080128
una Domenica e passata senza fare il backup!
E cominciato un nuovo mese: ora di fare il backup mensile
backup mensile: FATTO!
facciamo un backup settimanale
backup settimanale: FATTO!
Sun Feb 3 12:03:01 CET 2008
Ultimo backup settimanale 20080203
Non sono passate Domeniche senza backup, non faccio nulla

Ogni voce comincia con data e orario, e si può vedere come i backup vengono fatti correttamente. Poiché il file di log cresce continuamente (ma lentamente, visto che è solo testo), bisogna gestire la cosa. Il modo più facile è quello di usare logrotate, che è già disponibile su Ubuntu e su molte altre distribuzioni. In pratica è un programmino che viene eseguito periodicamente e comprime i file di log, mantenendoli piccoli in dimensione e cancellandoli quando sono vecchi. Tutto quello che dovete fare per dire a logrotate di occuparsi del vostro log è creare il file /etc/logrotate.d/backup con le seguenti righe

/home/saverio/.backup.log {
rotate 6
monthly
compress
missingok
}

che dice a logrotate di “ruotare” i log mensilmente, tenendone solo gli ultimi 6 e comprimendo con gzip. Non vengono dati errori se un file di log manca, ad esempio perché lo cancellate a mano.

Ricevi gratuitamente gli ultimi articoli via mail*.

*Non riceverai nessuna mail di spam e potrai cancellarti con un click!

38 Commenti

Sia i commenti che i trackback sono disabilitati.


38 Risposte a “Il Backup Perfetto su Linux – La Guida Completa (RSync e RSnapshot)”

  1. 1

    gbt dice:

    ma remastersys dove lo mettiamo?per me e il migliore!

  2. 2

    Daniele dice:

    @gbt: non lo conosco, di che si tratta ?

  3. 3

    Cristiano dice:

    Hai realizzato una guida veramente alla portata di tutti: complimenti !

    P.S.: Le lettere accentate dell’articolo sono illeggibili :-(

  4. 4

    Cristiano dice:

    Hai realizzato un’ottima guida veramente accessibile a tutti: complimenti :-)

    P.S.: le lettere accentate a volte vengono visualizzate male :-(

  5. 5

    Sajmon75 dice:

    Complimenti. Credo che la mancanza di un tool di backup con GUI GTK dall’utilizzo semplice e immediato si faccia tuttora sentire in Ubuntu e in Linux in generale. I vari tool attualmente presenti non mi paiono all’altezza. Quindi in attesa del “tool definitivo” la tua soluzione mi pare davvero buona!

  6. 6

    Daniele dice:

    Ragazzi i complimenti sono da fare a saverio. È lui l’autore della guida. :)

  7. 7

    Saverio dice:

    Grazie dei complimenti! Semplicemente dopo aver perso un po’ di tempo a scrivere questi script ho pensato di risparmiare la fatica a chi lo desidera. :-)

    Io adesso vedo bene i caratteri accentati: forse sono stati corretti…
    Ciao a tutti!

  8. 8

    Sergio dice:

    Salve,

    volevo una informazione. Nel caso in cui il backup non va a buon fine, ad esempio spengo il pc prima che sia completato, cosa succede?
    Rsnapshot all’inizio di un backup “weekly” copia semplicemente in un weekly più vecchio il weekly attuale e nella cartella attuale ra rsync con i dati da sincronizzare.
    Ad esempio: ho sull’hd esterno weekly.0 e weekly.1. Ad una richiesta di backup succede che weekly.1 va in weekly.2, mentre weekly.0 va in weekly.1 e weekly.0 viene aggiornato.
    Ma se interrompessi questa procedura, weekly.0 risulterebbe corrotto, o meglio, non sincronizzato? Quindi è come se il backup non fosse avvenuto (weekly.1 == weekly.0).
    Se è giusto quanto detto sopra, come si potrebbe ovviare a questo inconveniente?

    Grazie,
    Sergio.

    P.S. COMPLIMENTONIII :D

  9. 9

    cristiano corsi dice:

    una domanda stupida…. ma se io avessi il disco da copiare con file sytem NTFS montato come secondo disco su unserver linux e il disco di esterno usb in file system NTFS o fat 32 com potrei fare?
    Grazie
    Cristiano

  10. 10

    Christopher dice:

    Scusa, una domanda molto semplice:

    se ho bisogno di fare il backup su un disco esterno, montato con curlftpfs, ovviamente questa soluzione non è delle migliori. Semplicemente perchè rsync proverà a preservare l’owner dei vari files e directory…ma se, appunto, il backup viene fatto su un altro disco, rsync non funziona perchè i vari comandi come: chgrp e chown NON funzioneranno. Che senso ha allora ? sìsì, ok, posso dire a rsync di non preservare l’owner e i permessi originali, ma…,di nuovo, che senso ha ? la potenza di questo rsnapshot dovrebbe essere appunto quella di fare esattamente uno snapshot. Pensavo che rsnapshot si salvasse su un file a parte i permessi originali..e poi li riapplicasse al momento del restore.
    Ho ragione o ho sparato un mucchio di stronzate?

  11. 11

    Saverio dice:

    @ cristiano corsi:

    Non ho capito bene se quello su NTFS è il disca di cui va fatto il backup o il supporto di backup.
    Tieni conto che il supporto sul quale fai il backup DEVE essere ext3 per poter sfruttare le potenzialità di rsync, in particolare la possibilità di fare copie incrementali. Io ho formattato il mio HD esterno in ext3, e ci ho messo su un programmino per windows che permette di accedere agli ext3 anche nei computer windows a cui lo collego.

    @ Christopher:
    Lo stesso discorso vale anche per te. Il supporto sul quale fai backup deve essere ext3 per poter usare rsync appieno, quindi il problema dei permessi non si pone molto.

  12. 12

    ray dice:

    Davvero molto interessante, stavo provando a modificare lo script
    per fare ruotare i backup con questa sequenza:

    1 backup giornaliero
    5 backup per settimana ( da lunedi al venerdi )
    4 backup al mese ( uno per settimana )
    6 backup conservati dei 6 mesi a rotazione

    Dato la non sempre facilità nel modificare codice fatto da altri chiedo all’autore se mi puo’ dare una mano in tal senso.

    grazie

  13. 13

    Saverio dice:

    Ray, la parte banale della modifica è sostituire

    interval weekly 4
    interval monthly 36

    con

    interval daily 7
    interval weekly 4
    interval monthly 36

    Poi però bisogna che rsnapshot daily venga lanciato ogni giorno,
    rsnapshot weekly ogni settimana, rsnapshot monthly ogni mese.
    Non vorrei sbagliarmi, ma lo script dovrebbe funzionare cosi com’è, se non che bisogna che tu lanci rsnapshot daily ogni giorno, ad esempio mettendo un piccolissimo script che fa solo
    /usr/bin/nice /home/saverio/bin/rsnapshot daily
    in cron.daily.

    A proposito: è cambiato il mio sito, ora è http://www.dei.unipd.it/~sbologna

    Ciao a tutti!

  14. 14

    Matteo dice:

    Ottima guida

  15. 15

    Alan Toro » Metodi di backup su Linux dice:

    [...] ho notato qualche altro strumento. Ad esempio ho trovato molto interessante sia l’articolo di Daniele Salamina e sia Flayback [...]

  16. 16

    giacomo dice:

    A che serve la penultima riga “date > /home/saverio/.today” ??
    A me sembra che tenga traccia dell’ultimo backup stampando la data nel file .today, solo che poi questo file non viene usato da nessuna parte…
    Complimenti per aver riportato quest’ottima guida :-)

  17. 17

    urturino dice:

    Io credo di avere un problema, perché ogni domenica, invece di fare UN backup, fa un backup ogni ora.

    È come se non eseguisse il comando “touch $timestamp_file_weekly”

  18. 18

    Mizio dice:

    Domanda Banale,
    è possibile effettuare Snapshot, usando come dispositivo di backup un nastro? O meglio se ho un unità ad 8 nastri, come potrei implementare una buona strategia di backup?

    Ps. Cmplimenti per l’ottima guida

  19. 19

    Carlo dice:

    Ciao,
    avrei un dubbio. Vorrei usare un hardk disk usb, ovviamente formattato in ext3, come destinazione del backup. Ho creato un mount point in /media/backup_pb e configurato tutto il resto (credo) correttamente, seguendo la guida. Questo hard disk non lo tengo sempre collegato, quindi mi aspetterei che lo script “fallisca” l’operazione di backup. Invece quello che succede è che va comunque a creare le directory weekly.0 etc. nella directory /media/backup_pb. Cioè, il punto di mount è presente anche quando l’hard disk è scollegato, e lo script va a scrivere lì.

    Dov’è l’errore?
    Ho appena controllato e anche il valore di no_create_root è impostato correttamente a 1, nel caso potesse dipendere da questo.

    grazie,
    Carlo

  20. 20

    alessandro dice:

    @ urturino:
    devi installare lchown-perl, altrimenti rsnapshot ritorna un exit-status 2 e non viene effettauto il touch di $timestamp_file_weekly.

  21. 21

    Rainolf dice:

    In Debian sto notando che tutto funziona bene eccetto la propagazione dei permessi ed utenti con rsync.
    Qualcuno mi sa suggerire un workaround?

    Grazie

  22. 22

    mirco dice:

    Vi premetto che sono alle prime armi con linux,volevo effettuare un backup incrementale della mia cartella /home /etc /usr su un hard disk esterno su usb da 1 Tb.Ho seguito attentamente la guida passo per passo ma quando eseguo il comando rsnapshot weekly come root, sull’harddisk esterno trovo sulla cartella weekly.0 solo cartelle senza file dentro.
    Sicuramente è un problema di permessi ma non riesco a uscirne fuori, durante il backup vedo errori di questo tipo:

    rsync: chown “/media/PACKARDBELL/BkNibiru/weekly.0/localhost/usr/local/share/xml/declaration” failed: Operation not permitted (1)
    rsync: chown “/media/PACKARDBELL/BkNibiru/weekly.0/localhost/usr/local/share/xml/entities” failed: Operation not permitted (1)
    rsync: chown “/media/PACKARDBELL/BkNibiru/weekly.0/localhost/usr/local/share/xml/misc” failed: Operation not permitted (1)
    rsync: chgrp “/media/PACKARDBELL/BkNibiru/weekly.0/localhost/usr/local/buc/.buc.MMJhgr” failed: Operation not permitted (1)
    rsync: chgrp “/media/PACKARDBELL/BkNibiru/weekly.0/localhost/usr/local/buc/.grafica-aircrack.zip.JY1hKi” failed: Operation not permitted (1)

    Grazie mille per l’aiuto

  23. 23

    mirco dice:

    @ mirco:
    Ho risolto il problema il mio disco esterno è un fat32 devo formattarlo in ext3.
    Grazie

  24. 24

    Ray dice:

    Rsnapshot e ACL per Active Directory

    Qualcuno di voi ha testato la propagazione delle acl con rsnapshot e rsync? ( chiedo piu’ precisamente all’autore)…

    Ho filesystem ext3 con il supporto alle acl… rsync passa –acl –perm –owner etc.. ma non riesco a fare in modo che i backup di macchine remote ereditino gli stessi permessi dei files originali…..la macchina di backup ha un join in active directory come tutte le altre…..
    la versione di rsync e’ la 3.0 su macchina debian lenny…

    qualcuno ha fatto test su questo?

    grazie

  25. 25

    indy dice:

    Ciao!

    Complimenti per l’ottima guida.
    Io ho un piccolo problema con rsnapshot:
    se indico nel file di configurazione daily 6, weekly 16 lui esegue correttamente quelli giornalieri ma non quelli settimanali. Non è un problema di /etc/cron.d, ho fatto la prova commentando separatamente la linea relativa a daily sull’uno e sull’altro file.

    Qualcuno ne sa di più?

  26. 26

    marco dice:

    ciao
    nello script la variabile una_settimana non viene poi utilizzata…
    ciao
    marco

  27. 27

    geckjack dice:

    @ Sajmon75:

    Sarebbe inutile, il 90% degli utenti non sa nemmeno cos’ un backup finch non gli si rompe il disco. Per tutti gli altri non c’ bisogno di gui, bastano tar, rsync e compagnia bella.

  28. 28

    Maxiride dice:

    Ottima guida veramente solo non ho capito se rsync e rsnapshot vanno utilizzati insieme o se il secondo una versione pi avanzata del primo.

  29. 29

    ilgio dice:

    Ottimo!!
    per oltre a quelli voglio farlo giornaliero
    come faccio?

  30. 30

    ilgio dice:

    e proprio per rompere …
    e se voglio fare una copia su un FTP settimanalmente
    come fare?

  31. 31

    luigi dice:

    Ciao, innanzittutto grazie e complimenti per l’ottimo lavoro. Una domanda: perchè per avere i 6 bk degli ultimi sei mesi metti
    interval monthly 36
    e non
    interval monthly 6
    come indica questa guida del forum ubuntu:
    http://wiki.ubuntu-it.org/AmministrazioneSistema/BackupDelSistema/Rsnapshot

    e avendo io alcune dir sotto controllo di versione tramite bazaar come faccio a dirgli di escludere la cartella “.bzr” ogni volta che la incontra? basta un
    exclude ./.bzr

    Grazie

  32. 32

    luigi dice:

    Dimenticavo… ma alla fine questo backup che si differenzia dal semplice rsync per la possibilita di savare X versioni dei miei backup, non equivale a ciò che si ottiene con rdiff-backup. Te lo chiedo perchè non capisco se i due strumenti si integrano o se si sovrappongono. Grazie ancora.
    Ciao

  33. 33

    luigi dice:

    Scusa, sara l’ora tarda, ma più leggo e meno capisco…
    perchè se dici:

    3 * * * * root /usr/bin/nice /home/saverio/bin/rsnapshot_script

    poi continui con:

    “Diamo quindi un’occhiata al comando rsnapshot_weekly nella mia cartella /home/saverio/bin”

    Voglio dire lo script che lanci si chiama “rsnapshot_script” o “rsnapshot_weekly” ?

    Non ci sto capendo più nulla…

  34. 34

    rischiav dice:

    @ Saverio:
    Saverio ha scritto:

    Poi però bisogna che rsnapshot daily venga lanciato ogni giorno,
    rsnapshot weekly ogni settimana, rsnapshot monthly ogni mese.
    Non vorrei sbagliarmi, ma lo script dovrebbe funzionare cosi com’è, se non che bisogna che tu lanci rsnapshot daily ogni giorno, ad esempio mettendo un piccolissimo script che fa solo
    /usr/bin/nice /home/saverio/bin/rsnapshot daily
    in cron.daily.

    Ciao,
    prima di tutto compliemti per la guida!!!

    Vorrei provare a modificare lo script che hai proposto facendogli creare anche un file che memorizzi il giorno dell’ultimo backup giornaliero (e questo è facile) e che controllasse prima di fare il backup settimanale se è il caso di fare quello giornaliero.

    Volendo lasciare la struttura simile a quella del tuo script, credo che sia sufficiente usare una variabile dove memorizzare il ripo di backup da fare, poi salvare nella variable “weekly” se il backup settimanale non è stato fatto, dopo verificare se manca quello giornaliero ed eventualmente mettere “daily” nella variabile.

    In questo modo la prima volta che esegui lo script di ogni giorno viene fatto il backup giornaliero, poi la successiva il settimanale…

    Il mio problema è come estrarre la condizione da mettere nell if, potresti darmi una mano?

  35. 35

    Ciro dice:

    … si si, ok, non c’entra nulla con l’articolo (BELLISSIMO!!!) ma… cribio, mi consenta, su “qui e qua l’accento non va`”… e questo blog ne e’ pieno.

  36. 36

    Tiziano dice:

    Ciao Daniele, oramai da qualche mese sto cercando uno script che esegua dei backup programmati un po’ particolare e spero che tu possa darmi qualche dritta. Di preciso sto cercando un programma di backup che emuli il programma commerciale per windows Allwayssync in quanto vorrei mantenere tutte le revisioni dei file suddivise per data e ora. Mi spiego con un esempio

    CARTELLA ORIGINE

    –Cartella1

    –filea

    –fileb

    –filec

    –filed

    –Cartella 2

    –filex

    –filez

    eseguo lo script che si limiterà a copiare tutto il contenuto di “CARTELLA ORIGINE”

    CARTELLA BACKUP

    –Cartella1

    –filea

    –fileb
    –filec

    –filed

    –Cartella 2

    –filex

    –filez

    modifico il file b e il file z ed eseguo lo script che questa volta saverà in una cartella apposita i file b e z (mantenendo la struttura delle directory) e aggiornerà la cartella “CARTELLA ORIGINE” con le nuove versioni dei suddetti file

    CARTELLA BACKUP

    –CARTELLA PRINCIPALE

    –Cartella1

    –filea

    –fileb

    –filec

    –filed

    –Cartella 2

    –filex

    –filez

    –CARTELLA MODIFICHE

    –CARTELLA DATA-ORA1
    –Cartella1
    –fileb (versione precedente)

    –Cartella2
    –filez

    ora modifico il file a e b, elimino il file x ed eseguo nuovamente lo script che questa volta saverà in una cartella apposita i file a e b (versione 1), sposterà il file x nella cartella degli eliminati (mantenendo sempre la struttura delle directory) e aggiornerà la cartella “CARTELLA ORIGINE” con le nuove versioni dei suddetti file

    CARTELLA BACKUP

    –CARTELLA PRINCIPALE

    –Cartella1

    –filea (versione 1)
    –fileb (versione 2)
    –filec
    –filed

    –Cartella 2
    –filez

    –CARTELLA MODIFICHE

    –CARTELLA DATA-ORA1
    –Cartella1

    –fileb (versione 0)
    –Cartella2
    –filez

    –CARTELLA DATA-ORA2
    –Cartella1

    –filea (versione 0)
    –fileb (versione 1)
    –CARTELLA ELIMINAZIONI

    –CARTELLA DATA-ORA2
    –Cartella2
    –filex

    Spero di essermi spiegato.

    Sai se esiste qualche script che faccia al caso mio?

    Ti ringrazio anticipatamente
    Ciao
    Tiziano

  37. 37

    Aled72 dice:

    Complimenti per il bellissimo articolo, avrei solo una domanda…
    lo script mi ritorna il seguente errore:
    rsnapshot_weekly.sh: 31: 7: not found
    rsnapshot_weekly.sh: 31: 20120205: not found
    eppure tranne i percorsi nella mia home non o cambiato nulla, il file timestamp, backup.log e today sono a posto.
    qualche consiglio?

  38. 38

    jhampha dice:

    Ciao a tutti, non per essere pignolo ma il file di configurazione di rsnapshot è /rsnapshot.conf.
    Comunque sia molto ben fatto.

Spiacente, i commenti sono chiusi.