A visszatérés a mélységbe, vagy visszaállítani a fájlokat a UNIX
A visszatérés a mélységbe, vagy visszaállítani a fájlokat a UNIX
div.main Visszatérve a mélységből, vagy visszaállítani a fájlokat UNIXLayem Widdowson, John Ferlito
Helyzetet, amikor véletlenül törölt néhány fontos fájlt, és magával viszi a feledésbe összes bitek és bájtok - egy rémálom minden rendszergazda. A legtöbb esetben ez inkább kellemetlen, mint egy tragédia, mert a fájlok nyerhetjük segítségével rendszeresen frissített biztonsági másolat.
Azonban, ha a rendszergazda vagy a fejlesztő, mivel az utolsó biztonsági mentés fájl még mindig teszi, hogy jelentősen megváltozik, akkor a tisztességes mennyiségű adat elvész. Kellemetlen helyzeteket nem kizárólagosan: rosszul állítottuk hát szkriptek, kudarcok hardver, vagy végül csak a balszerencse. Semmi sem helyettesítheti a megfelelő biztonsági stratégiát. Távol kiteszik a dolgozat kérdés, ebben a cikkben fogunk összpontosítani módszerek teljes vagy részleges visszatérítését fájlokat a UNIX fájlrendszer.
UNIX fájlrendszer
UNIX fájlok logikai adat konténerek. Minden egyes fájlhoz úgynevezett szerkezet inode (inode, index-node szerkezet), amely tartalmazza a metaadatok (lemez blokkok, amelyekben fizikailag fájl), információt a fájl tulajdonosa, a hozzáférési jogosultságokat, méretét és így tovább. D. Amikor eltávolítja az indexfájlt deszkriptorok fizikailag törölni a lemezről, és vannak megjelölve szabad. Az adatok ezekben a fájlokat továbbra is a lemezen tárolt és potenciálisan helyreállítható, ha a hely még nem volt ideje, hogy írjon az új információkat.
VISSZA A mélység
$ ./nph-www.pl> nph-www.pl
Ez a csapat tette egy fájlt Perl kódot a fájl mérete nulla bájt. A helyzetet súlyosbítja az a tény, hogy a változások a hét folyamán, nem kerültek be a munkavállaló adatbázis felülvizsgálata ellenőrzési rendszer (Concurrent Versions System, CVS), ami azt jelentette, a veszteség mintegy 600 sornyi kódot. Amikor jelentették, hogy mi történt, hogy megnyugtassa őt, mondván, hogy valójában nincs nagy baj, mert a fájl lehet letölteni a mentés, ami történt tegnap este, és hogy ő lesz, hogy visszaszerezze csak kód írt ma.
Hívtam a rendszergazda, és kérte, hogy állítsa vissza a fájlt érdekes számunkra. Én azonban még nem érkezett válasz, amely számítani - a rendszergazda elismerte, hogy ő még soha nem hallott a fejlesztési szerver, így a szerver nem menti.
Munkavállaló, lemondott annak a ténynek, hogy lehetetlen, hogy visszaszerezze a törölt fájl korábban a UNIX fájlrendszer, kész költeni minden a hétvégén, hogy újra írni ezt a kódot. Azt biztos, hogy a fájl hasznosítás lehetséges, de ez néhány órát vesz igénybe. Megjegyezzük, hogy az ilyen kellemetlen történet, ami nemcsak tapasztalatlan rendszergazdák. Néhány évvel ezelőtt, a munka Linux, egyikünk véletlenül beírt crontab -d helyett crontab -e. Vannak sok az olvasók körében vannak felhasználók, akik teszik a mentést a / var / spool / cron / crontab?
Fájlok helyreállítása UNIX
# Mount -o ro, újra össze kell szerelni -n / home
A legfontosabb dolog -, hogy megakadályozzák felülírása más folyamatok lemezblokkokban vagy leírók- korábban követelte a törölt fájl. Ez különösen igaz, ha a partíció már majdnem megtelt, mint akkor volt, hogy a valószínűsége újrafelhasználás távoli inode jelentősen növekszik. Ha a töltési fok a szekció kicsi, a helyreállítási folyamat végezhetjük közvetlenül a szerelt olvasó / író meghajtó partíción, bár, mint említettük, a behajtás esélye ebben az esetben elkerülhetetlenül csökken.
Az alábbiakban a fájl helyreállítási folyamat UNIX rendszereken. Az első rész témája a módszer a fájlok visszaállítását ismert tartalommal, amely alkalmazható szinte minden fajta UNIX fájlrendszereket. A második vizsgálja a pontos helyreállítási fájlok Linux ext2 fájlrendszer.
A folyamat helyreállítása fájl ismert mennyiségben
Miután a rendszer biztonságos állapotban, akkor kell használni a dd (1) másolatot az eredeti adatokat tartalmazó partíciót törölt fájl. Tegyük fel, hogy a véletlenül letörölt az / etc / passwd. A következő példa a létrehozásának folyamatát egy példányát a root partíció, majd a helyét a fájlt a / export:
Cél részén nagynak kell lennie ahhoz, hogy elférjen a teljes forrás rész (ebben az esetben körülbelül 128 MB). Ha a rendszer nem rendelkezik elegendő szabad lemezterület, akkor kell gondolni alternatív intézkedések, mint például a távoli tartó NFS partíciót, vagy műveleteket végeznek közvetlenül a fájlt az eszközre.
Egyszer egy példányt a fájlrendszer készül, a rendszer visszatér a multiplayer mód, és továbbra is dolgozni vele, mint máskor. Ha a másolat nem sikerül, a rendszer meg kell hagyni biztonságos állapotban, és cserélje ki a készülék nevét a fájl nevét (az alábbi példában a / dev / dsk / c0t3d0s0 helyébe /export/recover.dsk).
További leírja azt az eljárást inkább művészet, mint tudomány. Hagyja törölt egy fájlt úgynevezett passwd. A bal oldalon a következő utasítás parancsot cat (1) tükrözi a „vonal” lemez (-n opció kiadási sorszámok). Továbbá, a kimenet átirányítható segédprogram fgrep (1), és hogy a megadott reguláris kifejezés ez biztosítja a „gyors» gyökér bejegyzések keresni a passwd fájlban:
Példánkban a változat a / etc / passwd lemezen tárolt három helyen. Verzió GNU grep segédprogram (1) -A -B lehetőséget biztosít a nyomtatás több vonal előtt és után elhelyezkedő a megtalált karakterlánc-mintát. Ez megkönnyíti az eltávolítását a teljes tartalmát a törölt fájl. Ha grep (1) GNU változat nincs telepítve a számítógépen, akkor a program a Cu nevű seekcat, az 1. listában nyomtatja a teljes fájlt, kezdve egy bizonyos offset byte vagy vonalak. A seekcat programban két független paraméter: az első jelzi a -b vagy a -l zászló, és utána egy egész, azaz ofszet byte vagy a sorok, hogy jelenjen meg a listában. A második paraméter a zászló -f, majd adja meg a fájl nevét, ami a helyzet a „disk image” az eredeti adatokat. Például:
Ugyanez az eredmény érhető el megadásával közüzemi seekcat kiindulási vonalat. Ezt a számot veszik a nyomtatásban kapott parancsot cat -n ismertetett korábban ebben a fejezetben. seekcat program megjeleníti a fájl tartalmát, kezdve attól a helytől, ahol megállapították minta karakterlánc. Az alábbi példa 10 sor „disk image”, mivel az első illeszkedő string (karakterlánc szám 200 600). Ha szükséges, ismételje meg a folyamatot, amelyben a következő illeszkedő szöveget számát (ebben a példában, annak a száma 202098):
Eljárás fájl hasznosítás LINUX
Arról van szó, a gyógyulás folyamata a Linux fájlrendszer, ha már eltávolították az rm parancs (1). technikát általában az itt leírt biztosítja hasznosítási fájlok és nem támaszkodik az elvet próbálgatással. További előnye, hogy lehetővé teszi, hogy könnyen letölteni bináris fájlokat, valamint a fájlok ismeretlen tartalmú.
Az eszköz használható a helyreállítási folyamat, vagyis a fájlrendszer debugger debugfs (8), amelyet általánosan használtak annak ellenőrzésére és állapotváltozások. Bár a következő példákat írt Linux, elméletileg meg kell, hogy igaz legyen bármilyen típusú fájlrendszer UNIX, feltéve, ha úton funkcionalitás debugfs (8). Ha egy ilyen lehetőség nem, akkor meg kell használni a módszert a talpra fájlokat ismert tartalommal.
Érdemes megemlíteni, hogy debugfs - egy erőteljes, de ugyanakkor rendkívül veszélyes eszközöket. Ez azonnali hozzáférést biztosít a fájlrendszer, úgyhogy egy munkamenet során vele, hogy legyen óvatos.
debugfs (8) segédprogram egy interfészt biztosít a típusú héj interfész. Mi érdekli a három csapat: lsdel, macska és a dump. Kezdés debugfs (8) a kívánt szakasz a következők lehetnek:
Származó információk szerint a kimeneti lsdel talál ki, amely a törölt fájlleírókról érdekesek számunkra. A legfontosabb oszlopa lista - Tulajdonos (Owner), Size (méret), Mode (Status) és a Time törölve (törlés idő). Ha eltávolítása után a fájl (ok) nem voltak későbbi lemez műveletek, mi érdekli a leírásokat lesz a végén a listán. A tulajdonos mező (tulajdonos) a felhasználói azonosítót - a fájl tulajdonosa, amelynek értéke megtalálható a harmadik mezőben a / etc / passwd. Példánkban a tulajdonos neve johnf (ID 1000), és a fájl tartalmaz egy sor important_data.
A fenti lista leíró (inode) 32605 számozott végén a listán, és ezért kiválóan alkalmazhatók az ellenőrzést. Tartalom, ami megfelel ennek a leíró, levezethető a következő:
debugfs: macska <32605> important_data
Így a távoli fájl található. Csapat billenő «feleleveníti» a fájlt, az írás, hogy a lemezre:
debugfs kiírása -p <32605> / Tmp / recovered_file
A -p kapcsoló biztosítja, hogy a fájl megmarad ugyanaz a tulajdonosa, a csoport és a jogosultságokat.
Telepítése visszaszerezze igen egyszerű:
# Tar zxf vissza-1.3.tar.gz # cd vissza-1.3 # make # make install
Alapértelmezésben a segédprogram telepítése a rendszerben a root / usr. Kérjük, olvassa el a README fájl, amely leírja, hogyan kell telepíteni egy másik könyvtárba rendszerben. Egy munkamenet során vissza program megkérdezi néhány egyszerű kérdésre, mint például:
aki a tulajdonosa a fájlt? ha ezek a fájlok törölve lett? Mi a mérete körülbelül ezeket a fájlokat?
Ezt az információt felhasználva, vissza indul debugfs, helyreállítja a kritériumnak megfelelő inode, és teszi őket egy könyvtárba a felhasználó által megadott.
Sajnos, ellentétben a fájlok tartalmát, nevük nem lehet visszaállítani. Visszanyert fájlok nevekkel álló előtagot lerakó és az azt követő inode számokat. Ha eltávolítja ezt a könyvtárat a / etc, veszhetnek száz kép. UNIX egyszerű eszköz segítségével rendezheti a visszanyert fájlok, amelyek közül a leghasznosabb húrok (1) és a file (1).
húrok (1) mutat szekvencia az ASCII karakterek, eltávolítja a megadott fájlt. Ez a segédprogram tipikusan a „húzza ki” a szöveget bináris fájlok nem értelmezhetőek más eszközökkel.
Itt az eredménye a program file (1) a könyvtárat a File Recovery:
Osztályozza a különböző típusú fájlok, hozzátéve, hogy a nevét, a megfelelő fájl kiterjesztését, akkor egy egyszerű shell script. Például:
Ebben az esetben, akkor egy segédprogram húrok (1), megjeleníti az összes ASCII szöveges karakterláncot tartalmaz a bináris fájl. Például:
Szerint ezt a szöveget, akkor hiszem, hogy ez a fájl egy végrehajtható fájl groff (1). Elindítása a teljesítést a --help paraméter megerősíti ezt. A könyvtárak használata némileg bonyolultabb, hiszen nem tud futni. objdump parancs (1) Itt jön a mentő. Például:
# Objdump -p dump34756.lib | grep so so libmenu.so.4
Nincs helyreállítási módszerek nem helyettesíti a biztonsági adatok létrehozott rendszeresen és teljes hanghordozón. A fent leírt eljárásokat -, hogy segítsen a rendszergazdák, akik éppen a szélén.