V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
lolcat
V2EX  ›  Linux

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

  •  
  •   lolcat · 2021-06-23 19:14:00 +08:00 · 1952 次点击
    这是一个创建于 1036 天前的主题,其中的信息可能已经有所发展或是发生改变。
    执行命令`mv a b`后,文件的 ctime 变了。只有文件的 i 节点数据被改变了,ctime 才会改变,i 节点存储文件的属组属主、权限、链接数,mv 重命名并没有改变这些数据啊,为啥对文件执行 mv 后,文件的 ctime 变了?
    4 条回复    2021-06-24 19:18:44 +08:00
    generic
        1
    generic  
       2021-06-23 19:25:59 +08:00
    inode 是没变(如果不跨文件系统)。ctime 是文件系统驱动在 rename 调用里自己改的。
    lolcat
        2
    lolcat  
    OP
       2021-06-23 19:50:16 +08:00
    @generic 您是指 rename 这个系统调用会改变文件的 ctime 吗?
    jim9606
        3
    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
        4
    lolcat  
    OP
       2021-06-24 19:18:44 +08:00
    @jim9606 谢谢,明白了,真是有趣的知识点
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5359 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 01:19 · PVG 09:19 · LAX 18:19 · JFK 21:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.