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.

Ti potrebbe interessare anche...