Obnoveni prepsaneho souboru

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Sobota Leden 25 22:13:49 CET 2003


On Sat, 25 Jan 2003, Jakub Misak wrote:

> Soubor na kterem mi hodne zalezelo (asi 600 MB) jsem omylem premazal 
> zkopirovanim souboru stejneho nazvu (200 MB) do adresare. Na internetu jsem 
> nasel nejake navody a utility na obnoveni smazanych souboru, ovsem pokud 
> jsem to dobre pochopil, prepsane soubory obnovit nelze. Nejsem ale 
> odbornik, nevim jak prepis souboru na ext2 funguje...

Prepsat soubor lze v zasade tremi zakladnimi zpusoby:

1. unlink() a creat() (nebo open(..., O_CREAT))
   tedy cely smazat a znovu vytvorit
2. open(..., O_TRUNC)
   tedy otevrit a pri otevreni hned zkratit na nulovou delku
3. open() a nakonec ftruncate()
   tedy otevrit, prepsat zacatek a zbytek uriznout

To, co se presne stalo, zavisi na tom, jak jste si ten soubor prepsal.
Rekl bych, ze neobvyklejsi je moznost c. 2, ale videl jsem i ostatni.

Ve 3. pripade je pocatecni cast souboru nevratne (*) prepsana,
"precnivajici" bloky byly uvolneny, a pokud se tam uz nic dalsiho
nezapisovalo, pak na disku stale jsou v puvodnim stavu. V pripade cislo
1 a 2 jsou vsechny puvodni bloky predem uvolneny a pro novy obsah souboru
jsou alokovany nove, coz znamena, ze se od pocatku zapisovani novych dat
hraje loterie o to, ktere stare bloky budou prepsany, a ktere nikoli --
je-li na disku dost mista, neni vylouceno, ze tam zbyly vsechny (a nebo
take ne).

V pripade 1 je navic uvolnen inode, a take je sance, ze z nej neco zbyde,
ovsem neprijemna informace je, ze (pokud vim) v tomto i vsech ostatnich
pripadech jsou dukladne (*) vymazany tabulky obsahujici informaci o tom,
kde se puvodni data nachazela (resp. ve tretim pripade to, kde se
nachazela data, ktera nebyla rovnou prepsana). Hledani muze usnadnit fakt,
ze na ext2 je vetsinou pomerne mala fragmentace, ale pokud se puvodne
nejednalo o data, ktera lze pomerne dobre slozit dohromady po rozstrihani
na male kousky a zamichani (data puzzle?), pak je asi dost velka ztrata
casu to zkouset. (**)

(*) Nevratne ci dukladne v tom smyslu, ze data nelze obnovit bez
neobvykleho nakladani s diskem, ktere je provedeno ve specialne vybavene
laboratori.

(**) Pokud se jedna o tak cenna data, ze by zdalo vhodne to zkusit, pak si
nejdriv dejte par facek za to, ze nebyla zalohovana <g> (predpokladam, ze 
pokud by byla, pak byste se neptal, jak je obnovit), a pak se obratte na
nejake pracoviste vybavene vyse zminovanou laboratori, kde by mohli ten
soubor za par tisic $ (ci desitek tisic) obnovit. ;)


--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux