Clonare un Hard Disk su linux
Il comando dd è un semplice, versatile e potente strumento. Può essere usato per copiare dalla sorgente alla destinazione, blocco per blocco, a prescindere dal tipo di filesystem oppure dal sistema operativo. Un metodo più conveniente è quello di usare dd da un ambiente live, come un livecd.
Clonare una partizione
Da un disco fisico /dev/sda, la partizione 1, ad un disco fisico /dev/sdb sulla partizione 1.
dd if=/dev/sda1 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
Se il file di output of (sdb1 nel nostro esempio) non esiste, dd lo creerà a partire dall’inizio del disco.
Clonare un intero hard disk
Da un dico fisico /dev/sda ad un disco fisico /dev/sdb:
dd if=/dev/sda of=/dev/sdb bs=4096 conv=notrunc,noerror
Questo comando clonerà l’intero disco, incluso il Master Boot Record (e quindi anche il bootloader), tutte le partizioni ed i dati.
notruncodo not truncatemantiene l’integrità dei dati imponendo adddi non spezzare nessun dato.noerrorcomunica adddi continuare l’operazione, ignorando tutti gli errori dall’origine. Il comportamento di default diddè quello di fermarsi ad ogni errore.bs=4096imposta la dimensione dei blocchi a 4k, la dimensione ottimale ed efficiente per la lettura/scrittura del disco, e quindi della velocità clonazione.
Backup del MBR
Il Master Boot Record è contenuto nei primi 512 byte del disco. Esso consiste in 3 parti:
- I primi 446 byte contengono il bootloader.
- I successivi 64 contengono la tavola delle partizioni (4 voci di 16 byte ciascuna, una voce per ogni partizione primaria).
- Gli ultimi 2 byte contengono un identificatore.
Per salvare il MBR in un file dal nome mbr.img:
# dd if=/dev/hda of=/mnt/sda1/mbr.img bs=512 count=1
Per ripristinare (attenzione questo comando potrebbe distruggere la tavola delle partizioni, e quindi impedire l’accesso ai dati presenti sul disco):
# dd if=/mnt/sda1/mbr.img of=/dev/hda
Se si desidera soltanto ripristinare il bootloader, ma non la tavola delle partizioni, basterà ripristinare solo i primi 446 byte del MBR:
# dd if=/mnt/sda1/mbr.img of=/dev/hda bs=446 count=1
Per ripristinare soltanto la tavola delle partizioni, il comando sarà:
# dd if=/mnt/sda1/mbr.img of=/dev/hda bs=1 skip=446 count=64
Sarà possibile estrarre il MBR dall’immagine completa di un disco:
#dd if=/path/to/disk.img of=/mnt/sda1/mbr.img bs=512 count=1
Creare l’immagine di un disco
1. Effettuare il boot da un sistema live(liveCD o liveUSB).
2. Assicurarsi che nessuna partizione sia montata dal disco di origine.
3. Effettuare il mount di un disco esterno.
4. Effettuare il backup del disco:
# dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c > /mnt/sda1/hda.img.gz
5. Salvare alcune informazioni addizionali riguardo al disco, come la sua geometria, sarà necessario per interpretare la tavola delle partizioni salvata nell’immagine. L’informazione più importante è la dimensione dei cilindri.
# fdisk -l /dev/hda > /mnt/sda1/hda_fdisk.info
bs=) uguale all’ammontare della cache del disco di cui si sta creando l’immagine. Ad esempio, bs=8192K funziona per una cache di 8MB. Il valore di 64K menzionato in questo articolo è migliore del valore di default, che è impostato a bs=512 byte, perché dd verrà eseguito più velocemente con un valore di bs= maggiore.Ripristinare il sistema
Per ripristinare il sistema:
# gunzip -c /mnt/sda1/hda.img.gz | dd of=/dev/hda
Usando cp
Il programma cp può essere usato per clonare un disco, ad una partizione alla volta. Il vantaggio dell’uso di cp è che il tipo di filesystem della/delle partizione/i di destinazione può non essere il solito dell’origine. Per sicurezza, effettuare il processo da un ambiente live.
La procedura di base da un ambiente live sarà:
- Creare le nuove partizioni di destinazione (usando fdisk, cfdisk oppure altri programmi disponibili nell’ambiente live).
- Creare un filesystem su ogni partizione precedentemente creata. Ad esempio:
mkfs -t ext3 /dev/sdb1
- Effettuare il mount dell’origine e della/delle partizione/partizioni di destinazione. Ad esempio:
mount -t ext3 /dev/sda1 /mnt/origine mount -t ext3 /dev/sdb1 /mnt/destinazione
- Copiare i file dalla partizione di origine a quella di destinazione:
cp -a /mnt/origine/* /mnt/destinazione
L’opzione -a: preserva i permessi, non segue mai i link simbolici ed copia ricorsivamente
- Cambiare i punti di mount della partizione appena copiata nel file
/etc/fstaba seconda delle modifiche effettuate(es. il tipo di filesystem) - Infine, installare il bootloader GRUB se necessario. (Consultare GRUB)