文件具有相同的 inode,但它们不相互链接

rag*_*rag 4 linux hard-link files

我在两个地方有一个 bash 脚本,我不记得我是如何创建它们的。它们具有相同的 inode,但似乎没有一个链接到另一个。是否有硬链接,但该 inode 的链接数不应该变成两个吗?

$ ls -l ~/bin/dropbox-backup 
-rwxr-xr-x 1 bak bak 676 Aug 14 09:32 dropbox-backup

$ ls -l ~/Dropbox/linux/scripts/dropbox-backup 
-rwxr-xr-x 1 bak bak 676 Aug 14 09:32 ~/Dropbox/linux/scripts/dropbox-backup

$ stat ~/bin/dropbox-backup 
  File: `dropbox-backup'
  Size: 676         Blocks: 8          IO Block: 4096   regular file
Device: 806h/2054d  Inode: 528738      Links: 1
Access: (0755/-rwxr-xr-x)  Uid: ( 1001/     bak)   Gid: ( 1001/     bak)
Access: 2013-08-14 20:40:25.599322386 +0100
Modify: 2013-08-14 09:32:47.748546462 +0100
Change: 2013-08-14 20:40:25.591322386 +0100
 Birth: -

$ stat ~/Dropbox/linux/scripts/dropbox-backup
  File: `/home/rag/Dropbox/linux/scripts/dropbox-backup'
  Size: 676         Blocks: 8          IO Block: 4096   regular file
Device: 806h/2054d  Inode: 528738      Links: 1
Access: (0755/-rwxr-xr-x)  Uid: ( 1001/     bak)   Gid: ( 1001/     bak)
Access: 2013-08-14 20:40:25.599322386 +0100
Modify: 2013-08-14 09:32:47.748546462 +0100
Change: 2013-08-14 20:40:25.591322386 +0100
 Birth: -
Run Code Online (Sandbox Code Playgroud)

Gil*_*il' 5

这些文件具有相同的 inode 并且位于相同的文件系统上。您可以在 : 的输出中看到这两个文件的stat报告Device: 806h/2054d Inode: 528738。所有本机 unix 文件系统都报告不同文件的不同 inode(对于某些远程或外部文件系统,这可能无法保证)。

文件的两个名称确实“相互链接”,或者更准确地说,它们指向同一个文件~/bin/dropbox-backup并且~/Dropbox/linux/scripts/dropbox-backup是同一个文件。最可能的解释是这~/bin是一个符号链接,~/Dropbox/linux/scripts反之亦然,因此您可以通过两个不同的目录和符号链接链访问同一个文件。

您可以通过比较两条路径的规范化(即解析所有符号链接的路径)来检查:

readlink -nf ~/bin/dropbox-backup ~/Dropbox/linux/scripts/dropbox-backup
Run Code Online (Sandbox Code Playgroud)