Linux中如何查看文件的创建时间详解
程序员文章站
2022-05-12 18:04:58
一、简介
linux的文件能否找到文件的创建时间取决于文件系统类型,在ext4之前的早期文件系统中(ext、ext2、ext3),文件的元数据不会记录文件的创建时间,它只会记录访...
一、简介
linux的文件能否找到文件的创建时间取决于文件系统类型,在ext4之前的早期文件系统中(ext、ext2、ext3),文件的元数据不会记录文件的创建时间,它只会记录访问时间、修改时间、更改时间(状态更改时间)。典型的文件的基础信息如下所示:
[root@bugwz ~]# stat test.file file: ‘test.file' size: 2 blocks: 8 io block: 4096 regular file device: 807h/2055d inode: 5255117 links: 1 access: (0755/-rwxr-xr-x) uid: ( 0/ root) gid: ( 0/ root) access: 2019-12-12 19:11:33.175841399 +0800 modify: 2019-12-12 19:11:37.564970487 +0800 change: 2019-12-12 19:11:43.079132663 +0800 birth: -
- access:访问时间,文件数据的最后访问时间(例如:读文件内容);
- modify:修改时间,文件数据的最后修改时间。(例如:修改文件内容);
- change:状态更改时间,这个跟 modify 时间很容易混淆,文件的属性(权限,大小等)的变更时间;
二、实践
2.1、获取文件的创建时间
获取文件inode号,如下所示,拿到inode号为:5255117;
[root@bugwz data]# stat /data/test.file file: ‘/data/test.file' size: 2 blocks: 8 io block: 4096 regular file device: 807h/2055d inode: 5255117 links: 1 access: (0755/-rwxr-xr-x) uid: ( 0/ root) gid: ( 0/ root) access: 2019-12-12 19:11:33.175841399 +0800 modify: 2019-12-12 19:11:37.564970487 +0800 change: 2019-12-12 19:11:43.079132663 +0800 birth: -
查找文件所在的磁盘路径,如下所示,拿到磁盘路径为:/dev/sda7
[root@bugwz data]# df -h filesystem size used avail use% mounted on /dev/sda3 3.9g 2.5g 1.2g 70% / devtmpfs 16g 0 16g 0% /dev tmpfs 16g 0 16g 0% /dev/shm tmpfs 16g 1.7g 14g 11% /run tmpfs 16g 0 16g 0% /sys/fs/cgroup /dev/sda1 12g 11g 787m 94% /usr /dev/sda5 7.8g 4.2g 3.2g 57% /tmp /dev/sda7 235g 180g 44g 81% /data /dev/sda6 7.8g 2.1g 5.3g 29% /var
使用debugfs查看文件的创建时间,发现创建时间crtime为:thu dec 12 19:05:23 2019
[root@bugwz data1]# debugfs -r 'stat <5255117>' /dev/sda7 debugfs 1.42.9 (28-dec-2013) inode: 5255117 type: regular mode: 0755 flags: 0x80000 generation: 758605841 version: 0x00000000:00000001 user: 0 group: 0 size: 2 file acl: 0 directory acl: 0 links: 1 blockcount: 8 fragment: address: 0 number: 0 size: 0 ctime: 0x5df2206f:12dddfdc -- thu dec 12 19:11:43 2019 atime: 0x5df22065:29ec81dc -- thu dec 12 19:11:33 2019 mtime: 0x5df22069:86b30fdc -- thu dec 12 19:11:37 2019 crtime: 0x5df21ef3:d586ca44 -- thu dec 12 19:05:23 2019 size of extra inode fields: 28 extents: (0):16949121
2.2、集成脚本:
#!/bin/sh [ $# -ne 1 ] && echo "usage: $0 {filename}" && exit 1 inode=`ls -i $1 |awk '{print $1}'` filename=$1 # 如果传入参数带/,则获取这个传入参数的目录路径并进入目录 `echo $filename | grep / 1> /dev/null` && { fpwd=${filename%/*};fpwd=${fpwd:=/};cd ${fpwd};fpwd=`pwd`; } || fpwd=`pwd` array=(`echo ${fpwd} | sed 's@/@ @g'`) array_length=${#array[@]} for ((i=${array_length};i>=0;i--)); do unset array[$i] subpwd=`echo " "${array[@]} | sed 's@ @/@g'` disk=`df -h |grep ${subpwd}$ |awk '{print $1}'` [[ -n $disk ]] && break done # 文件系统非ext4则退出 [[ "`df -t | grep ${disk} |awk '{print $2}'`" != "ext4" ]] && { echo ${disk} is not mount on type ext4! only ext4 file system support!;exit 2; } debugfs -r "stat <${inode}>" ${disk}
参考地址:
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。