准确查找前一天00:00-24:00增加的文件

问题:

发现增量文件

难点:

1,上传的文件都是图片,目录结构和文件名称都没有与日期相关的规律;

2,操作系统无法使用inotify;

3,上传图片的mtime属性不是上传操作时间点的时间,比如3月10日上午10点上传的图片,其mtime属性值可能是2012年7月份,也可能是2018年3月3日、3日、5日等;所以,无法使用find的-mtime选项来锁定前一天00点到今天00点内变动的文件;

 

最终解决办法:

经过了个把月的有一搭没一搭的思考,终于今天把问题解决了,那就是使用find的-ctime来查找文件,不要使用mtime。

 

参考文章:

1,ctime和mtime的区别

mtime: (modify time)显示的是文件内容被修改的最后时间,比如用vi编辑时就会被改变。(也就是Block的内容)

ctime: (change time)显示的是文件的权限、拥有者、所属的组、链接数发生改变时的时间。当然当内容改变时也会随之改变(即inode内容发生改变和Block内容发生改变时)

我的理解:上传一个新文件的时候,不论其mtime是什么,系统都会给它分配一个新的inode用来记录其元数据,这个时候的ctime必然会修改为创建文件时的时间;如果已经存在的文件被修改了,那么文件的字节数必然会变,这也导致其inode信息必然也会改变,从而ctime也会改变到修改文件的时间点。到此,ctime完全可以满足上传新文件和修改已经存在的文件所触发的时间点。

 

 

2,inode记录信息

inode包含文件的元信息,具体来说有以下内容:

  * 文件的字节数

  * 文件拥有者的User ID

  * 文件的Group ID

  * 文件的读、写、执行权限

  * 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。

  * 链接数,即有多少文件名指向这个inode

  * 文件数据block的位置

可以用stat命令,查看某个文件的inode信息:

stat example.txt

总之,除了文件名以外的所有文件信息,都存在inode之中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值