如何在家制作我自己的Dropbox / Ubuntu One服务器?

有没有人知道任何资源可以告诉我如何在家里制作我自己的“Dropbox,Ubuntu One”服务器?

我非常喜欢这些服务的想法,但我不想把我的“东西”放在云端。 理想情况下,它应该有一个在Linux和Windows上运行的客户端。

我尝试在我的Ubuntu 10.04上设置iFolder,但到目前为止没有任何成功。

目前还没有一个开箱即用的开源替代方案。 值得关注的最好的事情是sparkleshare项目: http : //www.sparkleshare.org/

希望这将成长为一个伟大的,自己做,替代。

实际上有很多。

  • 基于github GUI的同步软件中的SparkleShare (deps:git / subversion,mono,python)。

    一个。 版本控制:通过源控制系统,因此它是基于中央服务器的互斥锁版本号。

    湾 国家:正在制定中

    C。 优点:OSS,基于单声道,易于修改,缺点:用户级进程,GC依赖,无效的共享协议,数量级为git主要用于小文本文件,相当难编译(我试过)。 使用高级工具。

  • lipsync (deps:Unison,rsync)基于命令行服务的软件。

    一个。 版本控制:通过rsync delta算法 。 我假设程序员必须选择冲突解决方案。

    湾 状态:我找不到它的源代码,所以我不知道。 他的git repo中唯一的东西是二进制文件。

    C。 优点:很好的设置,使用中级工具。

  • iFolder – Novell的Dropbox。 我还没有研究过它的来源。 我只是希望得到这个编辑,如果人们有兴趣我会添加更多。

    一个。 版本:

    湾 状态:有问题甚至可以在Ubuntu上编译,更不用说打包了。 这是详细的安装指南 。

    C。 优点:Windows X64客户端,成熟,与ACL的AD集成,没有其他项目开始实施的function。 我认为这可能是一个很好的起点。 缺点:Novell可能不会将其公共svn repo用作主要仓库,只能执行代码丢弃。 我不确切地知道这一点。 可能太依赖openSUSE来轻松安装在Ubuntu上。 检查其算法。

  • scp / rcp – 不赞成使用rsync

  • DRDB – 用于分布式RAID-1的块设备镜像工具,即dropbox的服务器变体。 我还没有检查它的源代码,但它只是linux。 实际的算法很可能很容易与我在这个软件列表下面的思考中的源代码结合起来。

    一个。 版本控制:LAN / WAN上的内部消息格式

    湾 州:似乎足够成熟

    C。 优点:对于linux来说足够稳定,缺点:不支持其他操作系统


现在我正在研究改进虚拟化Windows 7上的编译时间,其中Windows 7 on metal的编译时间是40秒,但虚拟化大约3米20秒。 我正在考虑编写一个ioctl驱动程序,它是一个直写缓存,看起来像是NTFS上选定文件夹的ram磁盘。

使用上面的软件,我认为一个星期的2-3人全职开发将产生一个可用的Alpha,它不会通过组合上述软件而丢失你的文件。


在我的系统上,一般的想法是;

  1. 挂载虚拟驱动器\?{GUID},即ram-disk和RW-cache。 创建此虚拟驱动器的软件需要两个输入参数(这些参数至关重要):

    一个。 目标文件夹; 这是SMB文件夹,所以我将让操作系统的网络堆栈处理实际的IO。 在我的情况下,这又是VMWare虚拟文件夹,它本身就是ext4驱动器上的目标,但它可以很容易地成为使用SAMBA / SMB的文件服务器。

    湾 要安装的文件夹的路径,例如C:\ ramdisk

    这个用于创建虚拟卷的代码取自TrueCrypt的代码 ,位于/Driver/DriverFilter.c(以及其他文件中)

  2. 驱动器使用SMB / VMWare /网络协议在启动时获取数据; 它以低任务优先级从网络异步获取并填充其缓存。 它可以使用一个简单的压缩算法,并有一个使用消息框类型延续传递的线程,以获得很好的性能。 在Windows上它可以使用普通的异步IO调用,在linux上它可以使用epoll / inotify实现并从nginx获取代码。

  3. 我的服务是ram-disk将未命名的ramdisk驱动器挂载为NTFS文件夹。 所有程序都可以继续写入C:\ ramdisk,或者我称之为的任何程序。

  4. 来自网络的异步副本仍在继续。 读取速率约为100 MiB / s和2 GiB ramdisk,读取所有数据的时间为20.5秒。

每次读取调用都会将索引的CPU内计算执行到固定的n:ulong GiB max size数组中。 它需要解决冲突或读写锁。 如果我们实现像Microsoft Sync那样的冲突解决算法,我们可以将每个作为消息冲突的块传递给另一个冲突解决过程。 Dropbox通过创建一个新文件并将其命名为“PrevFileName用户名的冲突副本(yyyy-MM-dd).ext”来解决它。 也许这可以通过一个小小部件进行更改,如果有人针对该单个源进行编译 – 小部件会将未完成的更改检测为消息/事件并选择冲突解决协议。 因此,当以独占模式对文件夹进行编程时,Windows VM可以将窗口小部件设置为“独占”。

这将有这些PRO

  • 它将是非阻塞/异步
  • 它会做出假设,但不要求一台计算机主要写入文件。
  • 它适用于任意大的文件
  • 通过将提到的项目捆绑在一起,它可以在* nix和Windows上运行。
  • 当需要高读取性能时(即文件物理上位于磁盘上)它会工作
  • 当达到冲突事件时,可以提供一个用户界面应用程序,该应用程序允许用户编写/下载对不同种类的事件(即不同种类的文件)采取合理行动的插件。 例如,可以使用Kompare / WinDiff显示文本文件,而将复制二进制文件并将其另存为另一个文件。

OwnCloud ! 听起来像你正在寻找的东西。

我在Ubuntu UK Podcast上听说过Syncany ,目前已经测试,但看起来它符合要求

我认为这不是你想要的,但这取决于你的预期用途。

CrashPlan是一个备份软件包和相关的在线备份托管服务,但不同的是,他们的软件有一种模式,允许您通过互联网(或LAN)将数据备份到运行该软件的另一台PC。

这意味着目的地不必在云中。 它不像Dropbox,它更多的是备份而不是从任何地方同步和访问文件,但如果它只是你想要的备份,那么它运行良好。 如果你想从其他PC访问备份文件,我认为你可以进行“本地恢复”,但这不是我尝试过的。

基本软件包是免费的,支持“备份到另一台计算机”模式,但只能进行计划备份,但有一个“专业”版本的软件也需要花费并实时同步,而不仅仅是计划备份。 (云存储也是每月额外付费的可选项)

我使用Unison作为客户端和rsnapshot (带有perl脚本的rsync)来备份服务器。

如果要设置两个(或更多)具有已复制文件夹的计算机,请查看glusterfs。

如果您按照GlusterFS用户指南轻松设置。

没有人提到bitorrent同步 ? 运行任何东西 – Ubuntu,Windows,许多常见的智能手机操作系统,覆盆子pi ….你的名字,它可能工作,并作为一个普通用户。 加密传输,文件没有存储在云端(虽然我认为bittorrent为它运行跟踪器),速度相当快,你可以有选择地共享文件夹,几乎不涉及复杂化,你只需要将一个密钥复制并粘贴到另一个系统。

设置完成后,它就可以了。

我一直在关注AeroFS 。 看起来它可能是类似Dropbox的服务,云中的存储是可选的。 不知道他们是否/何时会实施移动支持,我想这需要您将这些文件同步到云端。 我主要对Windows,Mac和Linux计算机之间相当无痛的同步解决方案感兴趣。

他们处于早期测试阶段,但如果您愿意,可以注册邀请。

我使用带有mod_dav(webdav)的apache作为apache webserver,我可以将它作为驱动器挂载并通过web挂载/下载文件。 这很简单,但可能会满足您的需求。

虽然这里列出了一些有趣的替代方案,这是一个较老的问题,但我确信这个主题显然没有过时,相反,由于最近的隐私事件,这一主题越来越重要。

我想分享我自己的经验。 我目前针对自己托管的云环境的解决方案是Seafile 。

Seafilefunction:

  • 基于Web的云访问
  • 适用于Linux,Windows,Mac,iOS(非免费),Android的客户端
  • 用户/组管理
  • 通过不同的库文件组织
  • 通过客户端软件自动文件同步
  • 通过创建公共链接发布文件的可能性

我的Seafile经历:

  • 安装很简单快捷! (在一个纤薄的debian vm上,文件通过共享存储到物理主机dmraid 5)
  • 用户界面干净,function齐全
  • 客户端软件干净且function齐全
  • 到目前为止,我没有任何function问题! (现在用几周了)
  • function集是基本的(例如与owncloud相比),但我强调一切都在这里工作!
  • 没有直接的代理支持(至少对于linux客户端 – 和webinterface!)。 注意:webinterface工作,但通过webinterface下载文件在代理后面不起作用 – 不知道这是否可能以某种方式

由于我不需要代理支持,我对Seafile非常满意!

我使用SSHFS将我的服务器上的目录安装为台式机和笔记本电脑上的本地目录。 所有文件更改都直接保存到服务器上。 与Dropbox不同,文件不会本地存储在客户端计算机上。 我认为这很好,因为您不必担心同步和版本控制,但它不适合离线使用或非常大的文件。

它非常直接和简单,我发现它是最好的解决方案。 我唯一不使用它的是大型媒体,如图片和电影,因为所有文件都可以通过网络访问。 那些我与Rsync同步。

链接到SSHFS文档 – > http://fuse.sourceforge.net/sshfs.html