[BSD] Undelete, SOS

Zahemszky Gábor Gabor at Zahemszky.HU
2004. Okt. 1., P, 09:24:25 CEST


stan wrote:
> Nice to see you again! :)
> 
> Egyik ismerosom hasonlo problemaval kuzdott es valami programot 
> raeresztett (talan tct volt a program neve) visszallitasi celbol.

The Coroner's Toolkit
www.fish.com/tct

ports alatt sysutils/tct néven az utolsó előtti verziója ott van. (Meg 
kell mondjam láttam már régebben, de a fene gondolta volna, hogy erre is 
jó, de a FAQ-jában még szerepel is.

http://www.fish.com/tct/help-recovering-file

akár még segíthet is.)

>> Nézegettem, az rm-nek van egy -W kapcsolója ami elvileg undelete, csak
>> kellene tudni a fájlok nevét, amit nem tudok :-( és elég sok fájlról 
>> van szó
>> (20-30).

Ezzel kapcsolatban a következő hozzáfűznivalóim vannak:
a) _szerintem_ a doksiban emlegetett -W opció neked nem jó:

      -W    Attempt to undelete the named files.  Currently, this option
            can only be used to recover files covered by whiteouts.

Ez a whiteout nekem nagyon gyanús. Valaki tudna róla pár szót szólni, 
hogy mi ez? (RTFM is jöhet, csak címmel)

b) ha véletlenül neked jó, ez a -W, akkor a fájlok nevét igen könnyen 
meg lehet találni - feltéve, hogy tényleg nem történt azon a diszken 
azóta. Szóval mount -r, vagy legalábbis -o noatime, szépen gyalogolj el 
a szóban forgó könyvtárba (ha ezt se tudod, akkor azért már nagy baj van 
:-), és ott add ki szépen a hd . (hexdump aktuális könyvtár) parancsot.

Egy dir felépítése:

A: 4 byte inode szám (hátulról előre olvasandó)
B: 2 byte teljes aktuális bejegyzés hossza
C: 2 byte név hossza (ebből nekem most tesztek alapján úgy tűnik, csak a 
második byte az érdekes, az 1. inkább helykitöltés, de nyilván meg kéne 
nézni a sys/ino.h -t, és kiderül a turpisság)
D: a C-ben jelölt méret-ben (4-gyel oszthatóra kikerekítve) maga a téged 
érdeklő név (a kikerekítés NULL-byte-okkal feltöltve)
és kezdődik minden előlről, a B.-ben jelölt következő ponttól.


No jó vadászatot!

Zahy < Gabor at Zahemszky dot HU >


-- 
#!/bin/ksh
Z='21N16I25C25E30, 40M30E33E25T15U!' ;IFS=' ABCDEFGHIJKLMNOPQRSTUVWXYZ 
';set $Z ;for i { [[ $i = ? ]]&&print $i&&break;[[ $i = ??? 
]]&&j=$i&&i=${i%?};typeset -i40 i=8#$i;print -n ${i#???};[[ "$j" = ??? 
]]&&print -n "${j#??} "&&j=;typeset +i i;};IFS=' 0123456789 ';set $Z;for 
i { [[ $i = , ]]&&i=2;[[ $i = ?? ]]||typeset -l i;j="$j $i";typeset +l 
i;};print "$j"



További információk a(z) BSD levelezőlistáról