我在两个地方有一个 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