Linux系统上的某些文件可能出现在多个位置。找到并识别本文所述的“同卵双胞胎”,并了解为什么硬链接如此有益。
识别使用相同磁盘空间的文件依赖于与文件一起使用相同inode的事实。此数据结构存储除文件名和内容之外的所有信息。如果两个或多个文件具有不同的名称和文件系统位置但共享inode,则它们还共享内容,所有权,权限等。
这些文件通常被称为“硬链接”,不像符号链接(即软链接),它通过包含其名称简单地指向其他文件。符号链接很容易通过文件的第一个位置和文件列表中的参考文件。 - >
符号被识别。
$ ls -l my *
-rw-r - r-- 4 shs shs 228 Apr 12 19: 37 myfile
Lrwxrwxrwx 1 shs shs 6 Apr 15 11: 18 myref - >
MYFILE
-rw-r - r-- 4 shs shs 228 Apr 12 19: 37 mytwin
单个目录中的硬链接不是很明显,但它仍然很容易找到。如果使用ls -i命令列出文件并按inode编号排序,则可以轻松选择硬链接。在这种类型的ls输出中,第一列显示inode编号。
$ ls -i | sort -n |更多
...
788000 myfile/dev/null
788000 4 -rw-r - r-- 4 shs shs 228 Apr 12 19: 37/tmp/mycopy
788000 4 -rw-r - r-- 4 shs shs 228 Apr 12 19: 37/home/shs/myfile
788000 4 -rw-r - r-- 4 shs shs 228 Apr 12 19: 37/home/shs/save/mycopy788000 4 -rw-r - r-- 4 shs shs 228 Apr 12 19: 37/home/shs/mytwin
请注意,错误输出被重定向到/dev/null,因此我们不必查看所有“Permission denied”错误,否则这些错误将显示在我们不允许查看的其他目录中。
此外,扫描包含相同内容但不共享inode的文件(即简单文本副本)将花费更多时间和精力。