昨天把一个没有顶层路径的压缩包解压了,文件混合在了当前路径,想通过时间找到新解压出来的文件删掉,因此有了此文。
Linux文件大家熟知的有三个时间:
Atime访问时间,可以禁用此时间的更新减轻内核的工作 ls -lu
mtime修改时间,文件内容修改的时间 ls -l
ctime状态改变时间,文件内容 和 文件的信息(权限等)改变的时间ls -lc
没有创建时间,用stat命令查看文件:
root@hare:~# stat a
File: ‘a’
Size: 1913 Blocks: 8 IO Block: 4096 regular file
Device: fc00h/64512d Inode: 58834 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-01-15 21:58:03.057388606 +0800
Modify: 2018-01-15 21:57:57.233393198 +0800
Change: 2018-01-15 21:57:57.237393195 +0800
Birth: -
有个Birth时间,但是为空?经搜索发现, 据说BSD 和 Cygwin支持Birth,Linux需要等到内核提供xstat()接口才行。http://lists.gnu.org/archive/html/bug-findutils/2011-11/msg00015.html
不过万能的网友还发现了另外一个方式(ext4文件系统下测试):
root@hare:~# ls -i a
58826 a
root@hare:~# debugfs -R 'stat <58826>' /dev/mapper/tiny--vg-root
Inode: 58826 Type: regular Mode: 0644 Flags: 0x80000
Generation: 4107976241 Version: 0x00000000:00000001
User: 0 Group: 0 Size: 3
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 8
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x5a600348:b92f2880 -- Thu Jan 18 10:15:36 2018
atime: 0x5a60037f:2bff12cc -- Thu Jan 18 10:16:31 2018
mtime: 0x5a6002ef:8c67dd00 -- Thu Jan 18 10:14:07 2018
crtime: 0x5a600173:90494cdc -- Thu Jan 18 10:07:47 2018
Size of extra inode fields: 28
EXTENTS:
(0):285456
(END)
使用debugfs用inode号查看,会发现一个crtime,这就是创建时间了。
备注:文件被修改,mtime和ctime会同时被改变
如果做测试,修改用echo 'hello' > file,不要用vim,vim会创建新文件inode就变了。
最后回到开始我的问题,因为解压出来的文件是新创建的,他们的inode信息都是新的,没有修改内容和权限的情况下,我们可以认为ctime就是创建时间,atime和mtime一般会从压缩包继承出来。