Maurizio Paglia
Script bash

lftp

Hai la passione delle fotografie

e ne hai salvate a centinaia (se non a migliaia) sul tuo disco rigido.

Fai dei backup regolari?

Sei sicuro di essere al riparo da eventuali problemi del disco o, molto banalmente, da una cancellazione involontaria?

Dovresti salvare con una certa regolarità tutti i tuoi files più o meno importanti (non solo le tue fotografie) ma mi accorgo sempre più che sono veramente poche le persone che lo fanno.

Perchè?

Devo ammettere che anche a me non è mai successo nulla… non mi si è mai rotto un Harddisk… non ho mai preso un virus distruttivo… qualche volta ho cancellato un file per errore ma quasi sempre sono riuscito a recuperarlo.

Il backup e gli estintori

All’inizio della mia carriera lavorativa vendevo valvole per estintori.

Per questo motivo ero (ovviamente) in contatto con decine e decine di costruttori di estintori.

Quelli seri producevano degli apparati piuttosto cari, quelli meno seri degli apparati più economici e gli altri… sì, c’erano anche gli altri…

Se ci pensate bene, però, l’estintore può rimanere appeso al muro per una vita (fate i controlli regolarmente!) e quindi potrebbe sembrare uno spreco di denaro ma – in caso di bisogno – potrebbe essere la linea di demarcazione tra un problema e una tragedia.

Quindi, avere un estintore carico e controllato a portata di mano è una bella sicurezza!

Il nostro estintore

Noi non andremo ad indagare quale software di backup utilizzare e quale metodo seguire. Ognuno di noi è libero.

Voglio darvi uno spunto diverso. Andremo a creare un archivio di immagini parallelo a quello che utilizziamo tutti i giorni.

Perchè questo?

Perchè potete crearlo su un disco esterno e rendere fruibile le immagini ad altri in casa vostra anche quando il vostro PC è spento oppure perchè potreste voler condividere questo disco esterno via ftp o attraverso un media server.

Inoltre la clonazione del vostro archivio di immagini può essere tranquillamente sfogliata in caso di necessità (ad es. file cancellato o corrotto) in modo molto semplice senza dover passare attraverso l’interfaccia del programma di backup. L’unico neo sarà i fatto che i vostri files occuperanno molto più spazio perchè non saranno compressi come in un file di backup tradizionale.

Iniziamo!

Prima di tutto dobbiamo installare un piccolo software che useremo a questo scopo. Si chiama lftp ed è un sistema a linea di comando molto sofisticato per trasferire dei files attraverso la rete.

Utilizzate il tool della vostra distribuzione oppure la linea di comando. Come preferite.

Ora andiamo a comporre il comando vero e proprio che, per comodità, suddivideremo in due files separati.

Creiamo un nuovo file di testo che conterrà i comandi veri e propri.

lftp funziona in modo interattivo ma noi lo vogliamo inserire in uno script per la shell da lanciare a nostro piacimento. Quindi diremo allo script di andare a leggere sequenzialmente i comandi all’interno di un file. IN questo modo sarà anche più semplice fare manutenzione (ad es. aggiungere o togliere una cartella) perchè non dovremo andare a toccare il nostro programma.

Si presume che abbiate un disco condiviso via ftp con un utente e password già creati e funzionanti!

Lo script

All’interno del file appena generato (chiamiamolo <comandi_lftp>) andiamo ad inserire questa sequenza:

open -u nome_utente,password indirizzo_ip_disco

Quindi se l’utente si chiama Pippo e la password è Pluto e il nostro disco è stato condiviso sulla rete con l’indirizzo IP 192.168.12.54 il comando sarà

open -u Pippo,Pluto 192.168.12.54

Dal momento che il file comandi_lftp contiene in chiaro il nome dell’utente e la sua password non vi devo dire che dovrà risiedere nella vostra cartella personale ed avere diritti di lettura e di scrittura che lo mettano al riparo dagli estranei, vero?!

Con questo comando indichiamo a lftp di aprire una connessione con il nostro disco rigido condiviso utilizzando un particolare utente.

Fatto questo dovremo solo indicare, in sequenza, i comandi per replicare l’archivio di files in questo modo:

mirror -Rev cartella_origine cartella destinazione

Anche in questo caso è tutto abbastanza chiaro ma analizziamo il comando un pezzo alla volta:

  • mirror – indica a lftp di fare un mirror ovvero una copia tale-quale della cartella di origine
  • -R – indica a lftp di analizzare la cartella di origine includendo le sotto-cartelle
  • -e – obbliga lftp a CANCELLARE nella cartella di destinazione i files che non trova nella cartella di origine. Io la utilizzo perchè voglio che le mie cartelle siano esattamente uguali: se decido di cancellare un file voglio che lo stesso file venga cancellato anche dall’archivio.
  • -v – stampa sullo schermo l’output del comando perciò vi dirà esattamente che cosa sta facendo. Utile sia se si vuole lanciare il comando interattivamente dalla shell oppure se si vuole reindirizzare l’output su di un file di log

Il vostro file comandi_lftp potrebbe contenere diverse linee come quella qui sopra se avete diverse cartelle da sincronizzare. Ad esempio:

mirror -Rev /immagini/vacanze /disco1/vacanzemirror -Rev /documenti/casa /disco1/documentimirror -Rev /video /disco1/video

al termine di tutte le istruzioni di sincronizzazione dovrete indicare a lftp che l’operazione è terminata e che si deve disconnettere dal disco remoto con un semplice comando

exit

Questo è tutto!

Il comando da lanciare quindi sarà

lftp -f comandi_lftp

Infatti l’opzione -f indica a lftp di leggere i comandi da un file (f = file) e non di aspettarli dall’utente.

Attenzione

Ancora una volta vi invito a prestare attenzione all’opzione -e ovvero quella che CANCELLA i files non presenti nella cartella di origine in quella di destinazione.

Fate delle prove prima di usare il comando per sincronizzare i vostri archivi perchè potreste pagare molto caro un eventuale errore!

Pensate, ad esempio, se doveste confondere la cartella di origine con quella di destinazione e invertirle. Perdereste tutto!!

Vuoi lasciare un commento? Ne sarei felice!

%d blogger hanno fatto clic su Mi Piace per questo: