Backup automatico nei sistemi Gnu/Linux

Autore: Riccardo Grosso
Pubblicato il 12 aprile 2007

Post Correlati

  • Nessun post correlato

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.

Questo articolo è stato pubblicato giovedì, aprile 12th, 2007 ed inserito in Guide e How-to, Linux e Software Libero. You can follow any responses to this entry through the RSS 2.0 feed. Puoi lasciare un commento, o utilizzare il trackback da inserire nel tuo sito e nel tuo blog per citare questo post.

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

8 Responses to “Backup automatico nei sistemi Gnu/Linux”

  1. el_coda on aprile 13th, 2007 at 10:18

    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

  2. Riccardo Grosso on aprile 13th, 2007 at 18:59

    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

  3. Kilelader on aprile 30th, 2008 at 11:12

    Uno splendido articolo, molto utile e chiaro… Ti ringrazio!!!

  4. Kilelader on aprile 30th, 2008 at 12:00

    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

  5. Kilelader on aprile 30th, 2008 at 12:15

    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

  6. Riccardo Grosso on aprile 30th, 2008 at 13:07

    Esattamente, hai risolto bene. Bastava in ogni caso anche “date”.

    Ciao e grazie

  7. bLax on ottobre 15th, 2008 at 12:00

    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?

  8. Riccardo on ottobre 15th, 2008 at 16:54

    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

Leave a Reply

Feed RSS Blog Informatica Friuli Ci sono 1375 che leggono via Feed Reader


Iscriviti alla Newsletter


Creazione Siti e Servizi Web Friuli


Servizi Web in Friuli - Udine e Aquileia

Sei un' azienda, un libero professionista o un web designer del Friuli Venezia Giulia?
  • Ti serve, consulenza come azienda?
  • Vuoi proporci o cercare collaborazioni per la tua web agency?
  • Ti servono servizi web, un sito o un blog per la tua associazione?
Clicca qui per il modulo contatti

Servizi Web Open Source Aziende in Friuli Venezia Giulia - Udine Aquileia

Recensioni e Guide Utili

EBook 3 Consigli Su Come Personalizzare WordPress
EBook 3 Consigli Su Come Personalizzare WordPress Questo ebook è il primo pubblicato da Informatica Friuli dedicato alla personalizzazione di certi aspetti dei template per WordPress. Questo ebook non deve dare grosse aspettative ...

Continua a leggere...
Come Scegliere L’ Hosting Giusto Per Il Posizionamento
Come Scegliere L’ Hosting Giusto Per Il Posizionamento Non c'è hosting, spazio web dove hai caricato i file del tuo sito, che ti da la garanzia al 100% di posizionarti nella serp di Google al primo posto. [caption id="" ...

Continua a leggere...
NewsMastering con WordPress
NewsMastering con WordPress Prendo spunto da quanto si può leggere su MasterNewMedia per quanto riguarda il Newsmaster come la figura che filtra e fornisce ...

Continua a leggere...

Visitatori IF

Licenza IF

Tag

aquileia blog campi personalizzati come scrivere comunicati stampa comunicazione creazione sito custom fields editoria editori online facebook feed feedwordpress fidelizzare focus friuli hackcamp hosting hosting seo if linux mail marketing Marketing masternewmedia myspace nerd newsletter newsmaster Notizie IF plugin wordpress primi sui motori restyling sito robin good SEO servizi web sito nerd sitonerd social network template theme wordpress udine webdesign web design web service wordpress