Backup “ghost-like” in una riga con Linux



Avete presente il famoso programma Ghost che permette di fare il backup del vostro disco fisso o di una partizione? Spesso può essere utile, per esempio nel caso in cui si voglia “congelare” lo stato di un’installazione stabile del sistema operativo (tipicamente quando si sono dedicati parecchi giorni al fine-tuning dello stesso, per esempio installando e configurando i driver di tutte le periferiche).
Avete bisogno di una soluzione gratuita, che non richiede particolari installazioni, da usare subito con strumenti standard e sempre pronti a disposizione e, soprattutto, basata su Linux? Continuate a leggere!
Sebbene esistano delle varianti del suddetto programma anche per piattaforma Linux, la soluzione che presenterò qui è di gran lunga più semplice e standard (anche se si paga in termini di velocità e flessibilità).
Presenterò il caso più “standard”, cioè quello in cui si abbiano diversi computer linux-based connessi in rete e si voglia fare il backup del disco di uno di essi. Il caso tipico è quello del portatile con un disco più piccolo di cui si vuole fare un’immagine che deve essere memorizzata su un host con un disco di grandi dimensioni.

Materiale occorrente

  • Due computer connessi in rete
  • Una distribuzione live di Linux (vanno bene tutte, ad esempio Ubuntu, Knoppix, DSL etc.)
  • Nient’altro!

Come procedere

Innanzi tutto avviare la macchina di cui si vuol fare il backup utilizzando la dostro live. Una volta avviata, la macchina dovrebbe già aver acquisito un indirizzo IP se nella rete c’è un DHCP (caso tipico), altrimenti impostare l’IP sulla macchina col comando (da root)

#ifconfig ethX xxx.xxx.xxx.xxx netmask yyy.yyy.yyy.yyy

dove ethX è l’interfaccia di rete (es: eth0) e xxx.xxx.xxx.xxx e yyy.yyy.yyy.yyy sono rispettivamente l’indirizzo IP e la maschera di sottorete (es: 192.168.1.2, 255.255.255.0)
Una volta configurata la rete, il più è fatto. Infatti, come saprete, Linux vede tutti i device come file, perciò per leggere il device “disco” sarà sufficiente leggere il file corrispondente (ad esempio /dev/hda). E per trasmetterlo all’altro PC in rete?
Per fare ciò ci viene in aiuto una simpatica utility presente in quasi tutte le distro (specialmente in quelle live): netcat.Per maggiori informazioni sul programma potete usare il comando

$man nc

in ogni caso il concetto è semplice: il comando funziona esattamente come il “cat” con la differenza che il trasferimento dati avviene sul protocollo di rete TCP/IP.
Oltre a tutto ciò, per ridurre lo spazio occupato dal file useremo un programma di compressione (anch’esso standard e presente ovunque): gzip (oppure bzip2, se si vuole comprimere di più a spese di un tempo di attesa maggiore).

Iniziamo

La prima cosa da fare è andare sul server, entrare in una directory in cui si vuole memorizzare l’immagine e mettere il server netcat in attesa, col comando

$nc -l -p 9090 > immagine_hda.gz

Se tutto va bene il comando dovrebbe partire e restare in attesa di dati sulla porta 9090 (è una scelta arbitraria).
Adesso andiamo sul client e diamo il comando corrispondente (nota: è necessario essere root):

#cat /dev/hda | gzip | nc -q 1 192.168.1.3 9090

nell’ipotesi che l’indirizzo del server sia 192.168.1.3. Il parametro “-q 1” serve per uscire dal programma una volta completato il flusso dati.
Voilà! Adesso sul disco del server abbiamo un’immagine compressa del disco del client, facile no? Certo la flessibilità non è quella di programmi commerciali, però abbiamo fatto tutto in una riga, gratis e con strumenti assolutamente standard!

Un piccolo miglioramento

I programmi professionali di solito evitano di fare il backup dei settori del disco vuoti, questo per non incrementare inutilmente le dimensioni del file di immagine, ma siccome il comando “cat /dev/hda” non ha visibilità di quali settori sono pieni e quali no, non riusciamo a ottimizzare in questo senso. C’è da dire che il vantaggio in questo sta nel fatto che, prescindendo dal filesystem, riusciremo a fare il backup di qualunque disco con qualunque sistema operativo installato (cosa non da poco!). Possiamo però fare qualcosa per migliorare la situzione: come sappiamo i compressori (come gzip e bzip2) hanno performance molto elevate se i file che comprimono sono costituiti da caratteri tutti uguali. Come fare in modo allora che i settori vuoti siano costituiti da caratteri tutti uguali? Basta pensarci un attimo: si crea un file costituito da caratteri tutti uguali fino a saturare il disco, dopo di che lo si cancella. Il comando è banale:

$cat /dev/zero > file_temporaneo

quando il terminale segnala un errore di disco pieno, cancelliamo il file col comando:

$rm file_temporaneo

Il gioco è fatto, se rifacciamo la stessa prova di prima il file risultante sarà notevolmente più piccolo! Ovviamente questo comando è usabile sono su macchine linux, su macchine windows (ad esempio) bisognerà fare in altro modo. Personalmente mi sono creato un file compresso costituito da zeri con linux e lo tengo sempre su chiavetta (sono pochi Kb) e quando ne ho bisogno lo decomprimo.

Annunci sponsorizzati:
Condividi su Facebook Condividi su Twitter!
  • molto interessante e anche molto comodo, ma … ahem… il Restore come si fa?

Pinterest