Undelete
Milan Kerslager
milan.kerslager na spsselib.hiedu.cz
Středa Srpen 9 14:07:51 CEST 2000
On Wed, 9 Aug 2000, Maros Klempa wrote:
> > Obecne undelete nemuze v Unixu fungovat, protoze na pozadi bezi desitky
> > procesu, ktere zapisuji na disk. Pravdepodobnost, ze nejaky proces prepise
> > na disku prave smazana data je dost velika hlavne na systemech, kde
> > pracuje vice uzivatelu zaroven.
>
> Na NetWare tiez obecne moze bezat vela procesov (a aj bezi) a predsa
> na nom undelete funguje spolahlivo.
Potiz je v tom, ze vsechny pozadavky o vymazani souboru vyrizuje server na
zadost stanice. Obsluha techto pozadavku funguje tak, ze soubor, ktery se
ma "smazat", se jen oznaci v adresari jako smazany. Prostor, ktery zabira,
je uvolnen po nejakem case nebo v pripade, ze dojde misto na disku. Pokud
smazete adresar, ktery obsahuje "smazane" (tj. vlastne jen neviditelne)
soubory, presunou se tyto do adresare DELETED.SAV k koreni svazku, na
kterem pracujete.
Obnva funguje tak, ze se (NCP sluzbou) stanice zepta, jake "smazane" (tj.
skryte) soubory se nachazeji v danem adresari. Server je bonzne a stanice
je muze dalsim specialnim volanim "obnovit".
Pokud si sednu na NW sever, pustim si tam svuj program a provedu unlink()
tak, jak to delaji programy v Unixu, soubor nenavratne zmizi. Pokud ve
svem programu zavolam onu specialni funkci, ktera misto unlink() provede
oznaceni souboru jako smazany a jen ho v adresari skryje, pak pujde
obnovit.
Stejne jako v Unixu, lze na NW severu udelat preload knihovny a
predefinovat volani knihovnich funkci. Kdyz to udelate, budete ve stejne
situaci, jako jsem popsal drive.
Finta je tedy v tom, ze NW sever nemaze doopravdy. Je to zarizeno tak, ze
vsechny pozadavky od klientu jsou vyrizeny tak, ze soubor se "skryje", ale
dale zabira misto na disku. Z tohoto stavu ho lze snadno "obnovit".
Undelete v DOSu fungovalo tak, ze jste po smazani souboru prohledl disk a
precetl si v adresari to, co tam zbylo (DOS zlikviduje jen 1. pismeno
nazvu). Pak jste spolehal na to, ze na disk uz nebylo nic zapsano a
precetl bloky, ktere patrily byvalemu souboru.
V pripade "kose" v KDE, Gnome nebo Win'9x dochazi misto k smazani k
presunu souboru na specialni misto. To vyzaduje, aby vsechny aplikace
volaly misto unlink() proceduru, ktera to zajisti (nebo se udela opet
preload ci hook na nejaky INT pro DOSove okno).
--
Milan Kerslager
E-mail: milan.kerslager na spsselib.hiedu.cz
WWW: http://www.spsselib.hiedu.cz/~kerslage/
Další informace o konferenci Linux