un backup “differenziale” facile, e per tutti

Qualche settimana fà ho scritto un piccolo articolo su “un backup” che di fatto NON lo era!

Si trattava in verità di una “sincronizzazione” di file (e cartelle), mediante l’utilizzo di un ottimo programma opensource e multipiattaforma: FreeFileSync.

Io utilizzo quotidianamente (e a volte con frequenze anche maggiori!) questo software, sia in ambito linux che in ambito windows.

Però tale software NON esegue un “backup”, ma solo una sincronizzazione tra cartelle.

In sostanza FreeFileSync si occupa di mantenere sincronizzata una “destinazione” con la cartella “origine”. Dal lato pratico esegue le copie e le eventuali cancellazioni (e rinomine di file e cartelle) tra un origine e una destinazione. Eseguita una sincronizzazione vi troverete due copie identiche dello stesso materiale contenuto nei due percorsi (origine e destinazione).

E’ una procedura che io trovo estremamente utile: mi capita di lavorare fuori ufficio (a casa o da altri colleghi) con un portatile e ho sempre la necessità di portare con me una copia aggiornata del mio archivio di lavoro,

Però non è un “backup”!

Il backup ha delle caratteristiche specifiche.

in Wikipedia si può leggere:

Con backup[1], nella sicurezza informatica, si indica il processo atto a ottenere ridondanza delle informazioni ovvero una o più copie di riserva dei dati, da utilizzare in caso di eventi malevoli accidentali o intenzionali[2]. Si tratta dunque di un procedimento di sicurezza delle informazioni, in particolare di disaster recovery.

fonte: Wikipedia

Vorrei porre l’attenzione sul concetto di “eventi malevoli accidentali o intenzionali”.

Tralasciando l’intervento di qualche malitenzionato informatico, potrebbe accadere che si cancelli accidentalmente un file… o se ne sovrascrive il contenuto in maniera non del tutto volontaria.

Ecco, in questi casi fare una copia di sicurezza mediante una semplice “sincronia di file” non è sufficiente, anzi! Se eseguiamo una sincronizzazione dopo aver cancellato o rovinato qualche file, ci ritroveremmo ad aver ripetuto tale operazione anche sulla copia di sicurezza. Risultato: dati irrecuperabili!

E qui si differenzia il concetto di backup dalla semplice copia di sicurezza.

Parafrasando (liberamente) Sergio Leone:

Il mondo si divide in due categorie: chi ha già perso dati e chi li perderà!

citazione originale da “Il buono il brutto e il cattivo”: il mondo si divide in due categorie: chi ha la pistola carica, e chi scava. Tu scavi

l’importanza di un vero backup

Il backup è una “strategia”. E’ un insieme di comportamenti e di tecnologie, organizzati in una pianificazione che ti consente di mettere (ragionevolmente) al sicuro i tuoi dati in caso di danneggiamenti, cancellazioni involontarie e operazioni maldestre di sincronia file (a me è capitato) !

Alcune caratteristiche per definire il backup:

  • deve contenere tutte le cose di cui ci interessa fare la copia di sicurezza
  • deve poter essere di semplice esecuzione (cliccare semplicemente su un’icona o addirittura automatizzat)
  • deve essere ripristinabile (cosa ce ne facciamo di una copia illegibile?)
  • deve essere indipendente (memorizziamolo su un disco diverso dal disco sul quale lavoriamo)
  • se possibile dovrebbe non occupare troppo spazio (nessuno compera un nuovo disco OGNI backup).

Distinguiamo subito alcune tipologie di backup.

backup completo: è una copia di sicurezza che contiene la copia di TUTTI i dati che ci interessano

slide da serata al LugVI

backup incrementale: è un backup successivo al backup completo, eseguito a intervalli regolari (lunedì, martedì, mercoledì…) che contiene SOLO le differenze con l’iniziale backup completo

slide da serata al LugVI

backup differenziale: è un backup successivo al backup completo, eseguito a intervalli regolari (lunedì, martedì, mercoledì…) che contiene SOLO le differenze con il precedente stadio di backup (il backup di mercoledì contiene solo le differenze con martedì, e così via).

slide da serata al LugVI

La motivazione principale per NON fare ogni volta un backup completo, sta nel tempo impiegato per farlo e nello spazio occupato da una copia integrale in OGNI momento di backup.

Da qui la necessità di ridurre la dimensione degli “stadi” di backup.

Ipotizzando di eseguire un backup ogni giorno, alla fine del lavoro, sarà necessario predisporre un contenitore per questo backup (un hard disk) nel quale mantenere le copie di sicurezza.

Prima di tutto iniziamo a fare la PRIMA copia di sicurezza (e qui è molto semplice): copiamo il contenuto delle cartelle che ci interessano nel disco di backup.

Il giorno dopo dobbiamo, in qualche maniera, individuare le differenze con il giorno precedente, comprimerle/copiarle nella destinazione di backup individuando il nome divero (esempio “backup differenziale martedì”).

Farlo “a mano” è impensabile… un’operazione che potenzialmente ci porta via tantissimo tempo (in particolare individuare e selezionare le differenze).

Dobbiamo individuare un sistema per automatizzare la proceduta.

Io sono un utente linux, ma trovo interessante e preferibile trovare soluzioni “multipiattaforma”, sempre opensource, per poter svolgere questo genere di operazioni, in modo da dare la possibilità a più utenti possibile di mettere in sicurezza i dati.

Ci sono molte soluzioni software in grado di eseguire questo genere di operazioni, la maggior parte commerciali, e a pagamento… ma c’è sempre la possibilità di utilizzare degli strumenti opensource, e che magari abbiamo già, per fare tutto questo.

La soluzione che propongo qui, a tutti gli utenti windows (ma anche linux, ovviamente… anche se i “pinguini” hanno tantissime altre possibilità a comoda disposizione), è l’utilizzo di un software che, probabilmente, avete già installato nei vostri computer.

Si chiama 7-zip: serve per comprimere file e cartelle, è opensource, multipiattaforma e sta pian piano soppiantando software ben più famosi come WinZIP e WinRAR.

Avete presente i file “zippati” che spesso ci vengono inviati per email? sono sicuro di si. 7-zip è un gran bel software.

Io sono un utente linux e spesso mi capita di utilizzare la “riga di comando”… non sono un esperto o un fanatico del terminale (il software che ti permette di usare la riga di comando), ma per me è abbastanza frequente, tutto sommato.

Con il terminale è possibile realizzare degli script: una sorta di comandi che puoi far eseguire al coputer per fare “cose”, come ad esempio fare un backup.

L’utente windows, in genere, non affronta mai il terminale (in ambiente windows si chiama “prompt del dos”), ma spesso i software, anche con il sistema di casa Microsoft, consentono un uso “da terminale”.

7-zip è uno di questi software.

la scheramata di 7zip in windows

Il programma ha un eseguibile che è possibile avviare anche da “prompt del dos”. Bisogna individuare dove si trova questo eseguibile.

In windows è possibile aprire il percorso del file eseguibile in una finestra del file manager, basta fare tasto destro sull’icona del programma e cliccare su “Apri percorso file”

si apre il file manager nella posizione dell’eseguibile:

Qui riesco a individuare percorso completo e nome file dell’eseguibile, nel mio caso:

C:\Program Files\7-Zip\7zG.exe

Ora possiamo eseguire il software SENZA interfaccia grafica. Basterà aprire un “prompt del dos” e digitare la riga qui sopra; però ATTENZIONE… dovete racchiudere la riga in un paio di virgolette (“), dato che il percorso contiene nomi di file e/o cartelle contenenti spazi, altrimenti il sistema non riconosce la sintassi.

(aprire un prompt dei comandi è facile, ve lo lascio fare senza istruzioni, 🙂 )

finestra di “errore”

come potete vedere il prompt dei comandi restituisce una finestra nell’interfaccia grafica che dice di “specificare il comando”.

E’ normale: avete lanciato un software senza interfaccia grafica, senza opzioni e senza argomenti e il sistema non sa proprio cosa farne.

Usare un software SENZA interfaccia grafica è un pò “complicato”. Si tratta di passare al software una serie di opzioni e argomenti per fargli fare quello che ci serve.

In genere si racchiude tutto all’interno di uno “script” eseguibile.

La forma più semplice e che forse conoscete già un un file *.bat

Un file *.bat è un file di testo contenente delle istruzioni, marcato dal sistema operativo come un file eseguibile, che può quindi essere avviato (ci fate un doppio clic sopra).

Allegato a questo articolo troverete 2 file *.bat, uno per il backup completo, e uno per il bacup differenziale: DOVETE necessariamente aprirli con un editor di testi (notepad, per esempio) e modificarli, in modo da personalizzare i percorsi delle cartelle ORIGINE e DESTINAZIONE e dei nomi file di backup.

E’ moto semplice, non preoccupatevi!

Un passo indietro.


reperire le informazioni

non è un segreto, e nemmeno una cosa di cui vergognarsi, ma “cercare in internet” è spesso un punto di partenza notevolissimo.

In rete ci sono veramente tantissime informazioni, ma è possibile reperire informazioni anche dagli “help” dei software installati nei nostri pc.

Per 7zip, l’help è estremamente “completo”, e vale la pena di consultaro.

Raggiungerlo è facilissimo:

vi apparirà la guida in una nuova finestra

Nella guida troverete un sacco di informazioni, in rete anche di più, con esempi e guide e tutorial.

Vi risparmio un sacco di ricerca e vi faccio vedere lo script per fare uk backup completo (in un unico file *.7z):

"c:\Program Files\7-Zip\7zG.exe" a "D:\PERCORSO DELLA POSIZIONE DOVE SALVARE IL BACKUP\BACKUP.7z" "C:\PERCORSO DELLA CARTELLA DI CUI FARE BACKUP"

naturalmente dovrete personalizzare lo script (basta l’editor di testo) con la posizione corretta nel VOSTRO sistema dell’eseguibile di 7zip, con il percorso e il nome di file di backup e, naturalmente, con il percorso completo della cartella di cui fare il backup.

E’ solo una piccola riga di codice!

fate caso alla “a” tra l’eseguibile e il percorso della posizione di file di bacup.

Quella “a” è l’opzione che serve per generare l’archivio (7z)

Ora lo script per la generazione del backup differenziale (contenente solamente le differenze tra il backup completo, e i dati al momento di esecuzione del backup differenziale (è un pò più complesso):

set momento=%date:~-4%%date:~3,2%%date:~0,2%-%time:~0,2%%time:~3,2%%time:~6,2%


"c:\Program Files\7-Zip\7zG.exe" u "D:\PERCORSO DELLA POSIZIONE DOVE SLAVARE IL BACKUP\BACKUP.7z"  "C:\PERCORSO DELLA CARTELLA DI CUI FARE BACKUP"  -ms=off -mx=9 -t7z -u- -up0q3r2x2y2z0w2!"D:\PERCORSO DELLA POSIZIONE DOVE SALVARE IL BACKUP\BACKUP_%momento%.7z"

la prima riga serve a impostare una variabile “momento” che servirà per dare un nome al backup differenziale, aggiungendo la data e ora alla fine del nome file di backup differenziale.

anche qui è NECESSARIO che prendiate l’editor di testi e personalizziate la riga di comando con i percorsi e nomi file corretti.

lo script di backup differenziale, in sostanza, fa in modo di individuare le differenze tra backup e stato attuale (il momento di lancio del file *.bat) e, individuati i file aggiornati, aggiunti, cancellati o comunque diversi, provvede a racchiuderli in un NUOVO file contenente solamente le differenze con il file D:\PERCORSO DELLA POSIZIONE DOVE SLAVARE IL BACKUP\BACKUP.7z, nominando il nuovo file come “differenziale” aggiungendo la data e l’ora del momento di esecuzione nel formato YYYYMMGGHHMMSS, così vi resta anche in ordine “alfabetico”.


considerazioni finali

Tenete presente che questo è solamente un punto di partenza: potente personalizzare in molti modi gli script, ad esempio indicando una serie di cartelle e/o file di cui fare backup, anzichè solamente 1 cartella (per questo dovete usare dei file di testo contenenti i percorsi assoluti di queste cartelle e usarli come argomenti, consigliata la lettura di specifiche guide in rete), oppure spezzare il file di backup in più file di dimensioni più piccole (dei volumi). Veramente tante possibilità!

Spero di aver “acceso” la vostra curiosità su questo tipo di operazioni, e sull’uso un pò più cosciente degli strumenti che abbiamo a disposizione (meglio se opensource!), un pretesto anche, per mostrare come un certo tipo di approccio (abbastanza frequente nel mondo linux) possa essere utile anche fuori dal mondo di linux e degli “smanettoni”.

Sarei veramente molto felice di avere il vostro parere, di ricevere i vostri consigli, le critiche e le integrazioni.

Non ho alcuna pretesa di insegnare nulla a nessuno, condivido volentieri quello che scopro e che uso nella mia attività.

Vi ringrazio per essere giunti fino alla fine di questo articolo.

a presto,

CIAO!

Qui sotto trovere i due file (backup.bat e differenziale.bat) pronti da scaricare (sono stati compressi in un file zip).


un backup “differenziale” facile, e per tutti
Tag: