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