当前位置: 移动技术网 > 网络运营>服务器>Linux > Linux中如何查看文件的创建时间详解

Linux中如何查看文件的创建时间详解

2020年03月09日  | 移动技术网网络运营  | 我要评论

一、简介

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}

参考地址:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对移动技术网的支持。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网