[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