问题:
发现增量文件
难点:
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之中。