Linux 文件时间戳(atime、mtime、ctime)
- Linux系统
- 2025-12-18
- 341热度
- 0评论
Linux 文件时间戳(atime、mtime、ctime)
1、介绍
- atime(访问时间):这是文件最后一次被读取或执行的时间。每当文件内容被查看或文件被执行时,atime就会更新。
- mtime(修改时间):当文件内容发生变化时,例如编辑或添加新内容,mtime就会更新。
- ctime(变化时间):任何更改文件元数据的操作,如更改权限或所有权,都会更新ctime。值得注意的是,修改文件内容也会更新ctime。
| 项目 | Access Time (atime) | Modification Time (mtime) | Change Time (ctime) |
|---|---|---|---|
| 全称 | Access Time | Modification Time | Change Time(或 Status Change Time) |
| 核心含义 | 文件内容最后被读取/访问的时间 | 文件内容最后被修改并保存的时间 | 文件 inode 元数据(权限、属主、链接数等)最后变更的时间(内容修改也会触发) |
| 触发更新操作 | - cat、grep、vim 查看 - stat(通常会触发) - 任何读取内容的操作 | - echo > 文件 - 编辑器保存 - cp 覆盖文件 | - 修改内容(同时更新 mtime) - chmod、chown - mv 重命名 - touch(某些情况) |
| 独立性 | 可单独更新,不影响其他两个 | 更新时 一定会同时更新 ctime | 可单独更新(如只改权限),不影响 atime 和 mtime |
| 查看命令 | ls -lu stat 文件 |
ls -l(默认显示) stat 文件 |
ls -lc stat 文件 |
2、关键规则
1、内容修改(Modify):
- → 同时更新 mtime 和 ctime
- (因为内容变了,inode 也跟着变)
- 通常也更新 atime(由于 relatime 优化,atime 被设为 >= mtime)
2、元数据修改(权限、属主、重命名等):
-
→ 只更新 ctime
-
(不影响 mtime 和 atime)
[root@VM-16-6-centos temptest]# chown root:root hi.txt [root@VM-16-6-centos temptest]# stat hi.txt File: ‘hi.txt’ Size: 5 Blocks: 8 IO Block: 4096 regular file Device: fd01h/64769d Inode: 1061746 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2025-12-18 13:38:22.817999530 +0800 Modify: 2025-12-18 13:38:21.884970673 +0800 Change: 2025-12-18 13:42:13.587137249 +0800 Birth: -
3、读取操作:
使用 cat hi.txt 或其他读取文件的操作,更新 Access 时间。
-
→ 只更新 atime
-
(现代系统常优化,减少更新)
[root@VM-16-6-centos temptest]# cat c.txt hi\n [root@VM-16-6-centos temptest]# stat hi.txt File: ‘hi.txt’ Size: 5 Blocks: 8 IO Block: 4096 regular file Device: fd01h/64769d Inode: 1061746 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2025-12-18 13:46:35.512295981 +0800 Modify: 2025-12-18 13:38:21.884970673 +0800 Change: 2025-12-18 13:42:13.587137249 +0800 Birth: -
3、时间戳在实际应用中的意义
| 时间戳 | 典型应用场景 | 示例命令/工具 | 为什么重要 |
|---|---|---|---|
| mtime | - 清理旧文件/日志(最常用) - 增量备份 - 查找最近修改文件 | find /path -type f -mtime +30 -delete |
反映内容“新鲜度”,备份工具(如 rsync)默认依赖 |
| atime | - 监控文件访问(安全审计) - 清理很少访问的文件 | find /path -type f -atime +30 |
可追踪读取行为,但常被优化禁用 |
| ctime | - 安全审计(检测权限/属主异常变更) - forensic 分析 | find /path -type f -ctime +30 |
难伪造,记录系统级变化 |
常用工具:find(清理/查找)、rsync(备份)、ls -l/u/c(查看)。
3.1 群晖(Synology)NAS 实际应用示例
群晖基于 Linux,常用于自动清理旧文件/空文件夹(防止空间爆满,如下载、监控录像)。
任务计划表脚本(控制面板 → 任务计划表 → 用户定义脚本,运行用户 root):
# 设置路径(替换为你的共享文件夹)
PATH="/volume1/你的文件夹"
# 删除修改时间超过 30 天的文件(为什么用 mtime:最准反映内容过时)
find "$PATH" -type f -mtime +30 -delete
# 删除空文件夹(从深到浅)
find "$PATH" -type d -empty -delete
# 测试时先替换 -delete 为 -print 查看效果
结论
- Modify 与 Change 的关联:修改文件内容 → 同时更新
Modify和Change;修改文件元数据 → 只更新Change。 - Access 的特殊性:仅读取操作就会更新,部分系统会开启
noatime挂载参数关闭此更新,以提升磁盘性能