ddrescue
ddrescue je program na kopírování dat. Jeho výhodou je, že je optimalizovaný na čtení dat z poškozených nebo jinak nečitelných médií, u kterých ostatní nástroje oznámí chybu a končí.
Instalace
Nainstalujte balík gddrescue.
Spuštění
Program se spouští z terminálu např. pomocí příkazu
sudo ddrescue /dev/sda1 sda1.img sda1.log
pokud chci kopírovat oddíl /dev/sda1 do jeho obrazu (souboru) sda1.img, průběžné výsledky se ukládají do pomocného souboru (logu) sda1.log.
Jak to funguje
Pokud zjistíme, že je datové médium poškozené, je prvním krokem pro záchranu pokus získat co nejvíce původních dat. Klasické způsoby kopírování zde obvykle nefungují, protože pokud se narazí na chybu, dojde k ukončení kopírování, nebo nekonečným pokusům číst z poškozeného místa. V takovém případě můžeme získat jen zlomek dat, nebo přetěžováním média situaci ještě zhoršit.
ddrescue je nastaveno tak, že v prvním běhu (pass) zkopíruje nejdřív data, která jsou lehce dostupná, a pokud narazí na chybu, zaznamená ji do logu, a daný úsek velkým obloukem přeskočí. Vynechanou část při dalších bězích postupně dělí na menší a menší úseky a snaží se tak zachránit co se dá.
Důležité zásady
- nikdy neukládejte obraz a logy na poškozený disk, oddíl apod.
- zdrojový i cílový disk před kopírováním vždy odpojte
- v příkazu vždy uvádějte .log soubor - uložené informace podstatně zrychlují běh programu a odstraňují zbytečné namáhání disku
- pokud se snažíte zachraňovat data, použijte příkaz ddrescue jako první a další pokusy již provádějte na vytvořené kopii, ne na poškozeném disku
Příklady
Kopírování dat z poškozeného disku
sudo ddrescue -n /dev/sda sda.img sda.log sudo ddrescue -r3 /dev/sda sda.img sda.log
Poškozen je disk označen jako /dev/sda. Kopie disku uložená jako image (obraz) je v aktuálním adresáři, který by měl být na jiném disku než sda.
První příkaz čte z disku ve velkých blocích a nevrací se na místa, kde narazil na problémy (volba -n - no-trimming). Výsledný obraz sda.img je stejně velký jako původní disk - vynechaná místa jsou vyplněna nulami.
Druhý příkaz přečte záznam prvního běhu uložený v sda.log a soustředí se jen na nezkopírované části. Ty rozděluje na menší a menší bloky až narazí na hardwarový strop (sektor, obvykle 512 bytů). V případě chyby zkouší číst z bloku maximálně 3x (volba -r3).
Výsledný obraz je možné archivovat, použít jako zálohu, opravit pomocí dalších nástrojů. Bližší informace najdete na Záchrana dat.
Kopírovat je možné i přímo na jiný disk odpovídající velikosti (zde /dev/sdb), případně oddíl na jiný oddíl, oddíl do souboru atd.
sudo ddrescue -f -n /dev/sda /dev/sdb sda.log sudo ddrescue -f -r3 /dev/sda /dev/sdb sda.log
Záchrana dat z CD/DVD
ddrescue -b2048 -r -1 /dev/cdrom backup.iso cd.log
Uloží obraz disku z poškozeného CD (nelze použít na Audio CD!). Velikost sektoru 2048 (typická pro CD). Zkouší číst poškozené sektory donekonečna (volba -r -1), program se ukončuje stisknutím Ctrl - c. Výsledný obraz je možné otevřít kliknutím v Nautilu nebo vypálit na nové CD.
Příklad výstupu
Pokus o záchranu dat z poškozeného CD. V prvním běhu vynecháno 165kB dat (errsize). V druhém běhu už jen 31kB. Úměrně tomu se zvedl počet úspěšně zkopírovaných bytů (rescued) z 184 242 na 184 377.
arrange@arrange-desktop:~/tmp$ ddrescue -n -b2048 /dev/cdrom backup.iso b.log Press Ctrl-C to interrupt Initial status (read from logfile) rescued: 0 B, errsize: 0 B, errors: 0 Current status rescued: 184242 kB, errsize: 165 kB, current rate: 36864 B/s ipos: 1226 kB, errors: 4, average rate: 856 kB/s opos: 1226 kB, time from last successful read: 0 s Finished arrange@arrange-desktop:~/tmp$ ddrescue -b2048 /dev/cdrom backup.iso b.log Press Ctrl-C to interrupt Initial status (read from logfile) rescued: 184242 kB, errsize: 165 kB, errors: 4 Current status rescued: 184377 kB, errsize: 30720 B, current rate: 45056 B/s ipos: 184403 kB, errors: 8, average rate: 12288 B/s opos: 184403 kB, time from last successful read: 0 s Finished
Vzniklý soubor logu b.log:
# Rescue Logfile. Created by GNU ddrescue version 1.11 # current_pos current_status 0x0AFDD000 + # pos size status 0x00000000 0x0012B000 + 0x0012B000 0x00001000 - 0x0012C000 0x00D2E000 + 0x00E5A000 0x00001000 - 0x00E5B000 0x008C9000 + 0x01724000 0x00002000 - 0x01726000 0x098B6000 + 0x0AFDC000 0x00001800 -
První sloupec označuje pozici v souboru od začátku. Druhý velikost bloku. Třetí stav bloku (+ - vše zkopírováno; - - vynecháno).
Alternativy
Odstranění
Odeberte balík gddrescue
.