文件具有相同的索引节点,但它们不相互链接

文件具有相同的索引节点,但它们不相互链接

我在两个地方有一个 bash 脚本,但我不记得如何创建它们。它们具有相同的索引节点,但似乎没有一个链接到另一个。是否存在硬链接,但该 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: -

答案1

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

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

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

readlink -nf ~/bin/dropbox-backup ~/Dropbox/linux/scripts/dropbox-backup

相关内容