如何保持SD卡文件夹同步像Dropbox / Google驱动器一样

时间:2015-01-04 14:23:32

标签: android database dropbox sync

您好我正在学习Dropbox,Google Drive应用程序始终以非常好的方式保持同步。我想向他们学习他们实际上是如何做的。

我有这种做法,就像在应用程序中创建数据库一样。一旦用户将文件添加到该文件夹​​中,然后在数据库和上传状态中添加该文件信息。

在添加/更新/删除任何文件时,同时更新已上传的状态并开始上传文件。

我不确定这种做法是否错,请指导你们可能会对此有所了解。

我想知道Dropbox应用程序如何保持我的Android手机的SD卡文件夹始终同步,即使我从浏览器等任何地方删除该文件夹的任何文件。

每当用户从浏览器或任何地方同时删除任何文件时,dropbox会从我SD卡中的该文件夹中删除该文件。他们是怎么做到的?他们是否在1秒的间隙内使用推送通知系统或运行服务来了解是否有任何文件被更新/添加/删除。

提前致谢。

2 个答案:

答案 0 :(得分:0)

我确定导出是一项改进,但为什么不能将SD卡文件夹同步到Dropbox?我认为这可能更有用,更符合dropbox的目的。 来自Apple我对使用Android可以做的所有事情和我可以下载的文件感到惊讶。我很高兴我的设备上有一个同步并备份到云端的Dropbox文件夹。

答案 1 :(得分:0)

检测更改

最难的部分是区分两种类型的新文件' 只是一个已发布的新文件或最近删除的文件,您可以决定是删除后者还是将其复制到丢失的目标。 将文件从一个文件夹移动到另一个文件夹时也会发生同样的情况。 大多数这些同步系统使用隐藏文件来存储文件移动,历史记录(重命名,权限,更改,...)和删除。这些可以通过linux上的内核子系统检测到 inotify ,例如

这样,只要请求同步,应用程序就会同时与中央服务器同步,中央服务器会记录上次同步请求。 所有其他连接的客户端都在检查上次同步时间,如果它更新,则会启动同步到那个时间。

<2>现有方法:

p2p系统喜欢 bittorent sync ,这个系统能够在每个对等体之间同步,没有中心空间

泛型双向同步,例如 Unison ,它是在rsync之上创建的,并存储所需信息以了解如何处理已移动,重命名和删除的文件。

轮询间隔

关于时间间隔,让它变得动态是一个好主意。基于上次同步。如果同步是最近的,请每隔10秒检查一次,如果几天前同步,请将其设为30秒,依此类推。人们不介意在0到10秒之间等待第一次改变,但他们会介意他们不得不一次又一次等待10秒。所以,如果变化是非常近期的,那么&lt; 1分钟,每隔1或2秒检查一次。

从上一次回复开始1或2秒,最后一次请求,或者如果由于某种原因请求的时间超过1秒,您将最终填满队列。