Ci sono casi in cui si ha la necessità di copiare una partizione in un file immagine o viceversa. Questo vale per i computer desktop, con i quali è sempre bene avere copie di backup, ma anche e soprattutto per i Raspberry Pi. In quest’ultimo caso, infatti, l’installazione del sistema operativo è semplicemente l’estrazione di un file immagine su una scheda microSD. Ma può essere utile realizzare una copia del proprio sistema, con tutta la configurazione che si è apportata, in modo da poterla clonare anche su altri Raspberry oppure in modo da evitare di dover rifare tutto daccapo se la scheda SD dovesse danneggiarsi. Esiste uno strumento standard su qualsiasi sistema GNU/Linux che si occupa di questo, ed è il comando dd . Tuttavia si tratta di un comando scomodo, perché non ha alcuna forma di visualizzazione dello stato, e perché se interrotto (cosa che può accadere in caso di dischi grandi e magari con qualche errore) ricomincia la copia dall’inizio. Per fortuna esiste dd_rescue , una versione di dd progettata proprio per recuperare più dati possibili da dischi danneggiati, e che quindi offre una serie di comodità in più.
Normalmente, dd_rescue non è installato sul sistema, è presente soltanto il classico dd. Lo si può installare su un sistema di tipo Debian con il comando sudo apt-get install gddrescue
. Il nome del pacchetto inzia con la lettera “g” perché il nome del progetto completo è GNU dd rescue .
Per cominciare la copia di un disco rigido basta conoscere il suo nome (per esempio /dev/sda ) e poi dare un comando del tipo sudo dd_rescue -d -r3 /dev/sda sda.img sda.log
. È possibile anche copiare una singola partizione, ma in genere se si teme che un disco possa essere danneggiato conviene copiarlo per intero, in modo da poter poi controllare la tabella delle partizioni. Esistono molte opzioni, ma quelle che abbiamo fornito nell’esempio servono ad avere un accesso diretto al disco ed impostare un numero massimo di tentativi di lettura per ogni settore del disco pari a 3.
Volendo capire meglio la situazione del proprio disco è possibile installare un’interfaccia grafica chiamata ddrescueview , che possiamo installare col comando sudo apt-get install ddrescueview
. Questo programma si può utilizzare per aprire i file di log di dd_rescue e ottenere una mappa del disco rigido. Dei semplici colori permettono di individuare immediatamente i settori danneggiati, per quantificare e localizzare il danno.
L’immagine ottenuta può poi essere montata per un facile accesso al disco: basta dare il comando fdisk -l sda.img
per ottenere un elenco di tutte le partizioni. Ovviamente su tale file si possono eseguire anche comandi come testdisk
, per ripristinare la tabella delle partizioni qualora fdisk segnali errori. Se va tutto bene, basta scegliere la partizione che contiene i file che si vogliono vedere e dare il comando sudo mount -o loop,offset=71661568 sda.img /mnt
, dove l’ offset è il numero di settore di inizio ( Start ) della partizione. Non serve specificare il settore di fine, perché il sistema se ne accorge da solo. Se, invece di accedere ai file, si desidera copiare il contenuto dell’immagine in un nuovo disco (per esempio /dev/sdb con dimensione uguale o maggiore a quella del disco originale), si può dare il comando ddrescue -f sda.img /dev/sdb sdb.logfile
. Infatti, dd_rescue può essere usato anche per scrivere direttamente sul disco, invece che su un file immagine, ma si deve specificare l’opzione -f .