我已经看过的 DropBox Mac客户和我目前正在研究执行一个类似的接口,不同的服务。

究竟怎么做,他们的接口与搜索这样吗?我非常怀疑这些目的代表在文件夹中的实际文件下载的每一个的负担?他们必须动态下,因为他们是需要的。所以你怎么能显示这些项目在取景器,而不具有实际文件系统的对象?

没有人知道这是如何实现Mac OS X?

或者任何指针的苹果API或其他开源项目,有一个类似的一体化与搜索?

有帮助吗?

解决方案

两个建议:

前者会允许你要写一个应用程序出现作为一个文件系统和所有权的事情;后者将允许移动的一切服务器的端,并让用户只是安装你的服务作为一个文件共享。

其他提示

Dropbox不支持MacFUSE或WebDAV,尽管这些可能是您尝试完成的完美解决方案。

如果它是由那些东西驱动的,那么当你没有连接时它就不会工作,因为它们都依赖于服务器存储实际信息而Dropbox没有。如果我退出Dropbox(通过菜单项完成)并断开网络连接,我仍然可以使用这些文件。那是因为文件实际存储在我的硬盘上。

这也意味着文件不需要“在每次加载时下载”,因为它们实际存储在我的机器上。相反,只通过线路发送增量,Dropbox应用程序(在后台运行)适当地修补文件。另一方面,Dropbox应用程序监视Dropbox文件夹中的文件,当它们发生变化时,它会向服务器发送适当的增量,并将它们传播到任何其他客户端。

此设置具有一些明显的优势:它在脱机时工作,速度提高了一个数量级,并且对其他应用程序是透明的,因为它们只是看到磁盘上的文件。但是,我不知道它如何处理合并冲突(一个或多个客户端离线可能很容易出现),如果服务器是唯一的副本而每个编辑都更改了中央副本,这不是问题。

Dropbox真正让人眼前一亮的是,他们还有一个额外的技巧,用它们当前的同步状态标记Dropbox文件夹中的项目。但这不是你在这里问的问题。

就目前的问题而言,你一定要研究MacFUSE和WebDAV,这可能是你问题的完美解决方案。但Dropbox的处理方式,后台应用程序更改磁盘上的实际文件,可能是一个更好的权衡。

Dropbox可能会使用 FSEvents 进行监控更改文件系统。这是一个很棒的API,甚至可以捆绑您的应用未运行时发生的更改。它与Spotlight使用的API相同。菜单栏应用程序可能会进行实际观察(例如,重新启动它可以修复挂起的上传内容)。

他们无法使用MacFUSE,因为这需要安装MacFUSE内核扩展以使Dropbox正常工作,而且由于我绝对没有安装它,我非常怀疑他们是否正在使用它。

客户端上的Dropbox是用python编写的。 客户端似乎使用sqlite3数据库来索引文件。 我想Dropobox会以块的形式分割文件,以减少带宽的使用。 顺便说一下,它有两个人拥有相同的文件,即使他们彼此不认识,服务器也可以优化并避免多次传输文件,只在服务器端复制它

对我而言,感觉就像一个经过大量修改的修订控制系统。它具有所有功能:基于增量更新文件,恢复或恢复旧版本文件的选项。几乎感觉他们正在使用git( GitFS ?)或某些文件系统他们设计的。

您也可以尝试文件传送带。它是一个Python守护程序,能够立即检测FS更改(在Linux上通过 inotify ,在OS X上通过 FSEvents ),处理文件同步它们到一个或多个目的地。

支持的协议:FTP,SFTP,Amazon S3(也支持CloudFront),Rackspace云文件。可以轻松扩展。使用 django-storages

“处理文件”:例如优化图像,转码视频—这最初被设想用于在加速网站的情况下将静态资产发送到CDN)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top