如何理解 mv 重命名改变了文件的 ctime?

2021-06-23 19:14:00 +08:00
 lolcat
执行命令`mv a b`后,文件的 ctime 变了。只有文件的 i 节点数据被改变了,ctime 才会改变,i 节点存储文件的属组属主、权限、链接数,mv 重命名并没有改变这些数据啊,为啥对文件执行 mv 后,文件的 ctime 变了?
2158 次点击
所在节点    Linux
4 条回复
generic
2021-06-23 19:25:59 +08:00
inode 是没变(如果不跨文件系统)。ctime 是文件系统驱动在 rename 调用里自己改的。
lolcat
2021-06-23 19:50:16 +08:00
@generic 您是指 rename 这个系统调用会改变文件的 ctime 吗?
jim9606
2021-06-23 21:16:55 +08:00
按照这个 stackoverflow 回答( https://unix.stackexchange.com/questions/211123/why-does-renaming-a-file-with-mv-command-alter-an-inodes-change-date-time
以前没有 rename 调用时,mv=link+unlink,这个过程会修改 inode 引用计数 2 次。而且有些备份软件依赖这点来检测文件移动。
lolcat
2021-06-24 19:18:44 +08:00
@jim9606 谢谢,明白了,真是有趣的知识点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/785381

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX