什么算作文件修改或更改?

15 timestamps files

重命名会影响文件修改或访问时间吗?有什么地方有什么变化的列表吗?

Gil*_*il' 10

影响文件 mtime 的修改是文件数据的更改:写入非零字节数,或最终修改文件的截断。创建文件也将其 mtime 设置为当前日期。假设文件未创建或截断,仅打开文件进行写入不会影响 mtime。

从文件读取(如果读取的字节数非零)或执行文件将其 atime 设置为当前时间。仅仅打开一个文件进行阅读永远不会影响时间。在 Linux 上,现在在大多数情况下默认禁用;在atime安装选项恢复更新atime而noatime安装选项禁用它们完全。

程序可以改变文件的 mtime 和 atime;执行此操作的基本命令是touch. 一些文件复制程序将副本设置为与原始文件相同的 mtime,例如cp -prsync -t

影响文件 ctime 的更改是文件元数据的更改:权限、所有者、时间、链接计数等。重命名文件也会更新其 ctime。文件数据的更改也会影响 ctime,但从文件读取不会更改 ctime,即使它更改了 atime。除了将 ctime 设置为当前时间之外,不可能以任何方式更改 ctime(即使 root 受到约束,但 root 可以通过首先更改系统时间或直接访问包含文件系统的分区来间接设置 ctime)。


Zel*_*lda 8

重命名会更新更改时间:

$ mkdir tmp
$ cd tmp

$ echo abc > a
$ stat a
  File: `a'
  Size: 4               Blocks: 8          IO Block: 4096   regular file
Device: 26h/38d Inode: 5038682     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000 /  zelda   Gid: ( 1000/   zelda)
Access: 2013-12-12 07:06:58.981107444 +0100
Modify: 2013-12-12 07:06:58.981107444 +0100
Change: 2013-12-12 07:06:58.981107444 +0100
 Birth: -

$ mv a b
$ stat b
  File: `b'
  Size: 4               Blocks: 8          IO Block: 4096   regular file
Device: 26h/38d Inode: 5038682     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  zelda)   Gid: ( 1000/   zelda)
Access: 2013-12-12 07:06:58.981107444 +0100
Modify: 2013-12-12 07:06:58.981107444 +0100
Change: 2013-12-12 07:07:14.893238472 +0100
 Birth: -
Run Code Online (Sandbox Code Playgroud)

读取文件内容时会更新访问时间。实际更新文件时修改(打开修改时间不足以改变修改时间)。

  • 副本创建一个新文件,其中包含具有新值的修改、访问和更改(全部相同)。在编辑器中粘贴一些东西(然后保存)更新所有三个(更改时间戳比其他两个晚,当然只有在你保存之后) (2认同)