Differences between revisions 1 and 2
Revision 1 as of 2013-01-30 14:41:08
Size: 7957
Editor: Kurgan
Comment:
Revision 2 as of 2018-05-30 09:05:53
Size: 8012
Editor: Kurgan
Comment:
Deletions are marked like this. Additions are marked like this.
Line 20: Line 20:
Basandosi sul file di configurazione originale di Rsnapshot 1.3.1 (Debian Squeeze) le modifiche sono: Basandosi sul file di configurazione originale di Rsnapshot 1.3.1 le modifiche sono:
Line 28: Line 28:
 * Scommentare la riga {{{link_dest}}} e impostare il parametro a "1" anziche` "0"
Line 43: Line 44:
interval hourly 6
interval daily 7
interval weekly 4
retain hourly 6
retain daily 7
retain weekly 4
Line 56: Line 57:
interval daily 7
interval weekly 4
interval monthly 3
retain daily 7
retain weekly 4
retain monthly 3

Rsnapshot

Rsnapshot e` uno script perl che si appoggia a Rsync per fare backup (remoti o locali) con la possibilita` di storicizzare le vecchie versioni dei files. In un certo senso e` simile a backuppc, ma ci sono differenze che possono fare preferire l'uno o l'altro a seconda delle situazioni. Rsnapshot e` molto semplice, usa un file di configurazione e la command line, non ha alcuna interfaccia per il restore dei files, e a differenza di backuppc non effettua mai backup completi, ma sempre e solo le differenze (tranne alla prima esecuzione, ovviamente).

Rsnapshot e` forse la migliore soluzione per gestire backup remoti attraverso una linea lenta, fermo restando il vincolo che Rsnapshot deve girare sulla macchina che contiene i backup, e non su quella di cui vogliamo fare il backup (a meno che il backup non sia locale sulla stessa macchina). Rsnapshot consente anche in teoria di usare per il backup dei dischi USB o dischi che non siano permanentemente connessi alla macchina (a differenza di backuppc).

Installazione

Su Debian e` sufficiente installare il pacchetto rsnapshot sulla macchina che conterra` il backup e il pacchetto rsync sulla macchina della quale vogliamo fare il backup.

Configurazione

Il file di configurazione e` /etc/rsnapshot.conf, e puo` contenere la definizione dei backup di piu` di un host remoto o locale. Volendo lanciare rsnapshot con diverse configurazioni e` possibile farlo da command line.

Importante: il file di configurazione di Rsnapshot non puo` contenere spazi per separare i vari comandi, ma solo TAB. Questo puo` crearvi non pochi problemi quando lo editate.

Qui di seguito elenco le modifiche fatte per Linux (Rsnapshot e` multipiattaforma) con impostato il comando per dire a Rsync di non seguire i mountpoint. Consiglio di leggere il man e di tenere il file di configurazione originale da parte perche` ci sono molte opzioni che magari vale la pena di studiare meglio per adattare il programma ai vostri scopi.

Basandosi sul file di configurazione originale di Rsnapshot 1.3.1 le modifiche sono:

  • Modificare eventualmente rsnapshot_root

  • Scommentare la riga cmd_cp

  • Scommentare la riga cmd_ssh

  • Scommentare la riga cmd_du

  • Scommentare la riga cmd_rsnapshot_diff e modificare il path a /usr/bin/rsnapshot-diff

  • Scommentare la riga logfile

  • Scommentare la riga one_fs e impostare il parametro a "1" anziche` "0"

  • Scommentare la riga link_dest e impostare il parametro a "1" anziche` "0"

Fatto questo, occorre configurare i backup che vogliamo eseguire. Ci sono esempi sempre nel file di configurazione originale, per backup locali o remoti. Eventualmente commentate quegli esempi locali che sono scommentati, e poi create i vostri backup. Io uso rsync su ssh, un esempio potrebbe essere questo:

# centralino
backup        root@192.168.0.252:/    centralino/

Questa riga esegue il backup dell'intero file system della macchina 192.168.0.252 su una directory che si chiama "centralino" sotto allo "rsnasphot_root" (sotto la directory che indica il numero di versione).

Configurazione degli intervalli di tempo

Rsnapshot con la configurazione di default suppone che noi vogliamo fare piu` di una copia al giorno (diciamo una ogni tot ore, dove "tot" puo` essere anche un'ora sola) e quindi imposta gli intervalli in modo che siano divisi in "orari" "giornalieri" e "settimanali", cosi`:

retain        hourly  6
retain        daily   7
retain        weekly  4

Occorre capire bene come funziona questo meccanismo, perche` non e` ovvio.

Innanzitutto i nomi "orario" "giornaliero" eccetera sono sono parole, e non implicano che rsnapshot tratti effettivamente i dati li` dentro tenendo conto dei giorni, delle settimane, delle ore, eccetera. Semplicemente il primo intervallo specificato in ordine di apparizione (il primo in alto) e` quello "di base", e gli altri sono di fatto sottomultipli di quello di base.

La configurazione di esempio indicata qui sopra prevede che cron lanci un backup ogni 4 ore (ci stanno SEI backup in un giorno, quindi "hourly 6") e poi una "migrazione verso il giornaliero" una volta al giorno (7 giorni in una settimana), e una "migrazione verso il settimanale" una volta a settimana. La scelta di tenere 4 settimanali potrebbe essere giustificata dal voler mettere dopo un mensile (4 settimane al mese). Non mettendolo, dopo 4 settimane i vecchi dati saranno cancellati. Volendo, potremmo tenere i dati per 10 settimane o per il numero di settimane che vogliamo noi.

Volendo fare una sola copia al giorno (quindi eliminando totalmente il concetto di "hourly" potremmo per dire impostare una cosa di questo tipo:

retain        daily   7
retain        weekly  4
retain        monthly 3

In questo caso l'intervallo orario sparisce del tutto, e noi lanceremo un backup al giorno, poi una "migrazione verso la settimana" ogni settimana, e poi una "migrazione verso il mese" una volta al mese. Teniamo 3 mesi di vecchi dati e poi cancelliamo.

La configurazione che si fa qui va poi correttamente sincronizzata con quella che si fa in cron per il lancio dei backup e delle "migrazioni dei dati" verso i vari intervalli piu` lunghi.

Configurazione di ssh

Volendo usare rsync via ssh occorre, a meno che non vogliamo inserire le password a mano, configurare ssh per fare login con le chiavi RSA. Per farlo occorre creare una coppia di chiavi pubblica e privata sulla macchina sulla quale gira rsnapshot per l'utente che fa girare rsnapshot (nel mio caso, root). Quindi dalla shell di root lancero` ssh-keygen e poi creero` una chiave privata senza alcuna passphrase. Fatto questo, copiero` la chiave pubblica dell'utente root dal file /root/.ssh/id_rsa.pub nel file root/.ssh/authorized_keys della macchina (o delle macchine) che voglio backuppare.

Fatto questo, dalla macchina su cui gira rsnapshot provero` a fare ssh alle macchine che voglio backuppare. Se e` la prima volta che lo faccio, ssh mi chiedera` se voglio accettare la chiave dell'host remoto, gli devo dire di si`. La seconda volta dovrei riuscire a entrare in ssh sulla macchina remota senza alcuna richiesta. Ora ssh funzionera` anche per rsnapshot.

Esecuzione di rsnapshot

Lanciandolo a mano, e` sufficiente da root eseguire il comando rsnapshot hourly oppure rsnapshot daily a seconda di qual'e` l'intervallo di backup piu` breve che abbiamo definito in configurazione per eseguire una copia. Attenzione, perche` la prima copia puo` richiedere ore.

Esecuzione programmata in cron

Installando Rsnapshot dal pacchetto Debian viene creato un file /etc/cron.d/rsnapshot che contiene (commentato) un esempio di esecuzione in cron. L'esempio e` valido per la configurazione degli intervalli che viene proposta di default (backup ogni 4 ore), posto che non si scommenti la riga "monthly".

Per usare una configurazione con un backup giornaliero e conservazione mensile il cron andrebbe modificato come segue:

30 3          * * *           root    /usr/bin/rsnapshot daily
0  3          * * 1           root    /usr/bin/rsnapshot weekly
30 2          1 * *           root    /usr/bin/rsnapshot monthly

Notare che le righe che eseguono la "migrazione" delle copie vecchie verso l'intervallo di tempo maggiore (mese, settimana) sono eseguite PRIMA di quella che esegue il backup (o la migrazione verso l'intervallo di tempo minore). Questo perche` io voglio salvare l'ultima settimana nel primo mese prima di salvare l'ultimo giorno nella prima settimana, e questo prima di fare il backup di oggi.

A mio avviso il tempo di 30 minuti fra l'una operazione e l'altra e` un poco ottimistico, io lo alzerei. Chiaramente il tempo di esecuzione delle varie migrazioni dipende dalla quantita` dei dati e dalla velocita` della macchina.

LinuxDebian/Rsnapshot (last edited 2024-02-02 13:30:35 by Kurgan)