`mv` 什么时候改变文件的时间戳,什么时候不改变?

`mv` 什么时候改变文件的时间戳,什么时候不改变?

移动目录而不修改时间戳表示 mv 更改目录的时间戳。

当我将mv文件从外部硬盘驱动器转移到另一个外部硬盘驱动器时,它也会更改目录的时间戳。

当我mv访问本地文件系统中的目录时,它不会更改目录的时间戳。

何时mv更改文件的时间戳和其他属性,何时不更改?谢谢。

答案1

我记得在其他系统上遇到过这个问题,并且与现在测试显示的效果不同。我认为这些是实现上的差异。我在下面这样描述它们。

大多数实现都mv尝试在移动文件时不更改文件的时间戳。然而,可能不考虑移动后部分的影响。

这基本上意味着:

  • 如果您要移动文件系统中的文件或目录,则该文件或目录上的时间戳不会更改。

  • 如果将文件移动到不同的文件系统,其时间戳将重置为当前时间,因为这是秘密副本。然而,mv通常足够聪明,可以尽最大能力恢复旧时间戳,因此访问时间和修改时间将“保持”相同,但更改时间戳将更新为当前时间。

  • 如果将空目录移动到不同的文件系统,则适用相同的规则。

  • 如果将包含内容的目录移动到不同的文件系统,mv将创建mkdir一个新目录,复制权限和所有权,并恢复原始时间...然后将该目录的内容移入其中,更新其时间戳。有些实现修复了这个问题(例如 GNU coreutils mv8.29),而其他实现则没有(例如我记得之前测试过此行为的实现)。

  • mv将要总是更新文件/目录从中移动的目录以及文件/目录移入的目录的时间戳。 (基本上,它修改这些目录,所以当然它会更新它们的修改时间戳,只要相关文件系统具有修改时间戳。据我所知,这就是全部。)

相关内容