2015-07-20 56 views
0

这个问题已经被问过几次了。 Dropbox等许多程序利用某种形式的文件系统api交互来即时跟踪发生在受监控文件夹中的更改。根据我的理解,然而,这需要一些守护进程在任何时候都处于在线状态,以等待来自文件系统api的回调。但是,我可以关闭Dropbox,更新文件和文件夹,并且当我再次启动Dropbox时,它仍然知道我对文件夹所做的更改是什么。这怎么可能?它是否彻底地搜索整个树来搜索更新?监控没有连续运行的文件夹中的更改

回答

0

简短答案是YES。

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

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

下面是从我的电脑的样本: enter image description here

你看到它跟踪(除其他东西):

  • 最后写入时间(貌似Unix time)。
  • checksum
  • 大小 - 以字节为单位。

每当谷歌驱动器启动时,它查询所有的文件和正在你的“谷歌驱动器”文件夹中的文件夹(你可以看到,使用Procmon

注意的变化,也可以从服务器同步下降

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

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