监视文件夹中的更改而不连续运行

时间:2015-07-20 22:34:05

标签: filesystems dropbox filesystemwatcher

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

1 个答案:

答案 0 :(得分:0)

简短回答是。

我们以Google云端硬盘为例,因为它的本地数据库没有加密,而且很容易看到发生了什么。

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

以下是我电脑的示例: enter image description here

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

  • 上次写入时间(看起来像Unix time)。
  • checksum
  • 大小 - 以字节为单位。

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

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

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

  

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