作者johnjohnlin (LYSin8)
看板Linux
標題[問題] 不小心刪掉檔案 但是 inode 還留著
時間Thu Jun 7 13:58:29 2012
想請問一個問題
我正在下載一個檔案,抓了老半天
不小心把他 rm 了,可是檔案還在下載
猜想檔案的 file descriptor 還開著
因為是 jdownloader,所以我 pidof java
接著 cd /proc/<pid>/fd
可以看到裡面有一個連結指向我的那個檔案
大概是
105 -> <path>:[deleted]
可是檔案還在下載,我不能照著網路上的說法把他 cp 或是 cat 出來
不然檔案會不完整
而且下載完以後 fd 就會被釋放,所以也不能等他下載完
想請問有什麼方法可以把這個檔案重新 link 回去嗎
我目前的作法是先 less 這個檔案,避免他下載後被關掉
最後從 less 的 fd 裡面重新抓回來
crc32 也一樣,證實了這個方法有效
但這個作法實在是太麻煩了,也要在下載完後作後處理
想請問有直接一點的作法嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.243.89
→ bitlife:試試 tail -f <fd> | cat > <destination> 06/07 16:58
→ bitlife:<fd> 和 <destination> 是對應檔案之 fd 以及檔名 06/07 16:59
→ bitlife:那個 | 和 cat 應該可以省掉 06/07 17:00
→ bitlife:忘了tail預設最後10行. 此外tail也比較適用文字檔. 不過仍 06/07 17:07
→ bitlife:可一試 06/07 17:07
→ johnjohnlin:感謝,下次有機會來試試看 06/07 18:46
→ kdjf:google到有人寫了個fdlink() 可以去看看 06/07 22:50