Documentazione
Introduzione:
Zsplit e Unzsplit sono utility a linea di commando linux che operano tipo I popolari programme Symantec Norton Ghost™ o Acronis True Image™ e consentono di creare una immagine esatta del discoper un completo backup e clonazione del disco, consentendo la migliore protezione dei dati. Comunque, non diversamente da alter simili soluzioni software zsplit e unzsplit sono libere per il download e la distribution ! Notare che entrambi i programmi zsplit e unzsplit sono protetti dalla licenza GNU GPL2.
Zsplit e Unzsplit usano la libreria zlib library al fine di implementare la funzione di compressione e decompressione in memoria, compreso il controllo dei dati decompressi. Questa libreria è stata scritta da Jean-loup Gailly (compressione) e Mark Adler (decompressione). Gli autori acconsentono all’uso di questa libreria alle condizioni della licenza zlib.
Uso generale:
Per dettagli d’uso delle differenti opzioni si prega di far riferimento alla documentazione di zsplit e unzsplit. Di seguito si discute di alcuni piccoli metodi di uso per le operazioni di salvataggio e ripristino.
Operating localy:
Situazione 1: In un nostro computer abbiamo un hard disk hda con partizione avviabile linux e con dentro zsplit. Nel nostro computer abbiamo inserito un altro hard disk hdb con sopra un’altro sistema operativo, per esempio Windows XP. L’hard disk hda è adeguatamente grande da poter contenere l’intero hardisk hdb. Vogliamo effettuare il salvataggio dell’intero disco hdb, così che successivamente possiamo trasferire la nostra immagine ad uno o più hard disk o DVD per la memorizzazione.
Assumiamo di effettuare l’avvio dal disco hda, selezioniamo la directory dove dovrebbe essere memorizzata l’immagine e diamo il seguente commando:
zsplit -s 4.5G -N WinXP_backup -d /dev/hdb
Tutto qui, l’immagine dell’hard diskl hdb verrà compressa usando il rapporto di compressione predefinito, suddivisa in spezzoni da 4.5 GB (Gigabyte binary) e salvata nella directory corrente (files: WinXP_backup_0.spl.zp, WinXP_backup_1.spl.zp, WinXP_backup_2.spl.zp ...). Ognuno di questi files entra precisamente e su un DVD e potremmo trasferirli su di essi per la memorizzazione. L’opzione '-d' abilita la creazione del file debug.log nella directory attuale. In questo file puoi trovare tutte le informazioni sui tempi e dimensioni riguardo la creazione dell’immagine. Se vuoi puoi salvare i files delle immagini su altre directory del disco hda eseguendo il comando seguente:
zsplit -s 4.5G -N WinXP_backup -o /some/other/dir -d /dev/hdb
Notare: in certi casi, per esempio se hai una partizione NTFS pesantemente frammentata o con settori rovinati sul tuo HDD, può accadere che zsplit interrompa le sue operazioni con un errore di I/O. Per superare ciò puoi usare l’opzione -r, --noerror. Questa opzione metterà zsplit in uno speciale modo di sola lettura, cosi che tutti I settori intatti saranno letti con sicurezza e I settori danneggiati verranno esclusi. Naturalmente il file risultante avrà dei buchi ed in esso c’è la possibilità che perda la sua consistenza. Perciò è una buona idea dopo l’operazione di ripristino controllare il disco con uno strumento come “scandisk” (FAT16-FAT32) "chkdsk" (NTFS) "fsck.xxx" (ext,swap,reiserfs).
Esempio dello stesso commando come sopra con l’aggiunta dell’opzione –noerror:
zsplit -s 4.5G -N WinXP_backup -o /some/other/dir -d -r /dev/hdb
Per ripristinare completamente l’unità disco hdb dovresti avere unzsplit caricato quindi trasferire tutti gli spezzoni dal DVD a qualche directory di hda (dovresti considerare quanto segue: sei responsabile per tutti gli spezzoni siano completi nella directory seleziona). Se hai necessità di tutti gli spezzoni per il ripristino, cambia directory ed esegui il seguente comando sulla riga di comando:
unzsplit -D /dev/hdb -d WinXP_backup
Unzsplit leggerà la lista dei files dalla directory corrente con partel del nome WinXP_backup, esempio: WinXP_backup_0.spl.zp,WinXP_backup_1.spl.zp, WinXP_backup_2.spl.zp ..., deduce il giusto ordine di lettura, decomprime e unisce insieme in una sola imagine. Alla fine l’immagine sarà ripristinata sul disco /dev/hdb. I tempi e le informazioni di dimensione saranno scritte nel file debug.log dell directory corrente.
Situazione 2: Si vuole salvare l’intera partizione di avvio del disco (hda) del nostro computer. Notare che è assolutamente indipendente dal sistema operativo in esso caricato (win95, win98, winNT o Linux). Ciò di cui abbiamo bisogno è: un disco di adeguate dimensioni (hdb), il DeviceImage-LiveCD e, naturalmente, il programma zsplit. Notare inoltre che si può usare un’altra distribuzione come KNOPPIX bootable CD ma zsplit e unzsplit non sono inclusi in questa distribuzione. Così dopo l’avvio dal cd originale di Knoppix bisogna caricarcelo sopra (usando un floppy , un ftp o smbmount).
Per creare l’immagine di backup del sistema (hda) facciamo l’avvio del computer con DeviceImage-LiveCD, creiamo (se la partizione non esiste ) una partizione sul disco hdb (per esempio ext2 su hdb1), montiamo questa partizione come una directory sul nostro ambiente (mount -t [fstype] /dev/hdb1 /some/new/dir), entraimo in questa nuova directory ( cd /some/new/dir/) e usiamo zsplit per creare l’immagine di backup:
Salviamo nella forma che crea spezzoni di file:
zsplit -s 700M -N WinXP_backup -d /dev/hda
creiamo lìimmagine del disco hda compressa e la spezziamo in tronconi da 700 Mebibyte (Megabyte binary). Vedi una descrizione completa sopra.
Salviaomo con un unico grande file:
zsplit -N WinXP_backup -d /dev/hda
creiamo un’immagine del disco hda come un unico file.
Per ripristinare l’immagine sul disco hda abbiamo bisogno di un secondo disco (per esempio hdb) con sopra il/I file/s dell’immagine salvata, DeviceImage-LiveCD con unzsplit. La procedura completa potrebbe essere la seguente:
Avviamo il computer con il live-CD DeviceImage e montiamo la partizione del disco hdb contenente I files di imagine, andiamo con il comando cd nella directory dei file di immagine ed eseguiamo il commando seguente:
unzsplit -D /dev/hda -d WinXP_backup
Unzsplit legge l’elenco dei files nella directory corrente con la parte del nome commune WinXP_backup, come: WinXP_backup_0.spl.zp, WinXP_backup_1.spl.zp, WinXP_backup_2.spl.zp ..., decomprime e unisce I files insieme in un unica imagine e ripristina questa imagine sul disco /dev/hda. Le informazionei di debug sono scritte nel file debug.log nella directory corrente.
Operare via rete:
L’uso delle opzioni di netcat in questo documento sono basate sulle man page dell’implementazione originale di netcat di *Hobbit* <hobbit@avian.org>. Qualunque differenza dall’implementazione originale hanno alter opzioni che necessitano di essere considerate.
Esempio: netcat per Fedora Core è riscritto in nc(1) per OpenBSD con differente uso delle opzioni -l e -p.
Situazione 1: Supponiamo di voler fare un’immagine di backup di un sistema avviabile e che il tuo sistema non abbia un secondo disco che potresti usare come disco di destinazione dell’immagine di backup , ma hai un secondo computer e c’è una connessione di rete tra i due computer. Zsplit con l’aiuto di netcat e dd farà il lavoro di creare l’immagine di backup da un punto all’altro via rete. Il seguente scenario potrebbe facilmente essere realizzato:
L’immagine di backup dovrebbe essere creata dal sistema con disco del computer A via rete a qualche disco sul computer B. Avviamo la macchina A con il LiveCD di DeviceImage-LiveCD. Supponiamo di avere una Linux-box machine come B, e se no, possiamo avviare anche la macchina B con il DeviceImage-LiveCD. Dopo l’avvio di entrambi i computer, è necessario saper l’IP assegnato alle du machine A e B. Usare il comando ifconfig -a per controllare l’IP. Assumiamo che la Linux-Box A abbia indirizzo IP 192.168.0.1 e la Linux-Box B abbiam IP 192.168.0.2 faqre come segue:
Passo 1: sulla macchina B eseguite il seguente commando:
nc -l -p 9000 | zsplit -s 4.5G -N Linx_bkp -d -
questo dirà a netcat di mettersi in modalità ascolto. netcat ascolterà sulla porta 9000, se qualche dato passerà attraverso questa porta, esso sarà redirezionato sulla pipe di ingresso di zsplit. Zsplit a sua volta eseguirà il suo lavoro, comprimerà I dati provenienti dalla pipe in ingresso usando il rapporto di compressione predefinito, spezzerà il file compresso in tronconi da 4.5G Gibibyte (Gigabyte binari) e salverà tutti qeusti dati nello spezzone di file nella directory corrente. (files: Linx_bkp_0.spl.zp, Linx_bkp_1.spl.zp, Linx_bkp_2.spl.zp ...). Nella directory corrente vedrai anche il file debug.log con tutte le informazioni sul tempo e la dimensione.
Passo 2: sulla macchina A eseguire il commando seguente:
dd if=/dev/hda bs=1024 | nc 192.168.0.2 9000
questo inizializzerà il canale di comunicazione via rete sulla porta 9000 con la macchina con IP 192.168.0.2 . Dipendente dalla velocità della rete e dalla dimenasione del disco della macchina A, esso può prendere del tempo per il trasferimento dell’immagine sulla macchina B. Come risultato di questa operazione avrai compresso e spezzato l’immagine in tronconi del disco hda (computer A ) sulla macchina B. Il vantaggio di questo metodo è: ottieni un’immagine in spezzoni compressa alla fine. Lo svantaggio comunque è che la velocità di trasferimento via rete è basso in quanto trasferiamo dati non compressi.
Se preferisci avere la possibilità di un’alto transfer rate, puoi fare l’altra procedura:
Notare che la differenza tra questi due metodi è solo dove viene eseguito il programma zsplit e dd.
Passo 1: sulla macchina B eseguire il seguente comando:
nc -l -p 9000 | dd of=Linx_bkp_0.spl.zp bs=1024
netcat ascolterà sulla porta 9000 e passerà tutti I dati a dd, dd a sua volta salverà I dati in un file di immagine Linx_bkp_0.spl.zp . Notare che, la convenzione dei nomi rimane anche per il file da solo. In caso volessimo ripristinare questo file, è importante per unzsplit avere la parte del nome come: "_0.spl.zp", vedere la documentazione per unzsplit.
Passo 2: sulla macchina A eseguire il seguente comando:
zsplit -c -d /dev/hda | nc 192.168.0.2 9000
zsplit leggerà I dati dal disco /dev/hda, usando la compressione predefinita in memoria e passerà I daqti compressi a netcat, il quale esegue il trasferimento sulla macchina B.
Il vantaggio di questo metodo è il più alto transfer rate sulla rete. Lo svantaggio è: alla fine dell’operazione avrai un unico grande e compresso file di immagine.
Possiamo anche ripristinare il disco hda sulla macchina A via rete. Supponiamo, dopo il salvataggio di avere l’immagine divisa in spezzoni del disco hda della macchina A sulla macchina B.
Per eseguire la procedura di restore fare come segue: avviare la macchina A con il DeviceImage-LiveCD. Se la macchina B non è una Linux-Box, possiamo avvianre anch’essa con il DeviceImage-LiveCD. Adopo che entrambi I computer saranno stati avviati, è richiesto di conoscere l’IP delle machine A e B. Quindi fare come segue:
Passo 1: sulla macchina A eseguire il commando seguente:
nc -l -p 9000 | dd of=/dev/hda bs=1024
netcat ascolterà sulla porta 9000 e passerà I dati ricevuti a dd, dd a sua volta ripristinerà tutti i dati del disco /dev/hda.
Passo 2: sulla macchina B, portarsi sulla directory che contiene I file di imagine ed eseguire il commando seguente:
unzsplit -c -d Linx_bkp | nc 192.168.0.1 9000
unzsplit cercherà tutti I file con la parte commune Linx_bkp, determinerà il gisuto ordine e sequenzialmente leggerà tutti gli spezzoni, li decomprimerà e li passerà al data stream di netcat. Netcat si collega alla porta 9000 sulla macchina con indirizzo IP 192.168.0.1 e trasferisce tutti i dati via netcat sulla macchina A a dd. dd a sua volta ripristina tutti i dati del disco hda. L’ opzione -d controlla l’output di tutte le informazioni su dimensione e tempi di rirpistino nel file debug.log.
Situazione 2: supponiamo di voler fare una clonazione via rete. Es. Si sta pianificando di distribuire l’immagine a molti pc via rete. Il seguente scenario può aiutare:
Notare che questo scenario è molto simile a quanto visto sopra. La differenza è: usiamo entrambi I programmi zsplit e unzsplit insiema con netcat, e abbiamo avviato le macchine con il DeviceImage-LiveCD.
Per impostare la procedura di clonazione, fare quanto segue: avviare entrambe le macchine con DeviceImage-LiveCD. Ottenere gli indirizzi IP di entrambe le macchine (vedere le man per ifconfig), supponiamo che la macchina A abbia IP 192.168.0.1 e la macchina B abbia indirizzo IP 192.168.0.2 . Definiamo la macchina A la macchina principale e la B la secondaria. La direzione di clonazione e dalla principale (A) alla secondaria (B). Notare che il disco sulla macchina B è di dimensione uguale o superiore a quello della macchina A.
Passo 1: sulla macchina B eseguire il commando:
nc -l -p 9000 | unzsplit -D /dev/hda -d -
netcat ascolterà sulla porta 9000, passerà tutti I dati in arrivo ad unzsplit via stdin, unzsplit a sua volta decomprimerà e ripristinerà tutti I dati sull’disco /dev/hda.
Passo 2: sulla macchina A eseguire il seguente comando:
zsplit -c -d /dev/hda | nc 192.168.0.2 9000
zsplit leggerà da /dev/hda, usando lil livello di compressione predefinita per la compressione in memoria, passerà tutti I dati al netcat, che è in ascolto sulla macchina B.
Copyright(C) 2005 - 2007 DeviceImage-Project