Záchrana dat z poškozeného flask disku

Poškozený souborový systém a následná ztráta dat jsou noční můrou mnoha uživatelů. Situace naštěstí v mnoha případech je řešitelná. Pomůže nám několik open source nástrojů.

Dostal se ke mně poškozený USB flash disk se zoufalou prosbou o záchránu dat na něm.

Jak v takovém případě postupovat?

Disk jsem nejdřív zkusil připojit a zobrazit. Mezi připojenými zařízeními se ale neukázal a po vypsání dmesg bylo jasno proč:

[96376.653503] blk_update_request: I/O error, dev sdb, sector 7807
[96376.653508] Buffer I/O error on dev sdb1, logical block 7744, async page read

Elektronika disku je tedy v pořádku, ale chip obsahuje vadné sektory.

Nejlepším postupem je v takovém případě obsah celého disku zkopírovat přes dd na disk počítače a dál pracovat tam. dd si ale neporadí s IO chybami, a proto je lepší použit ddrescue:

ddrescue /dev/sdb1 ~/broken-usb.img ~/broken-usb.log

Po několika hodinách (a několika opakovaných spuštěních) bylo konečně hotovo (zkopírováno 99,99%).

Výsledný obraz jsem zkusil opravit přes fsck:

# dosfsck -a -t -w ./broken-usb.img
fsck.fat 4.0 (2016-05-06)
Logical sector size (44880 bytes) is not a multiple of the physical sector size.

Ten si ale s obrazem nedokázal poradit, možná kvůli pokaženému superblocku?

Po chvíli hledání jsem narazil na nástroj TestDisk/PhotoRec, který si poradí téměř s čímkoliv.

PhotoRec hledá různé soubory přímo binárně podle obsahu, nehledí na souborové systémy. Dokáže najít a obnovit obrázky, dokumenty, videa a archivy.

TestDisk se zase snažit obnovit poškozené a smazané oddíly a poškozené a smazané soubory na nich.

Záchrana dat je pak díky nim jen otázkou pár kliknutí:

photorec broken-usb.img
testdisk broken-usb.img

Hodnocení

Komentáře

Komentáře již nelze přidávat