Backup partizioni e usb bootabili tramite – dd –
Lo strumento dd
è un’applicazione dei sistemi Unix e Unix-like potente e affidabile per copiare dati in blocchi effettuando conversioni, permettendo così di clonare interi dischi e intere partizioni da sorgenti e destinazioni diverse fra loro (HDD interni ed esterni, CD-DVD, chiavette usb, etc. …) .
si gestisce interamente da riga di comando secondo la seguente sintassi generale:
# dd [ parametri ]
I parametri principali da prendere in esame sono if=
, che identifica la sorgente da clonare, e of=
, che identifica la destinazione
Così se dovessimo clonare una partizione denominata sda1
su di una partizione di un disco esterno denominata sdc1
, utilizzeremo il seguente comando:
# dd if=/dev/sda1 of=/dev/sdc1
al comando dd
possono inoltre essere aggiunti altri parametri di cui i principali sono:
bs=dimensioni
legge e scrive i blocchi nelle dimensioni specificate (in bytes) ( deve essere un multiplo di 512: 512, 1024 , 2048, 4096 etc. )
obs=dimensioni
scrive i blocchi nelle dimensioni specificate (in bytes)
count=numero_blocchi
Copia solo il numero specificato di blocchi
ibs=dimensioni
legge i blocchi nelle dimensioni specificate ( in bytes)
conv=conversione[,conversione …]
Effettua durante la copia le conversioni elencate (separate da virgole)
sync
Sincronizza l’input e l’output. Previene la perdita di dati durante la scrittura
Esempio di applicazione dei parametri:
Clonazione della partizione sda1
su partizione sdc1
di un disco esterno
# dd if=/dev/sda1 of=/dev/sdc1 bs=4096 conv=noerror,sync
In questo caso, tramite il valore noerror
istruiamo dd
a continuare la copia anche in caso di settori illeggibili . sync
per sincronizzare input e output
Clonazione di un intero disco sda
a un disco sdb
# dd if=/dev/sda of=/dev/sdb bs=4096 conv=noerror,sync
Clonazione della partizione sda1
su partizione sdc1
di un disco esterno in formato .img
# dd if=/dev/sda1 of=/dev/sdc1/file.img bs=4096
Backup del contenuto di un CDROM in formato iso su disco interno: partizione sda1
, device cdrom sr0
# dd if=/dev/sr0 of=~/backup_cdrom.iso conv=sync
nel caso non si conosca il device del lettore cdrom, lo si può individuare comodamente tramite il tool inxi
, scaricabile, nel caso non lo si abbia già nella propria distribuzione, dai repository oppure da AUR.
$ inxi -d
--------------------------------------------------------------------------------------------------
Drives: HDD Total Size: 938.97 GiB used: 42.56 GiB (4.5%)
ID-1: /dev/sda model: WDC_WD10EZEX-08W size: 931.51 GiB
ID-2: /dev/sdb type: USB model: USB_Flash_Drive size: 7.46 GiB
Optical-1: /dev/sr0 vendor: PLDS model: DVD-RW DU8AESH dev-links: cdrom
Features: speed: 24 multisession: yes audio: yes dvd: yes rw: cd-r,cd-rw,dvd-r,dvd-ram
Tramite il comando dd
è inoltre possibile creare una pennetta usb boottabile a partire da un file immagine. Il procedimento prevede i seguenti passaggi:
1. Inserire la pennetta nella porta usb
2. Lanciare il comando lsblk
e individuare il device e le partizioni esistenti della pennetta usb (sdb, sdc etc. …)
$ lsblk
-------------------------------------------------------
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931,5G 0 disk
ââsda1 8:1 0 200M 0 part /boot/efi
ââsda2 8:2 0 256M 0 part /boot
ââsda3 8:3 0 643,9G 0 part /
ââsda4 8:4 0 7,7G 0 part [SWAP]
ââsda5 8:5 0 279,5G 0 part
sdb 8:16 1 7,5G 0 disk
ââsdb1 8:17 1 7,4G 0 part /run/media/daniele/ANTERGOS
ââsdb2 8:18 1 31M 0 part
sr0 11:0 1 1024M 0 rom
3. Smontare le partizioni che risultano essere montate tramite umount
# umount /dev/sdb1
4. Eseguire il comando dd
# dd if=/percorso/linux.iso of=/dev/sdb bs=4096
ATTENZIONE: non va indicata in QUESTO CASO la partizione (sdb1
, sdb2
etc. ) , ma l’intero disco sdb
Successivamente, per riportare la pennetta usb allo stato originale, effettuandone all’azzeramento logico, smontare le partizioni e digitare il seguente comando:
# dd if=/dev/zero of=/dev/sdx count=1 bs=512
a questo punto sarà necessario ricreare una nuova tabella di partizioni, quindi formattare tramite cfdisk
o fdisk
e mkfs
Creare l’immagine di un disco al fine di ripristinare il sistema
In questo caso, è necessario effettuare il boot da LiveCD o da LiveUSB in modo che l’unità disco non sia montata. Effettuare il mount del supporto removibile (disco esterno) , quindi eseguire il backup del disco attraverso il seguente comando:
# dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c > /mnt/sda1/hda.img.gz
Eseguire anche il seguente comando, allo scopo di salvare le informazioni in merito alle dimensioni dei cilindri del disco:
# fdisk -l /dev/hda > /mnt/sda1/hda_fdisk.info
Il valore della dimensione dei blocchi, bs=
, non dovrebbe superare l’ammontare della propria cache.
Per ripristinare il sistema eseguire quindi il seguente comando:
# gunzip -c /mnt/sda1/hda.img.gz | dd of=/dev/hda
Backup di una partizione mediante cp
La clonazione di un disco e il backup dati presenti su di esso non sono la stessa cosa. Tramite la clonazione, siamo in grado di copiare un intero HDD, oppure un’intera partizione, blocco per blocco (bit to bit), effettuando tutte le conversioni del caso: servirà, SEMPRE, una partizione o un HD della stessa esatta dimensione (o superiore) .
Nel backup dati siamo in grado di prelevare gli stessi e copiarli in un altro percorso: servirà in questo caso una partizione della stessa dimensione dei dati (o superiore)
Il comando più indicato per effettuare il backup di una partizione è il seguente:
# cp -a /origine/* /destinazione
entrambe le partizioni debbono essere montate. L’ opzione -a
servirà per copiare in modo ricorsivo tutti i file e a preservare i permessi. L’ asterisco *
indica tutti i file.