我有一个免费的 Dropbox 帐户(2GB),我想知道大文件的版本控制是如何运作的。
我已将网站的所有网页文件完整备份,大小刚好超过 1GB。首次上传 1GB 后,每次同步时 Dropbox 都会计算出文件的增量,还是必须再次上传整个文件才能对其进行版本控制?
如果总能拥有大文件的最新版本那就太好了,但我不想每次都浪费 1GB 的带宽。
这可能吗?
谢谢,
答案1
Dropbox 使用二进制差异算法将所有文件分解为块,并且只上传云端尚未拥有的块。所有这些都在您的计算机上本地完成。
Dropbox 不仅仅使用您已经上传的文件,它还将每个人的文件聚合到一个块数据库中,并根据该数据库检查每个本地块哈希。
这意味着,如果其他人上传了与您相同的文件(例如,最新的 Ubuntu ISO),则上传会立即完成,因为无需上传任何内容,但如果您更新的是定期更改的文件(如备份文件),则只会上传更改部分。如果您上传的是完全独特的文件,则必须等待所有文件上传完毕。
答案2
Dropbox 声称会为每个文件的每 4MB 创建哈希值。这样,如果您更改 100MB 文件中连续的 2MB,则可能只需上传 4MB(或 8MB,如果您跨越第二个 4MB 块)即可重新同步该文件。
我们使用的哈希仅适用于 4MB 文件块
来源:https://blogs.dropbox.com/tech/2016/05/inside-the-magic-pocket/
答案3
还要注意的是,当您更改文件时,它不会立即上传整个文件。例如,如果您有一个 2GB 大小的独特文件,比如您持有的加密磁盘驱动器(例如当您使用 truecrypt 或 pgpdisk 时),并且您只更改了加密磁盘中的几个文件,则 dropbox 将仅上传有效更改的块。因此,例如,如果您将 2GB 大小的 pgpdisk 文件上传到 dropbox,然后您只更改了其中的 100MB,dropbox 将足够智能地检测并更新只有发生了改变. 因此您不会浪费上传带宽来上传已经存在的内容。
我看到 Dropbox 团队正在开发的另一个功能是让 Dropbox 检测本地网络上运行的其他 Dropbox 实例,并在它们之间同步信息。例如,您有一台笔记本电脑和一台台式机,两者都有相同的 Dropbox 帐户,并且您在台式机上更新文件 - 并且台式机立即与“云”同步 - 当您插入笔记本电脑时,Dropbox 不会转到云端,而是直接从您的台式机下载差异,并且不会浪费您的下载带宽。这还有待实现 - 但将是一个很棒的功能!