最近写打包备份文件log的命令,研究了一下时间属性的的含义。做个记录。
Linux系统文件有三个主要的时间属性,分别是
ctime(change time, 而不是create time)
atime(access time), mtime(modify time)。后来为了解决atime的性能问题,还引入了一个relatime的属性。。
ctime, 很多朋友把它理解成create time,包括很多误导人的书籍也是这么写。实际上ctime是指change time。
mtime, 就是modify time。
mtime和ctime的区别在于,只有修改了文件的内容,才会更新文件的mtime,而对文件更名,修改文件的属主等操作,只会更新ctime。
举例说明: 对文件进行mv操作,mtime不变,ctime更新;编辑文件内容,mtime和ctime同时修改。其他操作的影响,可以自己试验。但是我发现对文件执行touch操作,会同时修改mtime和ctime,所以具体修改哪个时间,还取决于不同命令自己的实现;
atime, 这个就是每次查看文件内容的时候会更新。比如cat操作,而ls操作是不会更新的。
通过stat来查看文件的mtime,ctime,atime等属性,也可以通过ls命令来查看,具体如下:
ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls -l filename 列出文件的 mtime
-mtime 后带参数的解释
+1 内表示 1 * 24 +24小时以外..
+0 才表示 0 * 24 +24小时以外
1 表示 1*24 + 24 到 24 之间..
0 表示 0*24 + 24 到 0 之间..
-1 表示 0*24 +24 内,甚至为未来时间...
# crontab -e
* 1 * * * cd /opt/logs/mns/app/ && find -name "mns-web.log.*" -mtime 0 -exec tar -zcvf {}.tar.gz {} --remove-files \;
打包当前日期前24小时内的log文件。打包压缩完成后,并删除源文件。