我有一个文件被删除,但仍由程序持续打开。我使用lsof找到了这个文件的inode号码。如何创建一个硬链接指向该inode?
任何编程语言都可以,但Perl会更方便。
从/proc/进程ID/fd/文件描述符复制
使用lsof命令查找进程ID和文件描述符。
debugfs -w /dev/mapper/vg0-root -R 'link <16> myfile'
这将创建一个名为myfile的“文件”,并指向inode 16。
link
命令不会增加inode的引用计数。因此,实际上,在程序关闭文件描述符并且inode的引用计数减少为零后,文件可能会丢失。不幸的是,我不知道如何简单可靠地更改inode的引用计数。---另外,完整的答案应该显示如何获取inode号:stat -L /proc/PID/fd/FILE_DESCRIPTOR
(或ls -Li
)。 - pabouk - Ukraine stay strong
cp
命令将已删除文件的内容复制到一个新文件中,而不是链接到原始inode。 - pabouk - Ukraine stay strong