有多个指向同一文件的硬链接。
例如,如何通过一个文件(硬链接)让其他文件指向同一数据?
没有真正的任务。只是有趣。可能有用。
答案1
大多数文件系统不维护文件(或更准确地说,索引节点)硬链接所在的目录。
因此,您必须扫描整个文件系统才能找到所有硬链接。您可以使用 来执行此操作find -inum <inode number>
。
例子:
创建带链接的文件:
$ ~> mkdir linktest
$ ~> cd linktest/
$ ~/linktest> touch file1
$ ~/linktest> ln file1 file2
检查 inode:
$ ~/linktest> stat file*
File: file1
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 805h/2053d Inode: 37 Links: 2
[...]
File: file2
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 805h/2053d Inode: 37 Links: 2
[...]
如您所见,两个文件条目具有相同的 inode(37) - 因为它们是指向相同数据的硬链接。
按 inode 编号查找:
$ ~/linktest> find -inum 37
./file1
./file2
这是在 Linux 上,但它在 *BSD 上应该也能同样工作。
答案2
find
有一个选项-samefile
:
find / -xdev -samefile /myfile
/
用当前文件系统的根目录替换myfile
– 例如,如果您使用/home/sergey/myfile
并且您有/home
一个单独的文件系统,那么使用find /home
。