Atkurti ištrintus „Linux“ failus

Ar yra būdas sukurti failą „Linux“, kuris susijęs su konkrečiu „iNode“? Paimkite šį scenarijų: yra failas, kuris yra rašymo procese (galbūt žurnalas), ir konkretus failas ištrinamas , bet nuoroda į dir / proc failą vis dar nurodo. Tokiu atveju nereikia kopijų , bet su juo susieti kieta nuoroda, kad galėtume atlikti būsimus pakeitimus ir naujausius pakeitimus, kol procesas bus uždarytas, ir sistema ją ištrino.

Jei turime „iNode“ numerį, ar yra būdas pasiekti šį tikslą?

8
13 авг. poe84it yra nustatytas 13 rug . 2013-08-13 00:59 '13 - 0:59 2013-08-13 00:59
@ 3 atsakymai

Kadangi nėra „Syscall“, apimančio „iNode“, nes tai yra „extX fs“ koncepcija ir nėra gera praktika, sukurkite krosnies vamzdelį, tačiau jis turėtų sukurti atsakomybės grandinę (kaip MEL prisiima), į šį klausimą atsakymas yra tik NE , nes VFS lygmenyje mes tvarkyti kelius ir failų pavadinimus, o ne kitus vidinius vaizdus.

Bet , norint pasiekti tikslą sekti naujausius pakeitimus, mes galime naudoti nuolatinę stebėseną ir dubliavimą su uodega:

 tail -c+1 -f --pid=PID /proc/PID/fd/FD > /path/to/the/copy 

kur PID yra proceso procesas, kuriame nuotolinis failas vis dar yra atidarytas, ir FD yra jo failų deskriptoriaus numeris. C-f, atidarykite ir laikykite failą, kad būtų rodomas papildomas pakeitimas, o -c + 1 pradeda „uodegą“ su pirmu baitu ir su -pid = PID uodega informuojama apie išėjimą, kai išėjimas yra pid.

14
14 авг. atsakymas duotas poe84it 14 rug . 2013-08-14 20:10 '13, 8:10 pm 2013-08-14 20:10

Galite naudoti „lsof“ ištrinti ištrintus failus (kartais) ...

 > lsof | grep testing.txt less 4607 juliet 4r REG 254,4 21 8880214 /home/juliet/testing.txt (deleted) 

Prieš bandydami tai padaryti, perskaitykite originalų straipsnį, kad galėtumėte gauti išsamią informaciją, nebent esate panašus į Maveric.

 > ls -l /proc/4607/fd/4 lr-x------ 1 juliet juliet 64 Apr 7 03:19 /proc/4607/fd/4 -> /home/juliet/testing.txt (deleted) > cp /proc/4607/fd/4 testing.txt.bk 

http://www.linuxplanet.com/linuxplanet/tips/6767/1

Mėgaukitės

4
13 авг. atsakymas pateikiamas UberDoyle 13 rug . 2013-08-13 01:27 '13 ne 1:27 2013-08-13 01:27

Visada sunku atsakyti į klausimą, kaip „galiu daryti“ pasitikėjimu neigiama. Tačiau, kiek aš matau, nei / sys / nor / proc nepateikia atvirų failų deskriptorių, kurie nėra simboliniai ryšiai, žemėlapio. Darau prielaidą, kad „BUT / proc kataloge dar yra nuoroda“, ar jūs manote, kad / proc // fd / įrašai atrodo kaip simbolinės nuorodos? Esu tikras, kad negalite atkurti pirminio failo.

Aš tai nušviečiu: kaip nurodo vartotojas user2676075, kopijavimas tikrai veikia. Tiesiog sunku susieti ...

UPDATE . Jei galvojate apie tai, tai gana logiška.

  • / proc ir / sys yra failų sistemos, išskyrus standųjį diską. Taigi jie negali pateikti failų, tokių kaip katalogo įrašai, kurie gali būti sunkiai koduojami į paskirties vietą standžiajame diske.
  • / proc / * / fd / įrašai pretenduoja į simbolinius ryšius, bet iš tikrųjų jie yra skirtingi, nes kopijavimas neveiks. Manau, jie pretenduoja į simbolines nuorodas, kad suteiktų prasmingą informaciją naudodami „ln-l“.

  • Kalbant apie (trūkstamą) sugebėjimą susieti su kai kuriais inode (pvz., Kai kuriems sistemos skambučiams): tai negali būti branduolio ar VFS sąsajos dalis dėl šių priežasčių:

    • Tai pažeidžia failų sistemos vientisumą. Failų sistema neturėtų saugoti visiškai ištrintų failų failų blokų, kaip ir išsaugoti failai.

    • Indeksai gali būti visiškai virtuali koncepcija, skirta apibrėžti „lizdą, kuriame saugomas duomenų srautas“. Darau prielaidą, kad gali būti įdiegimų, kurie turėtų problemų su lizdo konvertavimu, neturintį nuorodos į lizdą, kurį pavadina failų sistemoje.

    Pripažįstu, kad tokio sistemos skambučio galimybė nėra atsparus vandeniui. Tačiau, atsižvelgiant į dabartinę VFS sąsajos būseną (kurios AFAIR nenumato tokio skambučio), būtų sunki našta bet kuriam failų sistemos diegimui (įskaitant, pavyzdžiui, paskirstytas rinkmenų sistemas) teikti skambutį susieti failą su inode katalogu.

Bankomatas. Įdomu tai, kad jei prieš skambindami paskutinę nuorodą skambinate „fstat“, iš tikrųjų reikia grąžinti tą pačią inode informaciją ... \ t

3
13 авг. atsakymas pateikiamas MEL 13 rug. 2013-08-13 01:27 '13 ne 1:27 2013-08-13 01:27

Žr. Kitus klausimus apie „ žymes arba Užduoti klausimą