A Linuxos rendszereken általában ext3, ext4 fájlrendszert használunk. Állományok visszaállítása ezért nagyon nehéz. A megelőzés érdekében szemetest készíthetünk a Libtrash nevű csomag segítségével.
Nem sok idő telt el 2012 óta, ma 2015 van, a libtrash-t kivették a csomagok listájából. Az általam hivatkozott hup.hu weboldalon is azt írták korábban, hogy nem fejlesztik. Ez nem volt teljesen igaz, de a 2008-as kiadás után 6 év telt el az újabb kiadásig. 2014-ben volt újabb kiadás.
Közben születtek megoldások szemetes funkcióra, de azok nem automatikusak. Ilyen például a trash-cli. A projekt egy újabb parancsot hoz létre a törléshez, ami egy kukába történik. Pusztán ebből áll a trash-cli használata.
A libtrash viszont bármilyen törléssel működik, mivel a libc függvények előtt hajtódnak végre. A következő libc függvényeket írja felül, illetve hajtódik előttük végre:
# apt-get install libtrash
Mivel kivették a csomagok közül, ezért ez az utasítás már lényegtelen. Beszerzéshez látogassunk el a weboldalára:
Ott találunk egy linket a csomagra:
Szedjük le a legújabb verziót:
wget http://pages.stern.nyu.edu/~marriaga/software/libtrash/libtrash-latest.tgz
Csomagoljuk ki:
tar -xf libtrash-latest.tgz
Egy libtrash-3.3 könyvtárat kaptam (2015). Lépjünk be a könyvtárba:
cd libtrash-3.3
Fordítsuk le a forrást a következő paranccsal:
make
Telepítsük a libtrasht:
make install
A telepítés ezzel elkészült.
Megkeressük milyen néven települt a .so fájl:
# find /usr/lib -name libtrash.so*
Találatunk a következő lehet:/usr/lib/libtrash/libtrash.so.2.4
Globális használathoz:
# echo "/usr/lib/libtrash/libtrash.so.2.4" >> /etc/ld.so.preload
Kilépés-, belépés után működik.
Lokális használathoz:
$ echo "export LD_PRELOAD=/usr/lib/libtrash/libtras.so.2.4" >> ~/.bashrc
Telepítés után után (make install) a következő helyen találunk egy linket:
/usr/local/lib/libtrash.so
Ez mutat a /usr/local/lib/libtrash.so.3.3 nevű fájlra.
Globális használathoz:
# echo "export LD_PRELOAD=/usr/lib/libtrash/libtras.so" >> /etc/.profile
Újraindulás után a /etc/.profile csak akkor lesz szerkeszthető, ha kikapcsoljuk a szemetest!
Lokális használathoz:
$ echo "export LD_PRELOAD=/usr/lib/libtrash/libtras.so" >> ~/.profile
Mindnight Commander felhasználók! Előbb ki kell lépni a Mindnight Commanderből, és akkor használjuk a trashon vagy trashoff parancsot.
Időnként azonban mindenképpen ki kell kapcsolni és törölni a kukát. A szemetes automatikus törléséhez 3 perl scriptet is tartalmaz a feltelepített csomag a következő helyen:
/usr/share/doc/libtrash/examples/cleanTrash
Ha a weboldaláról szedtünk le egy .tgz állományt, akkor ott is találunk egy cleanTrash könyvtárat.
Alapesetben a rejtett és az üres (0 méretű) állományok nem kerülnek szemetesbe.
Tulajdonképpen semmit nem kell tennünk, működik. De hol találjuk a törölt állományokat az egyes esetekben.
Ha globálisan állítottam be a szemetes funkciót, akkor a rendszergazda könyvtárában létre jön egy Trash könyvtár.
/root/Trash
A root felhasználó által törölt állományok közvetlenül ebbe a könyvtárba kerülnek.
Ha felhasználó belép, számára is létrejön egy Trash nevű állomány.
~/Trash
Ha egy janos nevű felhasználó töröl egy elemet a saját könyvtárában, és jogosultsági problémák miatt a janos felhasználó számára nem töltődött be a libtrash.so, akkor az a következő helyre kerül:
/root/Trash/SYSTEM_ROOT/home/janos
A kuka kikapcsolása:
export TRASH_OFF=YES
Visszakapcsolás:
export TRASH_OFF=NO
Készíthetünk egy parancsot is, ami megkönnyíti a ki és bekapcsolást menet közben. Fűzzük ~/.bashrc vagy ~/.profile fájl végéhez:
# libtrash beállítások alias trashon="export TRASH_OFF=NO" alias trashoff="export TRASH_OFF=YES" exprort TRASH_OFF=NO
$ echo "abc" > teszt_fajl $ rm teszt_fajl $ ls ~/Trash/