====== ddrescue ======
{{.:disk.png}} **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 ======
{{.:apt.png}} [[Instalace programů|Nainstalujte]] balík [[apt://gddrescue|gddrescue]].
====== Spuštění ======
{{.:navigate.png}} Program se spouští z [[Terminál|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 [[Nautilus|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 ======
* [[Partimage]]
* [[http://www.grc.com/sr/spinrite.htm|Spinrite]] - komerční
====== Odstranění ======
{{.:clear.png}} [[Instalace programů|Odeberte]] balík ''gddrescue''.
====== Odkazy ======
* [[http://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html|podrobný manuál]] {{.:en.png}}
* [[http://wiki.lunarsoft.net/wiki/Data_Recovery#ddrescue|příklady využití při záchraně dat]] {{.:en.png}}
* [[http://www.root.cz/clanky/nova-softwarova-sklizen-18-5-2005/#ddrescue|česky prakticky nic ;(]]