加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 检测文件是否被修改,即使在最后一秒内,也没有散列?

发布时间:2020-12-14 01:29:12 所属栏目:Linux 来源:网络整理
导读:这适用于Mac,但它也可能适用于 Linux,所以我已经标记了它. 我正在通过目录递归并获取具有文件系统属性的树. 然后每当窗口重新聚焦时我再次(再次)再次递归.当我读取目录时,我正在寻找任何已修改并需要对其进行操作的文件. 想到的显而易见的事情是比较每个文件
这适用于Mac,但它也可能适用于 Linux,所以我已经标记了它.

我正在通过目录递归并获取具有文件系统属性的树.

然后每当窗口重新聚焦时我再次(再次)再次递归.当我读取目录时,我正在寻找任何已修改并需要对其进行操作的文件.

想到的显而易见的事情是比较每个文件的修改日期,但是我的单元测试证明这不可靠,因为测试本身在不到一秒的时间内执行…结果是我的测试更改的文件被视为未经修改(因为它只精确到1秒).

到目前为止,我的修复方法还是比较了文件大小,但这样做的风险是,如果文件被更改,并且结果大小相同,它也将无法检测到.

远非散列每个文件,这是不可行的(在递归整个目录树时太慢),HFS / HFS提供的其他东西我可以使用吗?喜欢附加到文件的某种版本号/修改计数?我担心没有,虽然实际上文件的边缘情况变化与我的单元测试一样快,但是在实际用例中不太可能是一个问题.

解决方法

实时,最少负载的解决方案:

> Linux:inotify
> Mac:kqueue

请注意,有关修改时间分辨率的问题仅针对HFS+.

最常用的跨平台解决方案是File Alteration Monitor.

其他链接:

> detect if something is modified in directory,and if so,backup – otherwise do nothing
> c program for directory monitor
> http://en.wikipedia.org/wiki/Inotify
> http://en.wikipedia.org/wiki/HFS%2B
> http://en.wikipedia.org/wiki/Kqueue

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读