查询 Linux 文件创建时间

通常我们使用 ls -l 命令看到的时间是文件的最后修改时间, 那么如何查看文件的创建时间呢?

在 POSIX 文件系统, 文件有如下4个属性:

  1. ctime: (change)文件属性变化时间: 包括文件内容变化, 文件属性变化, 文件名变化,文件位置变化等.
  2. atime: (access)文件最后被访问时间.
  3. mtime: (modify)文件内容最后修改时间.
  4. crtime: (create)文件创建时间.

通过 stat <文件名> 可以查看前面3个时间:

eric@host:~$ stat test.txt
  File: 'test.txt'
  Size: 5             Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 1063236     Links: 1
Access: (0777/-rwxrwxrwx)  Uid: (110061216/ xiatian)   Gid: (110061216/ xiatian)
Access: 2020-02-05 01:45:37.045123935 -0700
Modify: 2020-02-05 01:43:27.147481567 -0700
Change: 2020-02-05 01:46:55.609375115 -0700
 Birth: -

可是文件的创建时间为空, 如果需要查看文件创建时间, 可以通过下面的方式:

  1. 通过 ls -i <文件名> 或者 stat <文件名> 获取文件的 inode ID, 比如上面的 1063236
  2. 查看文件所在的文件系统

    eric@host:~$ df -h
    Filesystem Size Used Avail Use% Mounted on
    udev 7.9G 0 7.9G 0% /dev
    tmpfs 1.6G 169M 1.5G 11% /run
    /dev/vda1 75G 15G 58G 20% /
    tmpfs 7.9G 52K 7.9G 1% /dev/shm

  3. 通过 debugfs 查看 (下面的 crtime 就是创建时间)

    sudo debugfs -R 'stat <1063236>' /dev/vda1
    Inode: 1063236 Type: regular Mode: 0777 Flags: 0x80000
    Generation: 1248641795 Version: 0x00000000:00000001
    User: 110061216 Group: 110061216 Size: 5
    File ACL: 0 Directory ACL: 0
    Links: 1 Blockcount: 8
    Fragment: Address: 0 Number: 0 Size: 0
    ctime: 0x5e3a80ff:91494e2c -- Wed Feb 5 01:46:55 2020
    atime: 0x5e3a80b1:0ac2257c -- Wed Feb 5 01:45:37 2020
    mtime: 0x5e3a802f:23298f7c -- Wed Feb 5 01:43:27 2020
    crtime: 0x5e3a7f96:bf9070f4 -- Wed Feb 5 01:40:54 2020
    Size of extra inode fields: 32
    EXTENTS:
    (0):715060
    (END)

参考:
https://www.tecmint.com/debugfs-command-show-file-creation-time-in-linux/
http://wisercoder.com/knowing-difference-mtime-ctime-atime/

标签: none

添加新评论