Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 4
  • 76

Dziś natknąłem się na ciekawe pytanie.

Jakiś duży plik w systemie został usunięty, ale  jest ciągle otwarty przez aplikację.

Jak można go odzyskać? Jego zawartość można odczytać z /proc/<pid aplikacji>/fd/<uchwyt>.

Jednak  w ten sposób możemy go jedynie skopiować/odczytać. A co, gdy nie mamy miejsca na drugą kopię takiego pliku np. plik miał 100 GB, a dysk ma 120GB?

 

Andrzej_Dopierała
  • Zapytał
  • @ Andrzej_Dopierała | 22.10.2014
    • lider
    • laureat
    • ekspert
    • 83
    • 65
    • 169
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedź (1)

  • 0

W starszych jądrach można było taki plik bezpośrednio zlinkować (ln -l /proc/<pid>/fd/fd /katalog/nowanazwapliku. Jednak we współczesnych jądrach taka opcja została zablokowana.

Jeżeli systemem plików jest extX, można użyć debugfs i opcji ln <inod> nowanazwa. Ale jest to niskopoziomowe grzebanie w systemie plików, więc niesie ze sobą jakieś ryzyko i zadziała tylko dla extX.

Innych rozwiązań, spełniających kryterium "niekopiowania", niestety, nie znam. Ale może ktoś na coś wpadnie? :)

Andrzej_Dopierała
  • Odpowiedział
  • @ Andrzej_Dopierała | 22.10.2014
    • lider
    • laureat
    • ekspert
    • 83
    • 65
    • 169