不小心刪掉檔案 但是 inode 還留著 - Linux

Table of Contents

想請問一個問題

我正在下載一個檔案,抓了老半天

不小心把他 rm 了,可是檔案還在下載

猜想檔案的 file descriptor 還開著

因為是 jdownloader,所以我 pidof java

接著 cd /proc/<pid>/fd

可以看到裡面有一個連結指向我的那個檔案

大概是

105 -> <path>:[deleted]

可是檔案還在下載,我不能照著網路上的說法把他 cp 或是 cat 出來

不然檔案會不完整

而且下載完以後 fd 就會被釋放,所以也不能等他下載完

想請問有什麼方法可以把這個檔案重新 link 回去嗎

我目前的作法是先 less 這個檔案,避免他下載後被關掉

最後從 less 的 fd 裡面重新抓回來

crc32 也一樣,證實了這個方法有效

但這個作法實在是太麻煩了,也要在下載完後作後處理

想請問有直接一點的作法嗎?

--

All Comments

Odelette avatarOdelette2012-06-10
試試 tail -f <fd> | cat > <destination>
Freda avatarFreda2012-06-13
<fd> 和 <destination> 是對應檔案之 fd 以及檔名
Jessica avatarJessica2012-06-15
那個 | 和 cat 應該可以省掉
Thomas avatarThomas2012-06-19
忘了tail預設最後10行. 此外tail也比較適用文字檔. 不過仍
可一試
Edith avatarEdith2012-06-21
感謝,下次有機會來試試看
Audriana avatarAudriana2012-06-23
google到有人寫了個fdlink() 可以去看看