macos - macOS: DropBox客户端的工作原理?

  显示原文与译文双语对照的内容
118 0

我一直在看 DropBox客户端,我目前正在研究为不同的服务实现一个类似的接口。

他们是怎样与finder接口的? 我很怀疑在文件夹中表示的这些对象是在每次加载时下载的实际文档? 他们必须根据需要动态下载。 那么,如何在查找器中显示这些项目,而不需要实际的文件系统对象?

有多少人知道这在中是如何实现的?

或者任何指针苹果或者它的他开放源码项目的指针,这些项目具有与finder相似的集成?

时间: 原作者:

134 5

两个建议:

前者将允许你编写一个显示为 文件系统的应用程序并执行所有正确的操作。

原作者:
119 4

Dropbox不是由MacFUSE或者 web dav驱动的,尽管这些可以能是你试图完成的完美解决方案。

如果它是由这些东西供电的,那么当你没有连接的时候,它们都不能用来存储实际的信息。 如果我退出( 通过菜单项完成) 并断开网络连接,我仍然可以使用这些文件。 那是因为文件实际上是储存在我硬盘上的。

这也意味着文件不需要是"下载的时候",因为它们实际上存储在我的机器上。 相反,只有增量通过线路发送,而Dropbox应用程序( 在后台运行) 正确地修补了文件。 另一方面,Dropbox应用程序监视Dropbox文件夹中的文件,当它们发生变化时发送适当的增量。

这里设置有一些决定的优点: 它在脱机时工作,它是一个数量快的顺序,它对它的他应用程序是透明的,因为它们只看到。 但是,我不知道如何处理合并冲突( 可以很容易地出现在一个或者多个客户端脱机),如果服务器是中央复制的唯一副本和每个修改。

Dropbox真正的照亮是他们有一个附加的技巧,可以将Dropbox文件夹中的项目用当前同步状态。 但这不是你在这里要求的。

至于手边的问题,你应该查看MacFUSE和 web dav,这可以能是你的问题的完美解决方案。 但是,使用Dropbox进行事件处理,后台应用程序更改磁盘上的实际文件可以能是更好的折扣。

原作者:
62 3

Dropbox很可能使用 FSEvents 监视文件系统的更改。 它是一个伟大的API,甚至可以捆绑在你的应用程序未运行时发生的更改。 它是Spotlight使用的相同 API 。 菜单栏应用可能会实际观察到自己的( 因为重启它可以修复挂起的上传,例如) 。

不可以能使用 MacFUSE,因为这需要安装MacFUSE内核扩展,因为我绝对没有安装它。

76 0

客户机上的Dropbox是用 python 编写的。 客户端似乎使用sql数据库来索引文件。 我想Dropobox分割了一个文件块以减少带宽的使用。 顺便说一下,这两个人都有相同的文件,即使他们不认识,服务器也可以优化文件。

...