这个问题已被问过几次。许多程序(如Dropbox)都使用某种形式的文件系统api交互来即时跟踪受监视文件夹中发生的更改。 然而,据我所知,这需要一些守护进程始终在线以等待来自文件系统api的回调。但是,我可以关闭Dropbox,更新文件和文件夹,当我再次启动它时,它仍然可以知道我对我的文件夹所做的更改是什么。这怎么可能?它是否彻底搜索整棵树以寻找更新?
答案 0 :(得分:0)
简短回答是。
我们以Google云端硬盘为例,因为它的本地数据库没有加密,而且很容易看到发生了什么。
基本上它会保留Google云端硬盘文件夹的快照。
您可以使用DB browser for SQLite浏览snapshot.db(通常位于%USER%\AppData\Local\Google\Drive\user_default
下)。
你看到它跟踪(以及其他内容):
每当Google云端硬盘启动时,它都会查询“Google云端硬盘”文件夹下的所有文件和文件夹(您可以使用Procmon查看)
请注意,更改也可以从服务器同步
还有Change Journals,但我不认为Dropbox或GDrive使用它:
为了避免这些缺点,NTFS文件系统维护更新序列号(USN)更改日志。如果对卷中的文件或目录进行任何更改,则会更新该卷的USN更改日志,其中包含更改的说明以及文件或目录的名称。