我有一个被删除的文件,但仍然被程序保留。 我用lsoffind了inode号码。 我怎样才能创build一个硬链接到这个inode?
你不能创build一个链接,但你可以得到它。 让我们做一个实验:
$ echo blurfl >myfile.txt $ tail -f myfile.txt & $ rm myfile.txt
myfile.txt现在消失了,但是inode通过tail命令保持活动状态。 要取回文件,首先find保存inode的进程的PID:
$ ps auxw | grep tail sunny 409 0.0 0.0 8532 824 pts/5 S 18:07 0:00 tail -f myfile.txt
PID是409. chdir到/ proc / 409 / fd /并列出内容:
dr-x------ 2 sunny sunny 0 2009-07-24 18:07:18 . dr-xr-xr-x 7 sunny sunny 0 2009-07-24 18:07:17 .. lrwx------ 1 sunny sunny 64 2009-07-24 18:07:33 0 -> /dev/pts/5 lrwx------ 1 sunny sunny 64 2009-07-24 18:07:33 1 -> /dev/pts/5 lrwx------ 1 sunny sunny 64 2009-07-24 18:07:18 2 -> /dev/pts/5 lr-x------ 1 sunny sunny 64 2009-07-24 18:07:33 3 -> /home/sunny/tmp/myfile.txt (deleted)
/ proc / [PID] / fd /目录包含到进程使用的所有文件的文件描述符的符号链接。 在这种情况下,符号链接“3”指向被删除的文件。 因此,要恢复文件,请将内容复制到新文件中:
$ cat 3 >/home/mydir/saved_file.txt
得到整个文件,如果它仍然写入试试tail -c +1 -f
来自: https : //unix.stackexchange.com/questions/25527/how-to-follow-a-la-tail-fa-binary-file-from-the-beginning
(顺便说一句:ln从fd on / proc不起作用,只是试过了)
在Linux下没有可移植的方式来做到这一点。 最好的办法可能是让文件系统上的所有活动停止,杀死打开文件的程序,卸载文件系统,并使用文件系统debugging程序将其重新附加到目录。 如果您通过NFS导出文件系统,则至less某些版本的NFS可能允许您通过NFS读取文件数据。