Informazioni, tecnologia, libertà digitale… chiavi in mano

Backup automatico nei sistemi Gnu/Linux

systemfailure.jpg

Difficoltà: minima

Conoscenze richieste: utilizzo di un sistema operativo Gnu/Linux

Questa mini-guida vuole essere di aiuto a quanti, per mancanza di tempo o voglia, non riescono a gestire regolarmente i propri backup nei pc o nei server. Tralasciando le ovvie considerazioni sull’utilità di un backup aggiornato, andremo quindi a distinguerne di due tipi: quello incrementale e quello non incrementale.

Il backup incrementale

Questo tipo di salvataggio di dati consente all’utente di avere una directory sincronizzata ad intervalli predefiniti con la directory da salvare. Ad ogni intervallo, che vedremo poi come definire,il sistema copierà il contenuto della directory in un altra precedentemente creata, magari su una partizione di backup apposita o su un disco esterno. Il comando per effettuare questo processo è il seguente:

rsync -a -v --delete /home /backup/giornaliero

come avrete già capito e un banale comando unix e, come in tutto l’articolo, utilizziamo unicamente bash scripting per i nostri backup. Questo comando non fa altro che sicronizzare il contenuto della directory /home con il contenuto della directory /backup/giornaliero. Analizzandolo nel dettaglio troviamo all’inizio il cmando rsync, che si occupa della sinconizzazione, con le opzioni di ricorsività (-a), quelle di verbosità (-v, stampa a schermo ciò che accade) e l’eliminazione dei contenuti non più presenti nella directory home anche nella stessa (–delete). Va notato che l’opzione per stampare a schermo può essere omessa, questo piccolo comando sarà impostato per essere eseguito in background a cadenze regolari.

Il backup non incrementale

I problemi sorgono quando dobbiamo avere un backup giornaliero datato e non modificabile, magari compresso per occupare poco spazio. In questo caso dobbiamo creare uno script leggermente più complesso, nel quale definire alcuni parametri. Vediamo come:

apriamo il nostro editor di testo preferito e iniziamo a definire che stiamo scrivendo uno script per la shell:

#!/bin/bash

settiamo poi le directory da salvare, il formato della data desiderato (un man date vi può essere d’aiuto) e la directory di destinazione, nel nostro caso quella di backup. Si noti bene che nel settare le directory da salvare ho scritto più path, la directory home, quella /var e quella di configurazione del sistema, /etc.

BACKUP_DIRS="/home /etc /var"
BACKUP_FILENAME=`date +%A-%d-%B-%Y`
BACKUP_DEST_DIR="/backup"

a questo punto definiamo in che modo vogliamo comprimere la nostra directory salvata (anche in questo caso un man tar vi può far cambiare idea sul formato di compressione):

tar cvzf $BACKUP_DEST_DIR/$BACKUP_FILENAME.tgz $BACKUP_DIRS

salviamo infine il nostro file col nome che vogliamo e salviamolo nella directory /bin, in quanto presupponiamo che questo salvataggio vada eseguito da superutente. Diamogli anche i permessi di eseguibilità con

chmod +x /bin/nome_dello_script

non resta che provarlo per testarne il funzionamento e vedere il risultato.

Automatizzare i processi

Non mi dilungherò a spiegare cosa sono i crontab e la loro configurazione, basti sapere che per automatizzare l’esecuzione di uno dei due metodi di backup sopradescritti è necessario, previo login come utente root, editare il file /etc/crontab ed aggiungere quanto segue:

# 0 23 * * * root rsync -a --delete /home /backup/giornaliero

per il primo tipo di backup, oppure

# 0 23 * * * root /bin/nome_dello_script

per il secondo tipo.

Riavviamo il programma Cron, il metodo varia a seconda della distribuzione, e ogni sera alle 23 il sistema metterà in salvo i nostri documenti più cari, senza nessuno sforzo.

Ultimi 5 articoli di Riccardo Grosso

Viewing 8 Comments

    • ^
    • v
    Bello!
    Soprattutto l'rsync.
    E' possibile implementare un rsync continuo in tempo reale?
    E se si, funziona in modo sincrono o asincrono?

    Mi spiego, supponiamo che il device sorgente sia qualcosa che è perennemente sotto stress a livello di filesystem per cui sarebbe bello avere sempre una sua immagine continuamente sincronizzata con un ritardo di qualche minuto... è possibile farlo con rsync?

    Se così fosse, rync lavora in modo sincrono o asincrono? Ovvero ad ogni modifica sulla sorgente fa immediatamente fare una modifica nella destinazione e, magari, ne verifica il successo oppure in maniera asincrona nel senso che "replica appena può".

    Nel primo caso sarebbe interessante capire quanto questo influisce sulle performance della sorgente poichè in molti casi questa non può permettersi di aspettare che si concludano altri processi che trasferiscono informazioni via rete....

    Grazie
    Ivan
    • ^
    • v
    Rsync in questo caso viene avviato come comando, a cadenze regolari.

    Questi intervalli possono essere modificati a piacere (man date).
    Rsync scrive unicamente i dati modificati nel path di destinazione, non tutti i dati nuovamente, per cui il carico di lavoro è minimo (se non ti chiami Google). In questo senso rsync lavora in modo asincrono.

    Se desideriamo modifiche sincrone la soluzione migliore è un sistema RAID.

    In ogni caso c'è la possibilità di avviare rsync come server su una macchina separata _che trasferiscono informazioni via rete_, come giustamente facevi notare, con l'opzione --daemon ma è sempre il client che, ad intervalli prestabiliti, scrive sul server.

    Prossimamente scriverò una piccola guida su come costruire un server di backup e configurare correttamente i client, *nix o Windows che siano.

    Saluti,
    Riccardo Grosso
    • ^
    • v
    Uno splendido articolo, molto utile e chiaro... Ti ringrazio!!!
    • ^
    • v
    Ho un problema con questa stringa:

    BACKUP_FILENAME=`date +%A-%d-%B-%Y`

    sembra che non converta le variabili ma mantenga la versione letterale nel nome del tgz. Puoi indicarmi la stringa corretta?

    grazie
    • ^
    • v
    Risolto, credo che il problema fosse che andava specificato il percorso di date con

    `/bin/date +%A-%d-%B-%Y`

    PS: sto utilizzando Ubuntu Gutsy
    • ^
    • v
    Esattamente, hai risolto bene. Bastava in ogni caso anche "date".

    Ciao e grazie
    • ^
    • v
    grazie, molto utile la guida!! :)

    io volevo sapere se è possibile creare uno script di backup incrementale tramite r-sync ad ogni plug di un specifico hd....mi spiego, vorrei arrivare ad avere un hd usb, dove copia la mia home ogni volta che lo collego al computer, sai se è possibile?
    • ^
    • v
    Ciao. A dire il vero la guida sopra riportata, oltre che ad utilizzare il linguaggio di scripting della shell bash, presente di default sulla stragrande maggioranza delle distribuzioni Gnu/Linux e dei sistemi *NIX like, poggia pesantemente sulla funzionalità di scheduling dei programmi e dei comandi, implementata dal demone crond.
    Detti programmi, o script, o comandi appunto, vengono mandati in esecuzione PERIODICAMENTE, e non in coincidenza al verificarsi di un evento.

    Precisato ciò, una volta preparato lo script di backup ( ma visto che mi sembra tu sia su un sistema desktop, perchè non utilizzare Grsync, la comoda interfaccia grafica di Rsync? ), dovremmo creare un piccolo programma che interagisca con i volumi e il loro mount ( ma non sono formato a sufficenza su questo argomento ) e trovare il modo di caricare uno script ad un determinato evento.

    Altre soluzioni potrebbero essere quella di mettere il nostro script in crontab e avviarlo una volta al minuto, ma non è consona e non sò che tipo di problemi possa comportare a livello di carico. Oppure potremmo metterlo tra gli script di chiusura o di apertura del sistema o dell'interfaccia grafica. Ma si suppone sempre che il disco sia collegato, altrimenti nulla.

    Se hai dubbi posta pure

    ciao e grazie,

    Riccardo Grosso
 

Trackbacks

(Trackback URL)

close Reblog this comment
blog comments powered by Disqus

Newsletter IF

Mail:

Powered by FeedBurner

Leggimi e collabora con IF

LEGGIMI : La linea editoriale di IF - Informatica Friuli

Hosting SEO & Servizi Web

Sito NERD è partner tecnologico di Informatica Friuli. Se necessiti di spazio o servizi web rivolgiti a Sito NERD.

Servizio Visibilia' IF

IF - Informatica Friuli ti mette a disposizione una piattaforma in cui puoi segnalare i tuoi comunicati stampa per prodotti o servizi che offri e a cui vuoi dare visibilita'.

Partner Comunicati Stampa IF

Comunicati Stampa - Comunicativamente

Partner - Comunicativamente

Se vuoi rendere il tuo comunicato più visibile ti consigliamo di utilizzare anche altri servizi simili tra i quali ti consigliamo il servizio Comunicati Stampa di Comunicativamente

Visitatori IF