It:Cloning Sabayon dd

From Sabayon Wiki
Jump to: navigation, search
Clonehd.png
dd / dcfldd


Question.png
Questo HowTo è stato composto con una risoluzione video di 1920x1080 px. La visualizzazione delle immagini potrebbe differire a seconda della risoluzione del monitor in uso


Stop.png
Attenzione !! L'utilizzo scorretto del comando dd può portare alla perdita di dati. Utilizzare con cautela !

L'utilizzo è indicato per utenti esperti.

Effettuare sempre una copia dei dati importanti prima di ogni operazione con dd.


Nome Homepage Versione
dd Fornito dal pacchetto coreutils 8.25
dcfldd http://dcfldd.sourceforge.net/ 1.3.4.1

Installazione

Il pacchetto coreutils è già incluso nella distribuzione. (ref: dd)

dcfldd è disponibile nei repository di Sabayon Linux ed offre le stesse funzionalità di dd ma con qualche features aggiuntiva.

Ha la comodità inoltre di avere un semplice stato di avanzamento durante l'elaborazione cosa che dd non offre.

$ equo s coreutils dcfldd
╠  @@ Cercando...
╠      @@ Pacchetto: sys-apps/coreutils-8.25 branch: 5, [sabayonlinux.org] 
╠          Disponibile:   versione: 8.25 ~ tag: NoTag ~ revisione: 0
╠          Installato:    versione: 8.25 ~ tag: NoTag ~ revisione: 0
╠          Slot:          0
╠          Homepage:      https://www.gnu.org/software/coreutils/ 
╠          Descrizione:   Standard GNU file utilities (chmod, 
╠                         cp, dd, dir, ls...), text utilities 
╠                         (sort, tr, head, wc..), and shell 
╠                         utilities (whoami, who,...) 
╠          Licenza:       GPL-3
╠      @@ Pacchetto: sys-apps/dcfldd-1.3.4.1 branch: 5, [sabayonlinux.org] 
╠          Disponibile:   versione: 1.3.4.1 ~ tag: NoTag ~ revisione: 0
╠          Installato:    versione: 1.3.4.1 ~ tag: NoTag ~ revisione: 0
╠          Slot:          0
╠          Homepage:      http://dcfldd.sourceforge.net/ 
╠          Descrizione:   enhanced dd with features for forensics 
╠                         and security 
╠          Licenza:       GPL-2
╠   Keyword:  coreutils, dcfldd
╠   Trovati:  2 voci
  • Installazione di dcfldd
# equo i dcfldd --ask

Presentazione di dd / dcfldd

dd è un comando dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX, che copia dei dati in blocchi, opzionalmente effettuando conversioni. Nei sistemi Unix tutti i driver hardware (come gli hard disk) sono trattati come file normali all'interno del file system. dd esegue le normali operazioni tra file (leggi, scrivi, copia) su questi file speciali e permette anche di convertire i dati nella fase di copiatura, inclusa la conversione dall'encoding ASCII a quello EBCDIC. Può anche essere usato per creare file sparsi.

dd viene spesso definito "scherzosamente" disk destroyer (il distruttore di dischi) in quanto un suo utilizzo erraro (soprattutto nella scelta errata del file o dispositivo di destinaione) può portare alla perdita irrecuperabile dei dati.

dd ha funzioni polivalenti , è spesso utilizzato per clonare dispositivi o creare dispositivi USB avviabili da ISO ibride o ancora, creare immagini di interi dischi o partizioni. In questa guida vedremo come clonare e creare una immagine di una installazione di Sabayon Linux . Va inteso che può essere utilizzato per clonare qualsiasi distribuzione.

Clonazione dischi

La clonazione tra dischi implica che il dispositivo ricevente sia di capacità uguale o maggiore del disco utilizzato come sorgente. Anche la sola differenza di un byte può portare al fallimento del processo di clonazione.

NB: il processo di clonazione dovrebbe essere effettuato in un ambiente "neutro" (ad esempio un ambiente Live utilizzando SystemRescueCD) oppure tra dispositivi non montati in quanto ogni minimo cambiamento nel filesystem può portare ad uno stato di incosistenza con errori il filesystem del dispositivo ricevente.

Il processo di clonazione tra dispositivi è piuttosto semplice , la sintassi può essere descritta come segue: (le opzioni di dd non seguono una sequenza specifica,possono essere date in un qualsiasi ordine)

Clonare /dev/sda (da 122GB) --> /dev/sdb (da 150GB)
# dcfldd if=/dev/sda of=/dev/sdb bs=4096 conv=sync,noerror
bs=4096 oppure bs=4M legge blocchi da 4 Megabytes , può accelerare l'operazione di lettura/scrittura conv=sync,noerror , opzioni di sincronizzazione e di salto degli errori.
Processo di clonazione terminato. Il dispositivo /dev/sdb ha preso tutte le caratteristiche di /dev/sda , lo spazio rimanente può essere riutilizzato o ridimensionato

Creare una immagine disco

Con dd è possibile creare immagini di interi dischi o di singole partizioni. Nei sistemi UNIX , tutto è visto come un file , quindi indirizzando il dispositivo sorgente verso un file e non verso un dispositivo è possibile creare una copia bit per bit (copia forense).

  • Per produrre una immagine bit per bit di una installazione di Sabayon Linux , si eseguirà :
# dcfldd if=/dev/sda of=/mnt/backup/sabayon-linux-kde.img conv=sync,noerror bs=4M

Questo produrrà una immagine RAW (sabayon-linux-kde.img) del disco , immagine salvata ad esempio su un dispositivo esterno montato su /mnt/backup.

Ci sono però degli svantaggi su questo metodo.L'immagine risultante avrà la stessa dimesnione del disco copiato (rapporto 1:1) ; nell'esempio il disco sorgente ha una capacità di 122GB , l'immagine risultante sarà quindi di 122GB su un utilizzo di spzio effettivo di poco meno di 10Gb , vien da sè che tutto il resto dello spazio salvato è vuoto o non utilizzato. Un bello spreco di spazio !

Come possiamo ottenere una immagine risultante più piccola,facilmente memorizzabile e magari anche compressa ? Per ovviare a questo ci vengono incontro altri tool come gzip o bzip2 o altri programmi di compressione che abbinati a dd permettono di salvare spazio ed ottenre una immagine più pratica da archiviare.

Note sullo spazio disco : I file cancellati

L'operazione di cancellazione di un file su disco è molto semplice, un click ed il file è scomparso dai nostri occhi dal disco.Questo è quello che un utente pensa , ma tutto quello che è successo è solo stato un cambio nel filesystem.In parole povere l'operazione di cancellazione dal disco informa solo il filesystem di non rendere più disponibile quel file non eliminandolo ma semplicemente cambiando l'informazione di quel file sul filesystem.Il file c'è ancora , almeno finchè esso non venga sovrascritto da un altro file. Per quanto efficace possa essere un programma di compressione , abbinato a dd , esso considererà come validi anche i file non più utilizzati e che non interessano più allo scopo.per far questo occorre eliminarli definitivamente dal disco , ripulendo completamente lo spazio "vuoto" con dati nulli.

Ripulire il disco dallo spazio inutilizzato

Per eseguire questa operazione occorre montare tutte le partizioni interessate in modo da aver accesso in scrittura. Lo stesso comando dd (o dcfldd) ci verrà in aiuto nell'operazione di "pulitura".

Montare le partizioni

Per accedere alle partizioni con LVM , seguire l'HOWTO del wiki. I Gruppi di Volume potrebbero differire da installazione ad installazione , adattarli di conseguenza.


  • Montare ed accedere alla partizione di boot (Esempio montata su : /mnt/backup/boot)

dd ci viene incontro per l'operazione di pulizia.Non dovremmo far altro che scrivere un file "vuoto" che vada ad occupare tutto lo spazio libero per poi rimuoverlo una volta che dd ha terminato l'esecuzione.

/mnt/backup/boot # dcfldd if=/dev/zero of=/mnt/backup/boot/filenull bs=4M
Il file che verrà creato occuperà tutto lo spazio rimanente sovrascrivendo tutti i file eventualmente rimasti "nascosti" , il comando terminerà con un errore di spazio esaurito , è assolutamente normale. rimuovendo il file (il quale avrà contenuto di bit a zero) si libererà lo spazio non utilizzato ed esso risulterà effettivamente libero ; successivamente l'operazione di compressione risulterà più efficace

Procedere allo stesso modo per tutte le partizioni interessate (esclusa la partizione di swap). Una volta terminta l'operazione di pulizia , smontare tutte le partizioni montate precedentemente ed avviare la creazione dell'immagine compressa

Creare una immagine compressa

Programmi di compressione quali gzip,bzip,xz etc. assolvono lo scopo con l'aiuto della pipe (|)

# dcfldd if=/dev/sda | gzip -c9 > /mnt/backup/sabayon-linux-kde.img.gz

if=/dev/sda E' il file di input (il disco sorgente) , il suo output verrà passato ad una pipe(|) che lo passa al programma di compressione (gzip nell'esempio) al quale diciamo di prendere i dati provenienti dallo standard output (-c) e applicare la massima compressione (-9) e di redirigere il risultato (tramite il redirect >) ad un file ,altro non sarà che l'immagine compressa del contenuto letto da dd dal dispositivo /dev/sda. Gzip comprimerà solo i dati che leggerà in arrivo dall'output , valori "zero" non verranno compressi e comunque non hanno un peso nel conteggio dello spazio disco.

Al termine dell'operazione si otterrà una immagine di 4.6GB di un disco da 122GB con uno spazio utilizzato complessivo di circa 10GB. Un buoon risparmio di spazio (fattore 1:2) confronto l'immagine RAW da 122GB Ovviamente molto dipenderà dal contenuto del disco. Quella dell'esempio è una installazione ex-novo con l'aggiunta di poche cose.

Ripristinare l'immagine disco

Per ripristinare l'immagine del disco non si dovrà far altro che compiere il percorso inverso ; decomprimere l'immagine compressa e sempre attraverso ad una pipe (|) , redirigere l'output a dd indicando il dispositivo di destinazione (cioè quello per il ripristino) .

# zcat -dc /mnt/backup/sabayon-linux-kde.img.gz | dcfldd of=/dev/sda

Attenzione: il ripristino dovrà essere eseguito su un dispositivo di dimensioni uguali o maggiori in quanto verrà ripristinata la tabella delle partizioni originale. Se si ripristina una immagine di un disco da 120GB su un disco da 250GB , quest'ultimo verrà visto come dispsoitivo di capacità di 120GB. Si dovrà agire sulla tabella delle partizioni successivamente al ripristino per adeguare lo stato reale del disco.