16

我们知道 Dropbox 桌面客户端使用二进制差异算法将所有文件分解成块,并且只上传它在云中还没有的块 ( https://serverfault.com/questions/52861/how-does- dropbox-version-upload-large-files)。

尽管如此,据我所知,Dropbox API 只能在需要同步时上传整个文件( /files_put/files (POST) )。

有没有办法使用 Dropbox API 进行差分/增量同步,即像桌面客户端一样只上传文件的更改部分?

如果这是不可能的,那么使用 Dropbox API 定期同步具有小更改的大文件的最佳做法是什么?

4

1 回答 1

1

不幸的是,这是不可能的,我怀疑它可能永远不可用。

在做了一些研究之后,我发现了一个将 delta-syncing 集成到 API[*] 中的功能请求。Dropbox 没有回应,社区也没有支持这个请求。

我会做出一个有根据的猜测,Dropbox 之所以没有提供这个功能,而且很可能永远不会提供,是因为这在未知的开发人员手中是一个危险的功能。

考虑您编写的应用程序使用这种增量更改更新系统来更新大文件的情况。您彻底测试您的应用程序并将其发布到应用程序商店。在您首次发布和大量下载后几周,您开始收到差评和投诉,因为您设法错过了一个非常具体的测试用例。

在这个特定的、有问题的情况下,您错误地计算了 1 个字节的差分偏移量。不好了!您现在已经损坏了数百个用户的数千个文件!

考虑到这种可能性,我想我个人会要求 Dropbox 永远不要提供这样的开发功能。如果他们将这样的功能集成到 API 中,他们将打破他们的第一个目的——为您的重要文件提供一致、安全和可靠的云备份。

[*]:这是原来的参考位置,但现在是死链接。

https://www.dropbox.com/votebox/1515/delta-sync-api-for-mobile-applications

于 2013-10-04T12:22:50.130 回答