更改文件的 atime、mtime 或 ctime 及其祖先目录?

更改文件的 atime、mtime 或 ctime 及其祖先目录?

文件的 atime、mtime 或 ctime 的更改有何影响

  • 其父目录的 atime、mtime 或 ctime 以及
  • 其祖先目录的 atime、mtime 或 ctime?

答案1

您可以使用 轻松获取该信息stat。至于祖先目录,可以通过查看以下内容轻松检查是否文件发生更改,这不会影响“层次结构之上”的任何内容/

root@pooh:/home/anthon-mint# stat /
  File: ‘/’
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 804h/2052d  Inode: 2           Links: 30
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2015-02-22 09:57:14.028146463 +0100
Modify: 2015-01-01 10:34:05.528461374 +0100
Change: 2015-01-01 10:34:05.528461374 +0100
 Birth: -

由于系统不断更改文件,这些值应该接近当前时间。

如果创建一个新目录,然后在其中创建一个文件,则该目录的访问和修改时间会发生变化:

$ mkdir tmp
$ stat tmp
  File: ‘tmp’
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 700h/1792d  Inode: 144141      Links: 2
Access: (0775/drwxrwxr-x)  Uid: ( 1001/  anthon)   Gid: (  100/   users)
Access: 2015-02-27 16:19:02.523585508 +0100
Modify: 2015-02-27 16:19:02.523585508 +0100
Change: 2015-02-27 16:19:02.523585508 +0100
 Birth: -
$ touch tmp/bla
$ stat tmp
  File: ‘tmp’
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 700h/1792d  Inode: 144141      Links: 2
Access: (0775/drwxrwxr-x)  Uid: ( 1001/  anthon)   Gid: (  100/   users)
Access: 2015-02-27 16:19:02.523585508 +0100
Modify: 2015-02-27 16:19:18.639585445 +0100
Change: 2015-02-27 16:19:18.639585445 +0100
 Birth: -

访问时间不会改变,但新文件的创建会改变修改和更改时间。

现在再次触摸该文件:

$ touch tmp/bla
$ stat tmp
  File: ‘tmp’
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 700h/1792d  Inode: 144141      Links: 2
Access: (0775/drwxrwxr-x)  Uid: ( 1001/  anthon)   Gid: (  100/   users)
Access: 2015-02-27 16:19:02.523585508 +0100
Modify: 2015-02-27 16:19:18.639585445 +0100
Change: 2015-02-27 16:19:18.639585445 +0100
 Birth: -
$ 

目录不会更改,但目录的任何信息都不会更改,因为没有创建新文件。

更改某个对象的 mtime、atime 或 ctime现有文件对其所在目录以及该目录的任何父目录没有影响。

答案2

如果文件的 inode 尚未在缓存中,则最多会更新目录的 atime(访问时间)字段。然而,现代 Linux 内核的默认设置是使用该relatime标志挂载文件系统,这意味着只有在修改时间 (mtime) 之后访问文件或目录并且当前 atime 早于 mtime 时,atime 才会更新。

mtime(修改时间)仅在目录实际被修改时才会更新,例如文件(或目录或其他条目)被删除、重命名或添加,或者目录被重命名(移动)。

每当目录 inode 中的任何内容发生更改时,ctime(inode 更改时间)都会被修改,包括权限、所有者以及 mtime...

相关内容