Stalo se vám někdy, že jste nechtěně smazali soubor a okamžitě toho litovali? Potřebujete ho zpět, a to co nejrychleji! Jenže co když je ten soubor tak nový, že ještě nebyl stažen do zálohy? Naštěstí existuje řešení.
Je „rm“ zkratka pro zklamání?
Je až příliš snadné použít příkaz „rm“ a rázem zjistit, že s lítostí zíráte do okna terminálu. Jedna malá chyba se zástupnými znaky a můžete omylem vymazat mnohem víc, než jste měli v úmyslu.
Základní souborový systém ext4 v Linuxu používá inody pro ukládání informací o každém souboru a tabulku inodů pro jejich sledování. Inode obsahuje metadata o souboru, jako je jeho název, vlastník, oprávnění a podobně.
Obsahuje také vstupní body k pevným odkazům, které ukazují na daný soubor. Každý soubor má alespoň jeden pevný odkaz. Pokaždé, když vytvoříte nový pevný odkaz, počet pevných odkazů inodu se zvýší o jeden. Naopak, při odstranění pevného odkazu se jejich počet v inodu sníží o jeden.
Když smažete soubor, dojde k odstranění posledního pevného odkazu. Inode je poté označen jako nepoužívaný a připravený k opětovnému použití. V tu chvíli se soubor přestane zobrazovat ve výpisech adresářů a nelze k němu přistupovat.
Nicméně data, která tvořila obsah souboru, stále zůstávají fyzicky přítomna na pevném disku. Pokud by bylo možné opravit inode tak, aby obsahoval správné informace, soubor by mohl být obnoven. To by ale fungovalo pouze za předpokladu, že data souboru na pevném disku zůstanou nedotčená a nepřepsaná jinými daty.
Alternativně by se dal vytvořit nový inode, zkopírovat do něj přeživší data ze starého a následně doplnit chybějící části.
Tyto operace jsou složité. Obvykle se soubor smaže omylem v ten nejnevhodnější moment, když ho nutně potřebujete a to ihned. Nemáte čas se zabývat sektory disku a dalšími specializovanými nástroji. Navíc pokud se jedná o soubor, který jste právě vytvořili, pravděpodobně ještě nemáte jeho zálohu, takže tím se také nic nevyřeší.
V takových situacích se skvěle hodí nástroj testdisk. Je uživatelsky přívětivý a nevyžaduje hluboké znalosti o souborovém systému. Pojďme se podívat, jak ho používat!
Instalace testdisku
Pro instalaci testdisku na Ubuntu použijte tento příkaz:
sudo apt-get install testdisk
Na Fedoře je to:
sudo dnf install testdisk
Na Manjaru použijte pacman:
sudo pacman -Sy testdisk
Práce s testdiskem
Ačkoli se testdisk spouští v terminálu, má jednoduché textové rozhraní. K navigaci používejte šipky a pro potvrzení volby klávesu Enter. Pro lepší organizaci je dobré vytvořit si adresář pro obnovené soubory.
Zadáme příkaz pro vytvoření adresáře s názvem „restored“:
mkdir restored
Přejdeme do nového adresáře a spustíme testdisk:
cd restored/
Testdisk je potřeba spustit s právy roota (správce), takže zadáme:
sudo testdisk
První otázka se týká protokolování. Program může vytvořit nový soubor protokolu, použít existující, nebo neprotokolovat vůbec nic. Na tom, jakou možnost vyberete, nezáleží; neovlivní to funkčnost testdisku.
Pro potvrzení a vytvoření nového souboru protokolu stačí stisknout Enter. Bude uložen v adresáři, ze kterého jste spustili testdisk. Následně se testdisk zeptá, na kterém pevném disku se nachází souborový systém, na kterém chcete pracovat.
Program zobrazí seznam pevných disků, které detekoval, a také soubory squashfs typu „/dev/loop“. Pro každou aplikaci, kterou jste nainstalovali, bude jeden takový soubor. Jsou ale jen pro čtení, takže z nich není možné nic smazat.
V tomto testovacím systému je pouze jeden fyzický pevný disk, takže šipkou dolů vybereme možnost „/dev/sda“. Poté šipkou doprava vybereme „Pokračovat“ a stiskneme Enter.
Dále testdisk potřebuje znát typ diskového oddílu. Nabídne seznam možností a automaticky detekovaný typ se zobrazí dole.
Pokud nemáte pádný důvod, doporučuje se vybrat automaticky detekovaný typ oddílu a stisknout Enter.
V zobrazené nabídce funkcí vyberte „Advanced“ a stiskněte Enter.
Zobrazí se nabídka pro výběr oddílu.
Soubory, které hledáme, se nacházejí na oddílu se souborovým systémem Linux. Na našem disku máme jeden takový oddíl, ale vy jich můžete mít i víc.
Vyberte oddíl, na kterém se vaše soubory nacházely, a šipkami doleva a doprava vyberte „Seznam“ a stiskněte Enter. Zobrazí se nabídka pro výběr souborů.
Pomocí šipek nahoru a dolů nebo kláves PgUp a PgDn procházejte seznam souborů a adresářů. Pravou šipkou nebo Enterem vstoupíte do adresáře a levou šipkou nebo Esc z něj vystoupíte.
Hledáme soubory uživatele dave. Soubory všech uživatelských účtů jsou v adresáři „Home“. Označíme tedy adresář „Home“ a stisknutím šipky vpravo nebo Enter vstoupíme do něj.
V dalším kroku se nám zobrazí seznam všech uživatelských účtů. Vybereme dave a stiskneme šipku vpravo nebo Enter.
Nyní už vidíme soubory patřící uživateli dave. Červené položky jsou smazané soubory. Procházíme seznam souborů a adresářů, dokud nenajdeme ty, které chceme obnovit.
Pro obnovení souboru ho označte a stiskněte klávesu „c“ (malé písmeno).
Zobrazí se výzva k zadání umístění obnoveného souboru. Protože jsme vytvořili adresář „Restored“ a spustili testdisk z něj, první záznam v seznamu „.“ představuje tento adresář. Pro obnovení smazaného souboru do tohoto adresáře stiskneme klávesu „C“ (velké písmeno).
Poté se vrátíte na obrazovku pro výběr souborů. Pokud chcete obnovit více souborů, opakujte celý proces. Označte smazaný soubor, stisknutím „c“ (malé písmeno) ho zkopírujte a následně stisknutím „C“ (velké písmeno) ho obnovte.
Práce s obnovenými soubory
Po obnovení souboru program rekonstruuje adresářovou strukturu do původního umístění, což je praktické, protože vám to připomene, kde byl původní soubor na disku uložen. Pokud ho potřebujete vrátit zpět na jeho původní místo, budete vědět kam.
Pokud obnovujete několik souborů z různých míst v souborovém systému, které mají náhodou stejný název, je samozřejmě potřeba je uložit odděleně.
Pro zobrazení obsahu adresáře „Restored“ zadejte:
ls
Pokud jste testdisku povolili protokolování, najdete v adresáři „Restored“ i soubor protokolu. A protože jsme obnovené soubory umístili do „/home/dave“, byly zkopírovány do našeho adresáře „Restored“, uvnitř adresářů se stejným názvem.
Pomocí příkazu „cd“ se můžeme přesunout do zkopírovaného adresáře „dave“. Ujistěte se, že neuvádíte úvodní lomítko „/“, chcete se přesunout do místního adresáře „home“, nikoli do systémového „/home“.
Zadáme:
cd home/dave
V tomto adresáři se nacházejí obnovené soubory, takže zadáme:
ls
Podívejme se na obnovené soubory ještě jednou s volbou „-l“ (dlouhý výpis):
ls -l
Protože jsme testdisk spouštěli s příkazem „sudo“, obnovené soubory mají jako vlastníka uživatele „root“. Můžeme to změnit zpět na uživatele „dave“ pomocí příkazu „chown“:
sudo chown dave.dave *
Pro ujištění, že se změna vlastníka provedla, zadáme:
ls -l
testdisk: Záchrana v pravou chvíli
Ten pocit úlevy, když se vám podaří obnovit důležitý soubor, o kterém jste si před chvílí mysleli, že je nenávratně ztracený, je k nezaplacení.
Proto je testdisk tak užitečný nástroj. Po několika průchodech nabídkami se snadno dostanete do rytmu: označit, stisknout „c“, stisknout „C“, opakovat.