Answers:
您可以将具有硬链接的文件与具有“链接计数”的非硬链接文件区分开。我看到两种从命令行获取此信息的方法:
% stat original
File: ‘original’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 804h/2052d Inode: 932815 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 500/ bediger) Gid: ( 1000/ bediger)
Access: 2012-07-13 22:13:52.317101530 -0600
Modify: 2012-07-13 22:13:52.317101530 -0600
Change: 2012-07-13 22:14:08.050894536 -0600
Birth: -
要么
1010 % ls -li
total 0
932815 -rw-r--r-- 2 bediger bediger 0 Jul 13 22:13 original
932815 -rw-r--r-- 2 bediger bediger 0 Jul 13 22:13 secondary
“ bediger”之前的那个孤独的“ 2”是链接计数。请注意,两个文件名具有相同的inode编号932815。
我确定这两个命令都从struct stat的st_nlink字段获取链接计数,该字段由stat()
系统调用填充。
据我所知,运行tar
带有--hard-dereference
意味着您将获得两个文件,每个文件具有一个文件名,而不是获得具有两个不同文件名的单个文件(如上例所示)。 tar
可能会检查每个文件上的链接计数,并且在提取时默认情况下,它将在它具有的第二个文件名上为硬链接的文件数据创建一个硬链接。在--hard-dereference
创建归档文件时调用它时,它似乎在提取调用tar
运行时为第二个文件名创建了一个全新文件。