|
Dimensione: 5034
Commento:
|
← Versione 22 del 05/12/2025 18.16.01 ⇥
Dimensione: 9165
Commento: +revisione_pagina; +versioni_supportate
|
| Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
| Linea 1: | Linea 1: |
| ## page was renamed from GiuseppeTerrasi/Prove10 | |
| Linea 3: | Linea 4: |
| [[Indice(depth=1)]] [[Informazioni(rilasci="10.10 10.04 9.10 8.04"; forum="http://forum.ubuntu-it.org/index.php/topic,430020")]] |
<<Indice(depth=2)>> <<BR>> <<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?t=430020";rilasci="24.04 22.04 20.04 18.04 16.04 14.04")>> |
| Linea 8: | Linea 10: |
| In questo documento verrà mostrato come creare un immagine di un dispositivo danneggiato e come estrarre i dati dall'immagine stessa. | Questa guida illustra gli strumenti dedicati alla creazione di immagini (clonazione) di un disco rigido o di altri supporti di archiviazione danneggiati e le procedure per estrarne i dati. |
| Linea 10: | Linea 12: |
| = Creare un immagine di un dispositivo = | Tutti i comandi mostrati in questa guida devono essere eseguiti nel [[AmministrazioneSistema/Terminale|terminale]]. |
| Linea 12: | Linea 14: |
| Per ottenere l'immagine di un dispositivo danneggiato, in preparazione del salvataggio dei file, è disponibile il programma '''GNU ddrescue''' [:AmministrazioneSistema/InstallareProgrammi:installabile] tramite il pacchetto [apt://gddrescue gddrescue]. In seguito il suo comando sarà ''ddrescue''. | = Creazione copia disco rigido di lavoro = |
| Linea 14: | Linea 16: |
| Per una breve panoramica delle sue funzionalità e per approfondimenti si invita alla lettura del [http://www.gnu.org/software/ddrescue/ddrescue_it.html seguente documento]. | Prima di procedere, è fondamentale [[Hardware/DispositiviPartizioni/IndividuarePartizioni#parted|individuare]] e annotare l'identificativo, le partizioni e i file system del disco rigido da recuperare, nonché l'identificativo del disco rigido usato per il salvataggio. |
| Linea 16: | Linea 18: |
| ||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5%>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''Si tenga presente che i filesystem di tipo [:Hardware/DispositiviPartizioni/MontarePartizioni/Fat:Fat] dispongono di un limite di 4GiB alla dimensione di ciascun file. Tipicamente le unità USB utilizzano questo tipo di filesystem. Se si è a conoscenza che l'immagine finale sarà superiore a tale dimensione è necessario utilizzare filesystem che supporti capacità superiori per il singolo file come ad esempio [:Hardware/DispositiviPartizioni/MontarePartizioni/Ext3:Ext3] o altri.'' || * Per utilizzare '''GNU ddrescue''' digitare in una finestra di terminale un comando avente la seguente sintassi: {{{ ddrescue [options] partizione_da_recuperare destinazione_immagine destinazione_file_di_log }}} * Quindi, ad esempio il seguente comando {{{ sudo ddrescue -r 3 /dev/sda /media/usbdrive/image /media/usbdrive/logfile }}} recupererà l'immagine dal dispositivo `dev/sda` e la salverà in `/media/usbdrive/image`. Inoltre, creerà un file di log in `/media/usbdrive/logfile`. L'opzione `-r 3` rappresenta il numero di tentativi di lettura che ''ddrescue'' eseguirà qualora incontri degli errori. `-1` invita il programma ad eseguire un numero infinito di tentativi. * Il passo successivo potrebbe essere: {{{ sudo ddrescue -r 3 -C /dev/sda /media/usbdrive/image /media/usbdrive/logfile }}} dove rispetto al precedente è stata aggiunta l'opzione `-C` che invita il programma circoscrivere la lettura all'interno dei file già presenti nel registro (file di log) creato in precedenza. Un [http://www.forensicswiki.org/wiki/Ddrescue noto sito] di analisi forense consiglia la seguente procedura: * Creare un immagine copiando all'interno di essa più dati possibili, senza contiere tentativi di lettura nel caso si incontrino degli errori (opzione `-n`): {{{ ddrescue -n /dev/hda1 imagefile logfile * Riprovare andando più a fondo riprovando 3 volte in presenza di errori di lettura: {{{ ddrescue -d -r 3 /dev/hda1 imagefile logfile }}} * Se il comando precedente fallisce riprovare leggendo i settori integralmente: {{{ ddrescue -d -R -r 3 /dev/hda1 imagefile logfile |
{{{#!wiki note Entrambi gli strumenti seguenti per essere eseguiti richiedono una quantità di tempo più o meno cospicua, in funzione e dipendenza della dimensione del disco da recuperare e delle prestazioni del proprio computer. |
| Linea 38: | Linea 22: |
| [[Anchor(estrarre)]] | {{{#!wiki note Prima di proseguire, si noti che i filesystem di tipo [[http://it.wikipedia.org/wiki/File_Allocation_Table|Fat]] dispongono di un limite di 4GiB per la dimensione massima dei file. Tipicamente le unità USB utilizzano questo tipo di filesystem. Se si è a conoscenza che l'immagine finale sarà superiore a tale dimensione è necessario utilizzare dei filesystem che supportino capacità superiori per il singolo file (ad esempio, [[http://it.wikipedia.org/wiki/Ext4|Ext4]] o altri). }}} == Tramite dd == '''dd''' è uno strumento a [[AmministrazioneSistema/Terminale|riga di comando]], utilizzato per copiare e convertire file. È preinstallato in '''Ubuntu''' tramite il pacchetto [[apt://coreutils|coreutils]]. {{{#!wiki note Per approfondire l'argomento consultare la [[#ur|pagina man]]. }}} Per eseguire la copia del disco, digitare il comando:{{{ sudo dd if=/dev/sdx of=/dev/sdy bs=1M status=progress }}}Sostituire `/dev/sdx` con l'identificativo del disco sorgente e `/dev/sdy` con l'identificativo del disco di destinazione. L'opzione `status=progress` permette di visualizzare l'avanzamento della copia. {{{#!wiki important Il comando '''dd''' non chiede conferme. Assicurarsi che `of=` (output file) punti al dispositivo corretto, poiché i dati presenti su di esso verranno irrimediabilmente sovrascritti. }}} == Tramite ddrescue == '''GNU ddrescue''' è uno strumento progettato per copiare dati da un file o dispositivo a blocchi (hard disk, cdrom, ecc.) a un altro, cercando di recuperare i dati in caso di errori di lettura (settori danneggiati). {{{#!wiki note Per una breve panoramica delle sue funzionalità e per approfondimenti, si invita alla lettura del [[http://www.gnu.org/software/ddrescue/ddrescue_it.html|seguente documento]], nonché della relativa [[#ur|pagina man]]. }}} === Installazione ddrescue === Se non presente o se si è su [[Installazione/CdMinimale|sistema minimale]], installare il pacchetto [[apt://gddrescue|gddrescue]]. {{{#!wiki note È consigliabile creare un file immagine su un disco esterno (montato ad esempio in `/media/backup`), piuttosto che clonare direttamente disco-su-disco, per avere maggiore flessibilità. }}} === Utilizzo === 0. Copiare da disco a disco creando il file `log` contenente una lista spropositata degli errori trovati, digitando il comando:{{{ ddrescue -n /dev/sdx /dev/sdy listaerrori.log }}} 0. Copiare da disco a disco creando il file `log` contenente gli errori corretti, digitando il comando:{{{ ddrescue -r 3 /dev/sdx /dev/sdy cosariparato.log }}} 0. Copiare da disco a disco creando il file `log` contenente gli errori corretti, limitando la lettura all'interno dei file già listati nel file `log` precedentemente creato, digitando il comando:{{{ ddrescue -r 3 -C /dev/sdx /dev/sdy cosariparato.log }}} {{{#!wiki note Sostituire `/dev/sdx` con l'identificativo del disco da copiare e `/dev/sdy` con l'identificativo del disco su cui copiare. }}} === Procedura consigliata === La procedura standard prevede due passaggi: il recupero rapido delle parti sane e successivamente il tentativo di recupero dei settori danneggiati. 0. '''Primo passaggio (recupero veloce)''': Copiare quanti più dati possibili senza tentare di recuperare i settori danneggiati, salvando un file di mappa (logfile). Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{ sudo ddrescue -n /dev/sdx /media/backup/nome_immagine /media/backup/mappa.log }}}Sostituire `/dev/sdx` con l'identificativo del disco sorgente. 0. '''Secondo passaggio (recupero approfondito)''': Riprovare a leggere solo i settori che hanno dato errore nel passaggio precedente, utilizzando l'accesso diretto al disco (`-d`) e tentando la rilettura per 3 volte (`-r 3`). Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{ sudo ddrescue -d -r 3 /dev/sdx /media/backup/nome_immagine /media/backup/mappa.log }}}Sostituire `/dev/sdx` con l'identificativo del disco sorgente. 0. Se il comando precedente fallisce riprovare leggendo i settori integralmente:{{{ sudo ddrescue -d -M -r 3 /dev/sdx /media/backup/nome_immagine /media/backup/mappa.log }}} {{{#!wiki note Il file di mappa (`mappa.log`) è essenziale, permette di interrompere e riprendere il recupero in qualsiasi momento senza ricominciare da capo. }}} <<Anchor(estrarre)>> |
| Linea 41: | Linea 94: |
| Dopo avere creato l'immagine del dispositivo è necessario concentrarsi sul recupero dei dati presenti sull'immagine stessa. Qualora il filesystem non è recuperabile, è possibile comunque tentare di recuperare i singoli file. | Una volta creata l'immagine del dispositivo, è possibile accedere ai dati contenuti in essa montando le partizioni virtuali. |
| Linea 43: | Linea 96: |
| == Montare le partizioni sull'immagine == | == Metodo automatico == |
| Linea 45: | Linea 98: |
| Se è stato recuperato l'intero disco, è possibile montare le singole partizioni "in loop" sull'immagine utilizzando l'opzione "Offset". '''mmls''', [:AmministrazioneSistema/InstallareProgrammi:installabile] dal pacchetto [apt://sleuthkit sleuthkit] è in grado di mostrare le partizioni che si trovano all'interno dell'immagine: {{{ mmls file -b |
Le versioni recenti di Ubuntu permettono di associare automaticamente le partizioni contenute in un'immagine ai dispositivi di loop. 0. Associare l'immagine a un dispositivo loop ed eseguire la scansione delle partizioni:{{{ sudo losetup -fP --show /media/backup/nome_immagine }}}Il comando restituirà il nome del dispositivo loop utilizzato, ad esempio `/dev/loop0`. Grazie all'opzione `-P`, verranno creati automaticamente i device per le partizioni (es. `/dev/loop0p1`, `/dev/loop0p2`). 0. Montare la partizione desiderata (es. la prima partizione):{{{ sudo mount /dev/loop0p1 /mnt }}}Ora i file sono accessibili nella cartella `/mnt`. 0. Al termine delle operazioni, smontare la partizione e liberare il dispositivo loop:{{{ sudo umount /mnt sudo losetup -d /dev/loop0 }}} == Metodo manuale == Se il metodo automatico non dovesse funzionare, è possibile individuare manualmente l'inizio delle partizioni. === Individuare le partizioni nell'immagine === È possibile utilizzare: * '''fdisk'''. * '''mmls''' (dalla suite [[AmministrazioneSistema/RecuperoDati/Sleuthkit&Autopsy|SleuthKit]]) per leggere la tabella delle partizioni all'interno dell'immagine. Esempio con '''mmls''', per listare le partizioni contenute nel file immagine, digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{ mmls nome_immagine -B }}} {{{#!wiki note Per approfondire l'uso del programma consultare la [[#ur|pagina man]]. }}} L'output mostrerà una tabella simile alla seguente:{{{ |
| Linea 56: | Linea 139: |
| }}}Annotare il settore di inizio (`Start`) e la dimensione del settore (solitamente 512 byte). == Montare le partizioni nell'immagine == Per montare le singole partizioni individuate nel file immagine, occorre usare il comando '''mount''' congiuntamente alle opzioni '''loop''' e '''offset''' del comando '''losetup'''. È necessario calcolare l'offset in byte, `Start * Dimensione Settore = Offset`. Nell'esempio sopra: 32 * 512 = 16384. Montare l'immagine specificando l'offset calcolato:{{{ sudo mount -o loop,offset=16384 nome_immagine /mnt |
|
| Linea 58: | Linea 149: |
| Il programma mostra più partizioni. In questo esempio, volendo montare la partizione DOS a partire dal blocco 32 (terza riga nell'esempio mostrato) bisognerà calcolare il numero di byte moltiplicando per 512 (1 blocco è uguale 512 byte). In questo caso 32 * 512 = 16384 sarà il byte di inizio della partizione. Quindi montare l'immagine: {{{ sudo mount -o loop,offset=16384 file mnt |
Se si tratta di una partizione NTFS, potrebbe essere necessario specificare il tipo di filesystem:{{{ sudo mount -t ntfs -o loop,offset=32256 nome_immagine /mnt }}}dove 32256 deriva da: blocco 63 * 512 byte. {{{#!wiki note Per approfondire il comando `mount` consultare la rispettiva [[#ur|pagina man]]. |
| Linea 62: | Linea 157: |
| Per montare una tipica partizione NTFS creata da Windows usare: {{{ sudo mount -t ntfs -o r,force,loop,offset=32256 file mnt }}} dove 63 * 512 byte = 32256 |
<<Anchor(ur)>> |
| Linea 68: | Linea 160: |
| * [http://manpages.ubuntu.com/manpages/maverick/en/man1/ddrescue.1.html Pagina man ddrescue] * [http://www.sleuthkit.org/sleuthkit/man/mmls.html Pagina man mmls] |
* [[http://manpages.ubuntu.com/manpages/jammy/en/man1/dd.1.html|Pagina man dd]] * [[http://manpages.ubuntu.com/manpages/jammy/en/man1/ddrescue.1.html|Pagina man ddrescue]] * [[http://manpages.ubuntu.com/manpages/jammy/en/man8/mount.8.html|Pagina man mount]] * [[http://manpages.ubuntu.com/manpages/jammy/en/man8/losetup.8.html|Pagina man losetup]] * [[http://manpages.ubuntu.com/manpages/jammy/en/man1/mmls.1.html|Pagina man mmls]] |
| Linea 72: | Linea 167: |
| CategoryHomepage | CategoryAmministrazione |
Guida verificata con Ubuntu: 22.04 24.04
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
Questa guida illustra gli strumenti dedicati alla creazione di immagini (clonazione) di un disco rigido o di altri supporti di archiviazione danneggiati e le procedure per estrarne i dati.
Tutti i comandi mostrati in questa guida devono essere eseguiti nel terminale.
Creazione copia disco rigido di lavoro
Prima di procedere, è fondamentale individuare e annotare l'identificativo, le partizioni e i file system del disco rigido da recuperare, nonché l'identificativo del disco rigido usato per il salvataggio.
Entrambi gli strumenti seguenti per essere eseguiti richiedono una quantità di tempo più o meno cospicua, in funzione e dipendenza della dimensione del disco da recuperare e delle prestazioni del proprio computer.
Prima di proseguire, si noti che i filesystem di tipo Fat dispongono di un limite di 4GiB per la dimensione massima dei file. Tipicamente le unità USB utilizzano questo tipo di filesystem. Se si è a conoscenza che l'immagine finale sarà superiore a tale dimensione è necessario utilizzare dei filesystem che supportino capacità superiori per il singolo file (ad esempio, Ext4 o altri).
Tramite dd
dd è uno strumento a riga di comando, utilizzato per copiare e convertire file. È preinstallato in Ubuntu tramite il pacchetto coreutils.
Per approfondire l'argomento consultare la pagina man.
Per eseguire la copia del disco, digitare il comando:
sudo dd if=/dev/sdx of=/dev/sdy bs=1M status=progress
Sostituire /dev/sdx con l'identificativo del disco sorgente e /dev/sdy con l'identificativo del disco di destinazione. L'opzione status=progress permette di visualizzare l'avanzamento della copia.
Il comando dd non chiede conferme. Assicurarsi che of= (output file) punti al dispositivo corretto, poiché i dati presenti su di esso verranno irrimediabilmente sovrascritti.
Tramite ddrescue
GNU ddrescue è uno strumento progettato per copiare dati da un file o dispositivo a blocchi (hard disk, cdrom, ecc.) a un altro, cercando di recuperare i dati in caso di errori di lettura (settori danneggiati).
Per una breve panoramica delle sue funzionalità e per approfondimenti, si invita alla lettura del seguente documento, nonché della relativa pagina man.
Installazione ddrescue
Se non presente o se si è su sistema minimale, installare il pacchetto gddrescue.
È consigliabile creare un file immagine su un disco esterno (montato ad esempio in /media/backup), piuttosto che clonare direttamente disco-su-disco, per avere maggiore flessibilità.
Utilizzo
Copiare da disco a disco creando il file log contenente una lista spropositata degli errori trovati, digitando il comando:
ddrescue -n /dev/sdx /dev/sdy listaerrori.log
Copiare da disco a disco creando il file log contenente gli errori corretti, digitando il comando:
ddrescue -r 3 /dev/sdx /dev/sdy cosariparato.log
Copiare da disco a disco creando il file log contenente gli errori corretti, limitando la lettura all'interno dei file già listati nel file log precedentemente creato, digitando il comando:
ddrescue -r 3 -C /dev/sdx /dev/sdy cosariparato.log
Sostituire /dev/sdx con l'identificativo del disco da copiare e /dev/sdy con l'identificativo del disco su cui copiare.
Procedura consigliata
La procedura standard prevede due passaggi: il recupero rapido delle parti sane e successivamente il tentativo di recupero dei settori danneggiati.
Primo passaggio (recupero veloce): Copiare quanti più dati possibili senza tentare di recuperare i settori danneggiati, salvando un file di mappa (logfile). Digitare nel terminale il seguente comando:
sudo ddrescue -n /dev/sdx /media/backup/nome_immagine /media/backup/mappa.log
Sostituire /dev/sdx con l'identificativo del disco sorgente.
Secondo passaggio (recupero approfondito): Riprovare a leggere solo i settori che hanno dato errore nel passaggio precedente, utilizzando l'accesso diretto al disco (-d) e tentando la rilettura per 3 volte (-r 3). Digitare nel terminale il seguente comando:
sudo ddrescue -d -r 3 /dev/sdx /media/backup/nome_immagine /media/backup/mappa.log
Sostituire /dev/sdx con l'identificativo del disco sorgente.
Se il comando precedente fallisce riprovare leggendo i settori integralmente:
sudo ddrescue -d -M -r 3 /dev/sdx /media/backup/nome_immagine /media/backup/mappa.log
Il file di mappa (mappa.log) è essenziale, permette di interrompere e riprendere il recupero in qualsiasi momento senza ricominciare da capo.
Estrarre i dati da un immagine
Una volta creata l'immagine del dispositivo, è possibile accedere ai dati contenuti in essa montando le partizioni virtuali.
Metodo automatico
Le versioni recenti di Ubuntu permettono di associare automaticamente le partizioni contenute in un'immagine ai dispositivi di loop.
Associare l'immagine a un dispositivo loop ed eseguire la scansione delle partizioni:
sudo losetup -fP --show /media/backup/nome_immagine
Il comando restituirà il nome del dispositivo loop utilizzato, ad esempio /dev/loop0. Grazie all'opzione -P, verranno creati automaticamente i device per le partizioni (es. /dev/loop0p1, /dev/loop0p2).
Montare la partizione desiderata (es. la prima partizione):
sudo mount /dev/loop0p1 /mnt
Ora i file sono accessibili nella cartella /mnt.
Al termine delle operazioni, smontare la partizione e liberare il dispositivo loop:
sudo umount /mnt sudo losetup -d /dev/loop0
Metodo manuale
Se il metodo automatico non dovesse funzionare, è possibile individuare manualmente l'inizio delle partizioni.
Individuare le partizioni nell'immagine
È possibile utilizzare:
fdisk.
mmls (dalla suite SleuthKit) per leggere la tabella delle partizioni all'interno dell'immagine.
Esempio con mmls, per listare le partizioni contenute nel file immagine, digitando nel terminale il seguente comando:
mmls nome_immagine -B
Per approfondire l'uso del programma consultare la pagina man.
L'output mostrerà una tabella simile alla seguente:
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors
Slot Start End Length Size Description
00: ----- 0000000000 0000000000 0000000001 0512B Primary Table (#0)
01: ----- 0000000001 0000000031 0000000031 0015K Unallocated
02: 00:01 0000000032 0001646591 0001646560 0803M DOS FAT16 (0x06)
03: 00:00 0001646592 0002013183 0000366592 0179M DOS FAT16 (0x06)Annotare il settore di inizio (Start) e la dimensione del settore (solitamente 512 byte).
Montare le partizioni nell'immagine
Per montare le singole partizioni individuate nel file immagine, occorre usare il comando mount congiuntamente alle opzioni loop e offset del comando losetup. È necessario calcolare l'offset in byte, Start * Dimensione Settore = Offset. Nell'esempio sopra: 32 * 512 = 16384.
Montare l'immagine specificando l'offset calcolato:
sudo mount -o loop,offset=16384 nome_immagine /mnt
Se si tratta di una partizione NTFS, potrebbe essere necessario specificare il tipo di filesystem:
sudo mount -t ntfs -o loop,offset=32256 nome_immagine /mnt
dove 32256 deriva da: blocco 63 * 512 byte.
Per approfondire il comando mount consultare la rispettiva pagina man.
