让 TrueCrypt 卷的文件立即更新吗?

让 TrueCrypt 卷的文件立即更新吗?

我正在使用 TrueCrypt 卷的文件与 dropbox 同步。我注意到,只有当我卸载卷的文件时,dropbox 才会同步,所以我认为 TrueCrypt 也只有在卸载时才会更新文件。我只有在离开电脑时才会卸载卷,所以如果有一天我的电脑由于某些意外原因突然关闭,那将是一件坏事,我可能会丢失所有正在进行的文件。
所以,我想知道我是否可以在卷中发生更改时更新卷的文件,然后卷的文件将始终更新到最新版本?

答案1

这可能不是您可以轻松实现的行为,但可能存在一种破解方法。

当打开一个文件进行写入,并向其中写入数据时,最终写锁文件发布后,修改日期等文件元数据会更新。

当文件被创建、删除、重命名或保存更改时,操作系统事件被触发,详细说明更改的类型以及受影响的目录。 Dropbox Sync 等程序会建立“观察者”在某些目录上,这样当发生更改时它们就会收到通知。Sync 会注意到更改,并启动其例程。由于卷的大小是静态的,因此不会检测到大小更改。重要的一点是,只有当文件更改完成时,它才会触发 sync 会注意到的目录事件。

当您安装 Truecrypt 卷时,读/写锁在卷上建立,除非它以只读方式挂载。此锁将一直保持,直到卷文件被卸载。挂载卷后,您的 PC 可以使用卷自己的文件系统访问卷上的文件,并将其打开进行写入。保存或关闭该文件时,会更新元数据并触发目录事件,但它会指示文件的挂载位置已更改(例如 z:\MyFiles\File1.doc)。Dropbox 之前从未听说过该目录,也不会监听其中的更改。但是,卷文件本身的写锁尚未释放,因为卷仍以写访问方式挂载,并且其元数据未更改。

请注意,即使同步确实监视了 z:\MyFiles\(卷内文件的挂载位置)上的更改,它也会解密该文件并将其以纯文本形式存储在 Dropbox 上。

就您而言,您正在更新 truecrypt 卷内的文件系统,并且数据正在写入卷文件内的二进制 blob。这会更改文件的状态,但这样做的方式不会触发目录事件。只有当文件被卸载时,写入锁定才会被释放,并且目录事件才会触发。

在研究了这个问题之后,我有一个理论,即您可以通过在同步文件夹中创建或编辑文件来解决此问题。我不知道这是否会起作用,而且这是一种肮脏的黑客行为,因此请自行判断。

线表示 Dropbox Sync 使用同步差分对文件夹执行差异化,并且可以就地更新二进制 blob,而无需替换整个文件。这意味着,从理论上讲,如果在卷安装时触发了目录事件,则自安装以来的更改将被上传。

然而,这种方法很危险,因为可能正在进行不完整的保存,并且可能导致同步的数据被截断或损坏。磁盘写入缓存在内部卷上可能会很难确定数据何时完全刷新到磁盘。这就是为什么等待卸载是个好主意的原因之一,因为卸载会立即刷新写入缓存。即使磁盘缓存被禁用,在计算差异时,内部文件系统仍可能处于不稳定的静止状态,这可能会损坏 Dropbox 端的卷。

相关内容