Odpověď hned: Z disku, který hlásí chyby čtení, se nekopírují soubory a nepouští se na něj obyčejné
dd— obojí čte sekvenčně a při každé chybě se zasekne přesně tam, kde disk trpí nejvíc. GNU ddrescue postupuje obráceně: nejdřív velkými bloky posbírá vše, co jde přečíst rychle, vadné a pomalé oblasti přeskočí a vrací se k nim až nakonec po jednotlivých sektorech. Stav práce si vede v mapfile, takže po přerušení naváže, kde skončil, místo aby disk projížděl znovu od nuly. Platí to jen pro disk s vadnými sektory: disk, který cvaká, mizí ze systému nebo s každým průchodem přidává chyby, ddrescue dorazí — ten patří do laboratoře s hardwarovým imagerem.
Obecný postup pro poškozený HDD (vypnout, neformátovat, neopravovat) máme v článku Jak dostat data z poškozeného HDD. Tenhle text je jeho technický doplněk pro čtenáře s Linuxem po ruce: co přesně ddrescue s diskem dělá, proč mu pořadí čtení prodlužuje život a kde je hranice, za kterou je každý další příkaz škoda. Tvrzení o chování programu jsou ověřená proti manuálu GNU ddrescue verze 1.30 z 1. ledna 2026.
Proč se z vadného disku nekopírují soubory ani nepouští dd
Kopírování přes průzkumník nebo cp nechává pořadí čtení na souborovém systému: skáče po plotně tam, kde leží další fragment souboru, na prvním nečitelném sektoru se zasekne, systém čtení mnohokrát opakuje a vy nevíte, kolik z disku už máte. Každý pokus je práce hlav přesně na místě, které disk zvládá nejhůř.
dd je na tom jinak, ale ne lépe. Manuál ddrescue to říká bez obalu: dd čte sekvenčně, a pokud jsou chyby na začátku disku, může ho opotřebovat, aniž by cokoli zachránilo. Programy, které při chybě přepnou na malé bloky a zůstanou v chybové oblasti, jsou podle manuálu ještě horší — tráví nejvíc času tam, kde se poškozuje povrch, hlavy i mechanika.
ddrescue s dd nesdílí kód, jen účel. Jeho princip: dobré části nejdřív, čtení uvnitř vadných nebo pomalých oblastí odložit. Verze před 1.19 používaly strategii „rozděl a panuj”, která znamenala hodně pohybu hlav; novější verze ho záměrně minimalizují, protože každý přejezd nad poškozeným místem disk ubírá. A dvě vlastnosti, na kterých stojí použitelnost výsledku: na místa vadných sektorů ddrescue nic nezapisuje (v nově vytvořeném souboru zůstanou nuly) a výstup nezkracuje — každé další spuštění nad stejným obrazem jen doplňuje mezery a nikdy nemaže, co už bylo zachráněno.
Pět fází ddrescue: co dělá a proč v tomhle pořadí
Aktuální verze pracuje v pěti fázích (starší popisy, včetně našeho článku o vadných sektorech, mluví o dvou — zjednodušení). Sektory postupně dostávají stavy non-tried → non-trimmed → non-scraped → bad-sector, dokud nejsou přečteny a označeny jako hotové.
| Fáze | Co dělá | Proč právě takhle |
|---|---|---|
| 1. Copying (až 4 průchody) | Čte nezkoušené oblasti velkými bloky; při chybě nebo pomalém čtení skočí dál, směr po každém průchodu obrátí. Průchody 3 a 4 se vracejí k oblastem přeskočeným pro pomalost. | Rychle vymezit velké vady, sebrat nejslibnější data první a připravit výchozí body pro další fáze. |
| 2. Trimming | Po sektorech čte od okrajů neúspěšných bloků dovnitř, dokud nenarazí na vadný sektor. | Okraje vad mají vysokou šanci na čitelná data; manuál nedoporučuje fázi vypínat. |
| 3. Sweeping | Bez přeskakování projde oblasti, které copying vynechal kvůli chybám. | U dobře ohraničených vad má malou šanci, proto běží až po trimmingu. -N ji vypne (disk s mrtvou hlavou). |
| 4. Scraping | Sektor po sektoru seškrabává zbytek. | Nejpomalejší a pro disk nejtěžší práce jde nakonec; -n ji přeskočí. |
| 5. Retrying | Znovu zkouší vadné sektory; počet průchodů udává -r, směr se střídá. | ddrescue neumí poznat, zda je vadný sektor nenávratný, nebo se po pár pokusech přečte. |
Detail důležitý pro šetření disku: bez -r zkouší ddrescue každý sektor nejvýš dvakrát — jednou v rámci velkého bloku (copying, sweeping), podruhé samostatně (trimming, scraping). Další pokusy přidává až retrying, jeden na průchod. Mlácení do jednoho sektoru nastane jen tehdy, když si ho sami vyžádáte.
Mapfile: proč se nesmí začít od začátku
Mapfile je textový soubor (do verze 1.20 se jmenoval logfile): hlavička s příkazem a časem, stavový řádek s aktuální pozicí, fází a číslem průchodu, a seznam bloků se stavem ? nezkoušený, * neořezaný, / neseškrábaný, - vadný sektor, + hotový. ddrescue ho ukládá průběžně — podle jeho velikosti každých 30 sekund až 5 minut (--mapfile-interval), při ukončení i při přerušení Ctrl-C — a vedle něj drží zálohu .bak.
Bez mapfile ddrescue neumí v záchraně pokračovat, jen ji začít znovu. To je jádro titulku: po každém přerušení, výpadku USB nebo restartu se disk čte znovu od nuly, hlavy znovu projíždějí už zachráněné oblasti a všechny přeskočené vady se hledají podruhé. Manuál k tomu dodává: pokaždé, když se fyzicky poškozený disk roztočí a ještě něco vydá, může to být naposledy. Se stavovým řádkem naopak ddrescue naváže uvnitř rozdělané fáze — neopakuje ani první průchod copyingu.
Tři pravidla:
- Mapfile patří na třetí médium — ne na zachraňovaný disk, ne na přepisovaný cíl; manuál žádá běžný soubor v existujícím adresáři. Dojde-li místo, ddrescue nabídne nouzové uložení do
ddrescue.mapv aktuálním nebo domovském adresáři. - Nikdy nepodstrkujte mapfile z jiné záchrany — ddrescue by věřil, že části disku už má.
- Jeden mapfile snese víc příkazů nad různými oblastmi téhož disku: začátek disku, pak vybrané oblasti, nakonec zbytek. Nic hotového se nečte dvakrát.
Kam kopírovat: obraz .img, nebo disk na disk
Obraz do souboru je bezpečnější pro většinu případů. Cílový souborový systém musí unést soubor o velikosti celého disku (FAT32 končí na 4 GiB; NTFS, exFAT ani ext4 problém nemají) a mít tolik místa; -p ho předalokuje, aby záchrana neskončila v půlce. Z obrazu se dělá pracovní kopie — manuál radí první kopii držet jako master a opravovat až druhou.
Disk na disk má smysl, když obraz nemá kam se vejít nebo chcete zachráněný disk rovnou používat. Cíl musí být aspoň tak velký jako zdroj a cokoli na něm bude přepsáno; proto ddrescue u zařízení vyžaduje -f jako pojistku proti překlepu. Méně známé: v místech vadných sektorů zůstane na cíli to, co tam bylo předtím — u použitého disku cizí data. Chcete-li čistou kopii, cíl předem vynulujte.
Příkazy krok za krokem
Na Debianu a Ubuntu se balíček jmenuje gddrescue, protože jméno ddrescue měl dřív obsazené jiný program (dd_rescue Kurta Garloffa); spustitelný soubor je ddrescue. Bez instalace ho najdete na live médiu SystemRescue.
Nejdřív ověřte zdroj a cíl. Zachraňovaný disk nesmí být připojený — manuál výslovně říká ani pro čtení. Po restartu se /dev/sdX může přehodit; --ask před startem ukáže model, sériové číslo a velikost obou zařízení.
# ZDROJ a CÍL určujte podle sériového čísla, ne podle písmene; LOG-SEC = logický sektor
lsblk -o NAME,SIZE,MODEL,SERIAL,LOG-SEC
sudo smartctl -i /dev/sdX # totéž z identifikace SMART (manuál doporučuje jako kontrolu)
Vlastní záchrana ve dvou průchodech, přesně jako v manuálu. ZDROJ je vadný disk /dev/sdX, CÍL obraz na zdravém disku. Záměna pořadí argumentů přepíše zdravý disk obsahem vadného — proto --ask.
# 1. průchod: rychle vše čitelné, bez scrapingu (-n), s potvrzením zařízení (--ask)
# ZDROJ /dev/sdX (vadný disk) -> CÍL /mnt/zdravy/disk.img, mapfile na zdravém disku
sudo ddrescue -n --ask /dev/sdX /mnt/zdravy/disk.img /mnt/zdravy/disk.map
# 2. průchod: přímý přístup mimo cache jádra (-d), tři průchody retryingu (-r3);
# čte se jen to, co mapfile eviduje jako nehotové
sudo ddrescue -d -r3 /dev/sdX /mnt/zdravy/disk.img /mnt/zdravy/disk.map
-d vyžaduje správnou velikost sektoru: výchozí je 512 bajtů, u disku se 4KiB logickým sektorem přidejte -b 4096, jinak může ddrescue skončit chybou nezarovnaného čtení. -c mění, kolik sektorů se čte najednou (výchozí 64 KiB); menší hodnoty pomáhají u pomalých disků.
# Disk na disk: ZDROJ /dev/sdX -> CÍL /dev/sdY, který bude celý PŘEPSÁN; -f je u zařízení nutné
sudo ddrescue -f -n --ask /dev/sdX /dev/sdY /root/disk.map
sudo ddrescue -f -d -r3 /dev/sdX /dev/sdY /root/disk.map
Když disk na určitém místě zamrzá, manuál radí nezůstávat tam: spustit znovu od bezpečné vzdálenosti za problémem (-i) a pak se -R vrátit pozpátku. Obrácený směr platí pro všechny fáze, velikost bloků nemění.
# Disk zamrzl kolem 12,3 GB: pokračovat kus za tím místem, zbytek dojet pozpátku (stejný ZDROJ, CÍL i mapfile)
sudo ddrescue -f -i 12350MB /dev/sdX /dev/sdY /root/disk.map
sudo ddrescue -f -R /dev/sdX /dev/sdY /root/disk.map
Brzdy pro běh bez dozoru: -T 5m skončí, když pět minut nepřijde úspěšné čtení, -e +50 po padesáti nových vadných oblastech, --max-slow-reads spolu s -a reaguje na propad rychlosti — hodnoty jsou příklad, nastavte je podle toho, kolik chyb disku dovolíte. --log-rates zapisuje rychlost každou sekundu a z grafu je vidět slabá zóna disku.
Na obrazovce sledujte rescued a pct rescued, bad areas a time since last successful read. Odhad zbývajícího času je podle manuálu nepřesný z principu: na konci prvního průchodu ukáže sekundy, pak vyroste na hodiny nebo dny. Dobré části jdou rychle, zbytek dlouho.
Z obrazu ven: připojit jen pro čtení
# Obraz celého disku přes loop zařízení: --read-only brání zápisu, --partscan vytvoří /dev/loop0p1, p2 …
sudo losetup --find --show --read-only --partscan /mnt/zdravy/disk.img
sudo mount -o ro /dev/loop0p1 /mnt/obraz
Obraz jednoho oddílu stačí připojit přímo: mount -o loop,ro oddil.img /mnt/obraz. Když se souborový systém nepřipojí, opravujte ho na pracovní kopii obrazu (e2fsck, ntfsfix, chkdsk nad kopií ve Windows), nikdy na originálu. Tabulku oddílů řeší TestDisk, ztracenou strukturu složek PhotoRec — oba nad obrazem. ddrescuelog -l- -b4096 oddil.map vypíše čísla bloků, které se nepovedlo přečíst (velikost bloku podle souborového systému); u ext4 je e2fsck -L načte jako seznam vadných bloků. Rozložení vad graficky ukáže ddrescueview, prohlížeč mapfile pro Linux i Windows.
Kdy ddrescue nepomůže a škodí
ddrescue je nástroj na disk s vadnými sektory, ne s vadnými hlavami. Neumí vypnout vadnou hlavu, neřídí napájení, nepotlačí vlastní opakované pokusy firmwaru disku ani jeho údržbu na pozadí a čte přes běžný SATA nebo USB řadič s jeho časovými limity. Hardwarový imager, se kterým pracuje laboratoř (třída DeepSpar Disk Imager nebo PC-3000), tohle umí: limit na čtení sektoru v milisekundách, při zaseknutí odpojení a znovuzapnutí napájení zdrojového disku bez restartu počítače, mapu hlav a čtení nejdřív jen ze stabilních, servisní příkazy obcházející firmware. U disku se slábnoucí hlavou, poškozeným firmwarem nebo servisní oblastí ddrescue podle Rossmann Group selhání urychluje, protože nutí degradující hlavy přejíždět každou stopu.
| Příznak | ddrescue doma | Laboratoř |
|---|---|---|
| SMART hlásí pár pending nebo reallocated sektorů, disk čte plynule, občas chyba | Ano — dva průchody podle postupu výše, dál pracujte z obrazu. | Není potřeba, dokud obraz vzniká. |
| Disk cvaká, pípá, roztočí se a zastaví, hlásí nulovou kapacitu | Ne. Vypnout a nezapínat; každý start posouvá hlavy po plotně. Viz disk cvaká a spadené hlavy. | Ano — mechanika, čistý box, imager. |
Rychlost padá k nule, bad areas rostou s každým průchodem, time since last successful read se prodlužuje | Přestat. Hlavy degradují, každá minuta ubírá; nepřidávat -r. | Ano — limity v milisekundách, mapa hlav. |
| Reallocated a pending během kopírování skokově rostou | Přestat a nechat disk stát. Význam hodnot v článku o SMART. | Ano. |
Disk mizí z /dev, potřebuje odpojit a zapojit | Manuál má postup pro jednorázový výpadek (-A, -O); opakované mizení je hranice. | Ano — imager řídí napájení. |
| Externí WD nebo Seagate 2,5” s USB můstkem na desce disku | Přes funkční můstek ano; disk z boxu nevyndávat, můstek šifruje. Viz WD a Seagate. | Ano, i s původní deskou můstku. |
| SMR disk s rozpadlým překladem, poškozený firmware | Ne — chyba není v sektorech. Viz CMR vs. SMR. | Ano — práce s firmwarem. |
| SSD bez odezvy nebo s nulovou kapacitou | Ne; ddrescue je nezávislý na rozhraní, ale závada je v řadiči. Viz záchrana dat z SSD. | Ano. |
Co nedělat
- chkdsk, fsck ani „oprava jednotky” na originálu. Manuál: nikdy neopravujte souborový systém na disku s I/O chybami, přijdete o další data. Opravy patří na kopii obrazu — podrobně v článku o CHKDSK.
- Diagnostické a opravné utility výrobce. Zápisové testy, „oprava” sektorů nebo mazací příkazy u SSD do disku zapisují.
- Opakované restarty a přepojování. Každé roztočení disku s vadou je pohyb hlav navíc a podle manuálu může být poslední. Jeden běh s mapfile, ne deset pokusů „jestli naskočí”.
- Mrazák. Přinese kondenzaci na plotně a nic neopraví.
- Otevírání disku. Mimo čistý box znamená prach na plotně — viz mikrovýbrusy plotny.
- Obnovovací programy rovnou nad vadným diskem. Hodiny čtení z umírajícího média, často se zápisem výsledků na tentýž disk. Nejdřív obraz, pak obnova nad obrazem.
- ddrescue bez mapfile, nad připojeným oddílem nebo pod Cygwinem. Manuál varuje před všemi třemi: první ničí možnost navázat, druhé dá nepoužitelnou kopii, třetí hlásí matoucí chyby oprávnění.
Často se ptáte
Jde ddrescue spustit ve Windows?
Prakticky ne. Manuál doporučuje POSIXový systém a u Cygwinu popisuje chyby „Permission denied”, ze kterých ddrescue nepozná, co selhalo. Nabootujte live Linux — SystemRescue má ddrescue i TestDisk — a vadný disk připojte až do něj.
Jak dlouho bitová kopie trvá?
Dobré části jdou rychlostí disku, zbytek podle počtu vad; manuál počítá s tím, že obtížná záchrana může trvat dny. Odhad zbývajícího času je nespolehlivý z principu, protože po rychlém prvním průchodu přijdou pomalé fáze po sektorech. Každý průchod retryingu navíc stojí disk víc než předchozí.
Co znamená, že ddrescue skončil s nenulovým „bad areas”?
Část sektorů zůstala nepřečtená. V novém obrazu jsou tam nuly, v mapfile jsou přesně zapsané; ddrescuelog z něj vypíše čísla bloků a vy zjistíte, které soubory jsou zasažené. Zvýšit -r má smysl jen u disku, který během kopírování nezhoršoval stav.
Můžu záchranu přerušit a pokračovat další den?
Ano, přesně na to mapfile je. Ctrl-C ho aktualizuje, stejný příkaz příště naváže uvnitř rozdělané fáze. Po restartu ověřte přes --ask, že se /dev/sdX nepřehodilo, a částečně zkopírovaný cíl nenechte žádný systém „opravit”, než záchranu dokončíte.
Hodí se ddrescue i na disky z RAID nebo NAS?
Ano — na každý člen zvlášť, každý do vlastního obrazu s vlastním mapfile; pole se skládá až z obrazů, nikdy rebuildem na vadných discích. Proč rebuild degradované pole dorazí, popisuje článek o RAID.
Pokud první průchod ukáže cvakání, desítky procent nečitelných dat nebo rychlost padající k nule, nechte disk stát a ozvěte se: v brněnské laboratoři ho posoudíme a řekneme, jestli má smysl pokračovat hardwarovým imagerem. Podrobnosti k záchraně dat z HDD, kontakt, telefon +420 775 556 063 nebo e-mail zachranadat@ithope.cz. Mapfile a obraz, které už máte, vezměte s sebou — ušetří další čtení z disku.
Zdroje
- GNU ddrescue Manual 1.30 (1. 1. 2026) — https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html
- Debian, balíček gddrescue — https://packages.debian.org/stable/gddrescue
- losetup(8) — https://man7.org/linux/man-pages/man8/losetup.8.html
- Microsoft Learn, limit FAT32 — https://learn.microsoft.com/en-us/windows/win32/fileio/filesystem-functionality-comparison
- SystemRescue — https://www.system-rescue.org/
- ddrescueview — https://sourceforge.net/projects/ddrescueview/
- Rossmann Group, What PC-3000 Actually Does — https://rossmanngroup.com/technical-reference/what-pc-3000-actually-does
- Forensics Wiki, DeepSpar Disk Imager — https://forensics.wiki/deepspar_disk_imager/