Come clonare un disco danneggiato con ddrescue e recuperare dati da qualunque memoria

Breve guida all'utilizzo di ddrescue, potente utilità Linux che agisce a basso livello e facilita la clonazione di unità danneggiate su supporti funzionanti.

Esistono molteplici utilità che permettono di clonare dischi, alcune commerciali, altre gratuite o addirittura distribuite come software liberi. In questo articolo ci concentriamo su una soluzione storica che ancora oggi assicura risultati eccellenti.

Molte utilità “cadono” quando l’utente necessita di clonare dischi danneggiati: ddrescue è un’applicazione open source per Linux la cui prima versione è stata rilasciata nel 2004 e che ancora oggi viene costantemente aggiornata. Dopo quasi 20 anni, infatti, ddrescue continua ad essere utilizzato come uno strumento affidabile per il recupero dati.

ddrescue funziona in modo simile al comando dd di Unix; tuttavia, a differenza di dd, è progettato specificamente per il recupero dei dati da unità danneggiate o corrotte. È uno strumento di recupero dati che funziona a basso livello e, per questo motivo, non è legato ad alcun particolare file system. In pratica, ddrescue lavora direttamente sui settori del disco, ignorando la struttura del file system e concentrandosi sulla lettura e copia dei dati. In questo modo, ddrescue è in grado di funzionare con qualsiasi tipo di file system, compresi quelli non standard o rari.

Per questo motivo, ddrescue è uno strumento molto potente e flessibile che permette di copiare informazioni, ad esempio, da dischi formattati con NTFS, FAT, ext2/3/4, HFS+ e via dicendo.

Quando viene eseguito, ddrescue cerca di leggere il contenuto del supporto danneggiato, copiando ogni settore leggibile su un nuovo dispositivo di destinazione. L’utilità adotta un approccio “intelligente” per la lettura dei dati, cercando di evitare le aree del disco che potrebbero causare ulteriori danni. In particolare, ddrescue tenta prima di leggere i settori più facilmente accessibili e poi passa gradualmente a quelli più complessi da gestire utilizzando una serie di tecniche di recupero dati al fine estrarre il maggior numero possibile di informazioni da ogni settore.

ddrescue tiene traccia dei settori che non possono essere letti immediatamente e li analizza a più riprese nel tentativo di recuperare i dati mancanti. Il software è in grado di riprendere l’operazione di recupero dei dati dal punto in cui è stata interrotta in caso di errori o situazioni impreviste. In questo modo, ddrescue è in grado di massimizzare l’efficacia del recupero dati da un disco danneggiato o corrotto, minimizzando al contempo la perdita di informazioni e garantendo il successo dell’operazione.

Suggeriamo di creare un’unità avviabile (ad esempio una chiavetta USB) basata sulla più recente versione di SystemRescue: si tratta di una distribuzione Linux che integra anche il desktop environment “ridotto all’osso” Xfce oltre a tutte le migliori utilità per la diagnostica e la manutenzione di qualunque sistema, anche Windows. SystemRescue ospita anche ddrescue nella sua versione più recente, al momento aggiornata a gennaio 2023.

Dopo aver effettuato il boot del sistema da SystemRescue, suggeriamo di digitare startx per avviare l’interfaccia desktop quindi fare clic sull’icona Terminal Emulator nella barra in basso. I comandi seguenti, da impartire nella finestra del terminale, permettono di impostare il layout di tastiera italiano:

loadkeys it
setxkbmap it

La prima operazione da svolgere consiste nell’individuare l’unità da clonare ovvero il supporto di memorizzazione, di qualunque tipo esso sia, che ospita i file da trasferire altrove: chiameremo questo supporto unità sorgente.

Poiché il contenuto dell’unità di destinazione viene completamente sovrascritto, è essenziale utilizzare un supporto vuoto oppure un’altra unità il cui contenuto risulta rimovibile senza problemi. Il comando seguente dà modo di ottenere una panoramica in forma compatta della configurazione del sistema in uso, unità di memorizzazione comprese:

hwinfo --short

Esaminando il responso è importante portarsi in corrispondenza della sezione Disk quindi individuare l’identificativo dell’unità danneggiata a partire dalla quale si vogliono copiare i dati. Diversamente da quanto avviene in Windows, essendo SystemRescue basato su kernel Linux, non si troveranno le lettere identificative C:, D: e così via bensì /dev/sda, /dev/sdb, /dev/nvme eccetera. Il comando hwinfo restituisce, accanto a ciascuna unità, il nome del modello in modo da facilitarne la corretta individuazione.

Dopo aver avviato unità sorgente e destinazione (che può essere ad esempio anche un supporto USB sufficientemente capiente) e annotato i rispettivi identificativi (iniziano con il prefisso /dev/), è possibile utilizzare subito ddrescue per copiare i dati dal supporto danneggiato verso quello che si intende utilizzare.

sudo ddrescue -f -d /dev/sda /dev/sdX /home/user/Desktop/ddrescue.log

Il comando avvia la copia di un disco danneggiato (/dev/sda) su un altro disco (/dev/sdX) utilizzando ddrescue. In particolare, il comando:

  • “sudo” esegue ddrescue i privilegi più elevati
  • “ddrescue” è il nome del comando per il recupero dati
  • “-f” indica di forzare la scrittura sul disco di destinazione, anche se è già presente una partizione o un sistema di file
  • “-d” indica di usare la modalità diretta, ovvero di accedere direttamente all’unità sorgente
  • “/dev/sda” indica il disco di origine, ovvero il disco che si vuole clonare o recuperare i dati
  • “/dev/sdX” indica il disco di destinazione dove verranno scritti i dati recuperati dal disco di origine
  • “/home/user/Desktop/ddrescue.log” è il file di log dove verranno registrate tutte le informazioni riguardanti l’operazione di recupero

Al posto di /dev/sdX va ovviamente specificato l’identificativo corretto dell’unità di destinazione. In alternativa è anche possibile indicare il nome di un file d’immagine in modo da salvare il contenuto dell’unità sorgente all’interno di un unico file gestibile poi successivamente. La sintassi è molto simile:

sudo ddrescue -f -d /dev/sda /home/user/clone.dd /home/user/Desktop/ddrescue.log

In questo caso, tutto il contenuto dell’unità sorgente danneggiata viene salvato in un file dal nome clone.dd.

Uno dei grandi vantaggi di ddrescue è che il programma permette di clonare un disco anche su unità di memorizzazione che hanno dimensioni inferiori. L’importante è che le dimensioni dell’unità di destinazione siano sufficienti ad accogliere i dati conservati nell’unità di origine.

Aggiungendo l’opzione -n, si chiede a ddrescue di evitare i settori difficili da copiare, quindi le aree ove presumibilmente si concentrano gli errori, mentre – viceversa – utilizzando ad esempio -r3 vengono prescritti tre tentativi di lettura:

sudo ddrescue -f -d -n /dev/sda /dev/sdX /home/user/Desktop/ddrescue.log
sudo ddrescue -f -d -r3 /dev/sda /dev/sdX /home/user/Desktop/ddrescue.log

A ddrescue è possibile anche chiedere di leggere i dati dalla fine dell’unità sorgente: ciò è utile allorquando gli errori di lettura, difficili da superare, si concentrassero nella prima parte del supporto. Lo si fa aggiungendo semplicemente l’opzione -R nel comando: in questo caso, però, non è più possibile usare un’unità di destinazione di dimensioni inferiori a quella sorgente.

Con qualunque supporto di memorizzazione può accadere che ddrescue si blocchi per diversi minuti nel tentativo di leggere i dati e recuperare quante più informazioni possibili. L’utilità conclude molto più rapidamente il suo lavoro se le si chiede di non indugiare troppo sui blocchi illeggibili: impartendo la semplice configurazione che segue dalla finestra del terminale Linux, ddrescue porterà da 180 a 18 secondi il tempo massimo per leggere i dati da ciascun blocco:

echo -n "2" >/sys/block/sdf/device/eh_timeout
echo -n "3" >/sys/block/sdf/device/timeout

Questo tipo di approccio è utile anche per non stressare troppo un’unità sorgente che risultasse danneggiata aumentando le probabilità di perdere i dati. Ovviamente, non bisogna mai effettuare operazioni di scrittura sull’unità di origine, è importante utilizzare un file di log affinché vengano annotate le informazioni sul processo di recupero, verificare l’integrità dei dati dopo aver completato il processo di recupero e infine conservare l’unità originale qualora si ritenesse opportuno svolgere ulteriori tentativi di recupero o di analisi dei dati.

Importante anche è evitare l’utilizzo di strumenti come chkdsk sui dischi danneggiati: si darebbe la “mazzata finale” all’unità e si rischierebbe di compromettere, spesso anche definitivamente, l’integrità dei dati ivi memorizzati.

Suggeriamo anche la lettura della guida a ddrescue per il recupero dati: si tratta di un documento non ufficiale che offre ulteriori spunti interessanti.

In un altro nostro articolo abbiamo visto come riparare gli hard disk: ddrescue, tuttavia, funziona con qualunque unità di memorizzazione, comprese le unità SSD e in generale le memorie flash.

Ti consigliamo anche

Link copiato negli appunti