【问题标题】:Monitoring for changes in folder without continuously running在不连续运行的情况下监视文件夹中的更改
【发布时间】:2015-10-10 05:21:19
【问题描述】:

这个问题已经被问过好几次了。像 Dropbox 这样的许多程序利用某种形式的文件系统 api 交互来即时跟踪受监控文件夹中发生的更改。 然而,据我了解,这需要一些守护进程始终在线以等待来自文件系统 api 的回调。但是,我可以关闭 Dropbox,更新文件和文件夹,当我再次启动它时,它仍然可以知道我对文件夹所做的更改。这怎么可能?它是否会彻底搜索整棵树以寻找更新?

【问题讨论】:

    标签: filesystems dropbox filesystemwatcher


    【解决方案1】:

    简短的回答是肯定的。

    我们以 Google Drive 为例,因为它的本地数据库没有加密,很容易看出发生了什么。

    基本上,它会保留 Google Drive 文件夹的快照。 您可以使用DB browser for SQLite 浏览snapshot.db(通常在%USER%\AppData\Local\Google\Drive\user_default 下)。

    这是我电脑上的一个示例:

    您会看到它跟踪(以及其他内容):

    • 上次写入时间(类似于Unix time)。
    • checksum
    • 大小 - 以字节为单位。

    每当 Google Drive 启动时,它都会查询您“Google Drive”文件夹下的所有文件和文件夹(您可以使用 Procmon 查看)

    请注意,更改也可以从服务器同步

    还有Change Journals,但我认为Dropbox或GDrive不会使用它:

    为避免这些缺点,NTFS 文件系统维护一个更新序列号 (USN) 更改日志。当对卷中的文件或目录进行任何更改时,该卷的 USN 更改日志会更新,其中包含更改说明以及文件或目录的名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      相关资源
      最近更新 更多