我一直认为即使使用硬链接,每个 inode 中的日期也是单独维护的。
但是,如果我更改(触摸/拍打)硬链接文件的日期,则指向同一文件的所有其他硬链接都会显示相同的日期更改!
$ ln test.sh testlink.sh
$ slap test.sh
crtime : 5e7d6a29 - Fri 2020-03-27 10:51:21
mtime : 5e7d6a29 - Fri 2020-03-27 10:51:21
atime : 5e815c32 - Mon 2020-03-30 10:40:50
ctime : 5e815c31 - Mon 2020-03-30 10:40:49
$ slap testlink.sh
crtime : 5e7d6a29 - Fri 2020-03-27 10:51:21
mtime : 5e7d6a29 - Fri 2020-03-27 10:51:21
atime : 5e815c32 - Mon 2020-03-30 10:40:50
ctime : 5e815c31 - Mon 2020-03-30 10:40:49
$ slap test.sh -C 2005-02-13T08:47:43+00:00
$ slap test.sh
crtime : 420ea3af - Sun 2005-02-13 08:47:43
mtime : 5e7d6a29 - Fri 2020-03-27 10:51:21
atime : 5e815c32 - Mon 2020-03-30 10:40:50
ctime : 5e815c31 - Mon 2020-03-30 10:40:49
$ slap testlink.sh
crtime : 420ea3af - Sun 2005-02-13 08:47:43
mtime : 5e7d6a29 - Fri 2020-03-27 10:51:21
atime : 5e815c32 - Mon 2020-03-30 10:40:50
ctime : 5e815c31 - Mon 2020-03-30 10:40:49
(slap 是我编写的一个实用程序,用于更改 inode 中的文件日期元数据,包括 crtime。)
有谁对 EXT2/3/4 文件系统有更好的了解,可以发表评论吗?
那么,如果 inode 不唯一,文件名存储在哪里?是否有一个更高级别的结构包含指向存储日期的 inode 的文件名?
答案1
硬链接为 inode 提供一个或多个替代路径。根据man 2 link
,原始路径和新链接的路径之间没有区别。
由于它们共享相同的 inode,因此所有元数据都在它们之间共享。