文件时间信息一般包含,文件创建时间,文件修改时间,文件访问时间。 Unix/Linux 文件修改时间有两个一个是(Modify Time 文件内容修改/ Change Time:文件权限状态/权限), 根据不同的文件系统,文件时间信息属性会有一些差别。Unix/Linux在挂载文件系统的时候会设置相关文件时间属性相关参数。
File Times in Linux
- 定义
Linux 早期内核版本也没有创建日期,在最新版本内核中已经可以看到相关字段
/include/linux/stat.h
struct kstat {
struct timespec64 atime;
struct timespec64 mtime;
struct timespec64 ctime;
struct timespec64 btime; /* File creation time */
};
不过glibc中没有相关接口
struct stat
{
/* These are the members that POSIX.1 requires. */
...
__time_t st_atime; /* Time of last access. */
__time_t st_mtime; /* Time of last modification. */
__time_t st_ctime; /* Time of last status change. */
...
};
- 相关命令
ls
access time ls -lu
modify time ls -l
change time ls -lc
stat
# stat a.txt
File: ‘a.txt’
Size: 133 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 14998 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-03-05 00:09:03.994629362 +0000
Modify: 2019-09-12 03:54:41.082515621 +0000
Change: 2019-09-12 03:54:56.284407466 +0000
Birth: -
debugfs (仅ex4文件系统)
$ sudo debugfs -R 'stat <14420015>' /dev/sda10
Inode: 14420015 Type: regular Mode: 0777 Flags: 0x80000
Generation: 2130000141 Version: 0x00000000:00000001
User: 1000 Group: 1000 Size: 260
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 8
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x579ed684:8fd54a34 -- Mon Aug 1 10:26:36 2016
atime: 0x58aea120:3ec8dc30 -- Thu Feb 23 14:15:20 2017
mtime: 0x5628ae91:38568be0 -- Thu Oct 22 15:08:25 2015
crtime: 0x579ed684:8fd54a34 -- Mon Aug 1 10:26:36 2016
Size of extra inode fields: 32
EXTENTS:
(0):57750808
(END)
find
可以通过这三个时间查询需要文件
-daystart
Measure times (for -amin, -atime, -cmin, -ctime,
-mmin, and -mtime) from the beginning of today rather
than from 24 hours ago. This option only affects tests
which appear later on the command line.
例子
# ls -lu test6.txt
-rw-r--r--. 1 root root 5 Jul 30 16:53 test6.txt
# stat test6.txt
File: test6.txt
Size: 5 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 102918054 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-07-30 16:53:23.010215539 +0800
Modify: 2019-08-29 14:08:49.483951624 +0800
Change: 2019-08-29 14:08:49.483951624 +0800
Birth: -
# date
Thu Jul 30 17:03:51 CST 2020
# find . -name "*.txt" -amin 10
# find . -name "*.txt" -amin 11
./test6.txt
File Times in AIX
- 定义:
AIX系统中没有创建时间Create Time
概念
/usr/include/sys/stat.h :
st_atime Time when file data was last accessed.
st_mtime Time when file data was last modified.
st_ctime Time when the file metadata was last changed.
such as permissions or ownership
- 相关命令
ls
access time ls -lu
modify time ls -l
change time ls -lc
istat
$ istat p.out
Inode 263 on device 10/8 File
Protection: rw-r--r--
Owner: 0(root) Group: 0(system)
Link count: 1 Length 14682 bytes
Last updated: Tue Sep 15 10:50:15 PDT 2009
Last modified: Tue Sep 15 10:50:15 PDT 2009
Last accessed: Tue Nov 3 12:01:12 PST 2009
- 挂载
由于更新访问时间会有性能损耗, 所有可以通过以下两种方式设置不更新文件的access time
挂在文件系统时设置
-o noatime
永久性修改
chfs -a options=noatime
File Times in Windows
NTFS
文件系统使用的是UTC
时间,不受时区和夏令时的影响, FAT
文件系统,则及依赖计算机本地时间。NTFS
会延时更新文件访问时间, 一般一个小时内不会更新访问时间。
可以通过SetFileTime
来设置文件时间。
参考及引用
File Times in AIX
DEBUGFS Command – Show File Creation Times in Linux
Find Files By Access, Modification Date / Time Under Linux or UNIX
Windows – File Times
Be First to Comment