大容量ファイルのダウンロードを開始しましたが、しばらく前に誤って削除しました。cp
ingを介して現在のコンテンツを取得する方法を知っていますが、/proc/<pid>/fd/<fd>
ダウンロードがまだ進行中であるため、他の場所にコピーすると不完全になります。
ダウンロードは完了しましたが、ダウンローダがファイルを閉じる前にファイルを救出できますか?
答え1
フォローモードで使用すると、tail
好きなことができます。
tail -n +0 -f /proc/<pid>/fd/<fd> > abc.deleted
私は簡単なテストをしましたが、ここではうまくいくようです。ファイルがバイナリかどうかは言及していません。私の主な関心事は、ファイルの先頭からコピーされない可能性があることです。ただし、-n + 0パラメーターはバイナリファイルに対してもコピーを実行する必要があります。
tailコマンドはダウンロードが終了しても終了しない可能性があるため、直接終了する必要があります。
答え2
実は別の考えがあります。別のコマンドを使用して/proc/<pid>/fd/<fd>
プログラムを読み取り、実行を続ける場合は、ダウンロードが完了したら、/proc/<pid2>/fd/<fd2>
2番目のコマンドの対応するファイルからコピーできます。
一度試してください
less /proc/<pid>/fd/<fd>
別のエンクロージャに。 / procエントリでlessコマンドを表示すると、削除されたファイルが表示されます。