Linux

恢復目前正在寫入的已刪除文件

  • May 6, 2020

我開始下載一個大文件,不久前不小心刪除了它。我知道如何通過cping獲取其目前內容,/proc/<pid>/fd/<fd>但由於下載仍在進行中,因此在我將其複製到其他地方時它會不完整。

我可以在下載完成但在下載程序關閉文件之前以某種方式挽救文件並且我永遠失去它嗎?

在跟隨模式下使用tail應該可以讓你做你想做的事。

tail -n +0 -f /proc/<pid>/fd/<fd> > abc.deleted

我剛剛做了一個快速測試,它似乎在這里工作。你沒有提到你的文件是否是二進製文件。我主要擔心的是它可能不會從文件開頭複製,但 -n +0 參數即使對於二進製文件也應該這樣做。

tail 命令可能不會在下載結束時終止,因此您需要自己終止它。

其實我有另一個想法。如果您使用另一個命令來讀取/proc/<pid>/fd/<fd>並保持該程序執行,那麼當您下載完成時,您可以從/proc/<pid2>/fd/<fd2>第二個命令的相應文件中複製它。

試試看嘛

less /proc/<pid>/fd/<fd>

在一個單獨的外殼中。查看 less 命令的 /proc 條目應該會顯示您已刪除的文件。

引用自:https://unix.stackexchange.com/questions/32728