Linux 上是否有任何(众所周知的、可靠的)文件系统在 i 节点表中存储文件和目录的创建时间?
如果有,“更改”时间是否会被 stat 调用中 i 节点的创建时间替换?
答案1
一些文件系统存储文件创建时间,尽管该字段没有标准名称:
- ufs2 → st_birthtime
- zfs → crtime
- ext4 → crtime
- btrfs → 时间
- jfs → di_otime
答案2
这外部4文件系统确实存储创建时间。stat -c %W myfile
可以给你看。
答案3
据我所知,ext4、JFS 和 BTRFS 文件系统都支持文件 inode 中的额外字段来存储创建时间,尽管命名可能有所不同。
来源:LWN 文件创建时间
答案4
xfs v5支持crtime
# dmesg | grep -iE 'xfs.*\s+mounting' | head -1
[ 10.939721] XFS (dm-1): Mounting V5 Filesystem
使用 V5 进行显示。然后获取文件inode号;
# stat -c '%i' test.txt
68227195
然后获取 crtime ;
# xfs_db -r -c "inode 68227195" -c "p v3.crtime.sec" <device eg. /dev/mapper/rl-root>
v3.crtime.sec = Mon Jun 6 15:13:02 2022
或在一行上:
xfs_db -r -c "inode $(stat -c '%i' test.txt)" -c "p v3.crtime.sec" <device>
编辑
...更简单的方法;
用于与“ ”stat <filename>
返回的相同结果Birth
[root@wsa test]# pwd
/root/test
[root@wsa test]# ls
total 8.0K
67109562 0 drwxr-xr-x. 2 root root 22 Mar 22 00:07 .
133 4.0K dr-xr-x---. 19 root root 4.0K Mar 21 23:54 ..
67552174 4.0K -rw-r--r--. 1 root root 10 Mar 22 00:07 test.txt
[root@wsa test]# df .
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/al-root 104806400 25289868 79516532 25% /
[root@wsa test]# xfs_db -r -c "inode $(stat -c '%i' test.txt)" -c "p v3.crtime.sec" /dev/mapper/al-root
v3.crtime.sec = Tue Mar 21 23:55:55 2023
[root@wsa test]# stat test.txt
File: test.txt
Size: 10 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 67552174 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2023-03-22 00:07:38.926108379 +0000
Modify: 2023-03-22 00:07:55.794041676 +0000
Change: 2023-03-22 00:07:55.794041676 +0000
Birth: 2023-03-21 23:55:55.413859045 +0000
与执行;
Operating System: AlmaLinux 8.7 (RHEL clone)
Kernel Version: 4.18.0-425.13.1.el8_7.x86_64 (64-bit)
[root@wsa test]# stat --version
stat (GNU coreutils) 8.30
Copyright (C) 2018 Free Software Foundation, Inc.
[root@wsa test]# xfs_db -r /dev/mapper/al-root
xfs_db> version
versionnum [0xb4b5+0x18a] = V5,NLINK,DIRV2,ATTR,ALIGN,LOGV2,EXTFLG,MOREBITS,ATTR2,LAZYSBCOUNT,PROJID32BIT,CRC,FTYPE,FINOBT,SPARSE_INODES,REFLINK