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


70

是否有人知道可以向我展示如何在家制作自己的“ Dropbox,Ubuntu One”服务器的资源?

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

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


我不确定我是否理解问题。Dropbox怎么了?
奥利(Oli)

它有一定的存储限制,并且在许多项目中都有许多合作者,那些支付50 GiB的费用很快就会丢失。
亨里克

4
允许Dropbox之类的公司存储我们的个人数据可能会产生无法预料的后果。值得庆幸的是,有一个正在进行中的项目正在制作一个可以在插件式ARM驱动的计算机上运行您自己的个人云的OS。
daithib8

2
具有讽刺意味的是,这并不简单sudo apt-get install ubuntu-one-server
Prateek

Answers:


41

当前没有开箱即用的出色开源替代方案。最值得关注的是sparkleshare项目:http//www.sparkleshare.org/

希望这将成为一个伟大的事情,自己动手,替代。


2
不幸的是,它使用git DVCS作为后端,不适合约1TB的二进制数据,因为对二进制数据的修改将占用服务器空间。但是除此之外,它看起来很有希望。
2012年

44

实际上有很多。

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

    一种。版本控制:通过源代码控制系统,因此基于版本号在中央服务器上基于互斥体。

    b。状态:开发中

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

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

    一种。版本控制:通过rsync delta algoritm。我认为程序员必须选择冲突解决方案。

    b。声明:我找不到其源代码,所以我不知道。他的git repo中唯一的东西就是二进制文件。

    C。优点:设置不错,使用了中级工具。

  • iFolder -Novell的Dropbox。我尚未研究其来源。我只想进行此编辑,如果人们有兴趣,我会添加更多内容。

    一种。版本控制:

    b。状态:在Ubuntu上编译它存在问题,更不用说软件包了。这是详细的安装指南

    C。优点:Windows X64客户端,成熟,具有ACL的AD集成,没有其他项目开始实现的功能。我认为这可能是一个很好的起点。缺点:Novell可能不会将其公共svn存储库用作主要存储库,而只会执行代码删除。我对此一无所知。可能与openSUSE耦合太紧而无法在Ubuntu上轻松安装。查看其算法。

  • scp / rcp-不推荐使用rsync

  • DRDB-用于分布式RAID-1的块设备镜像工具,即Dropbox的服务器变量。我还没有签出它的源代码,但是它只是Linux。在此软件列表下方,按我的想法,实际的算法可能很容易与源代码结合。

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

    b。状态:似乎已经足够成熟

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


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

使用上述软件,我认为一个星期的2至3人全日制开发将产生一个可用的Alpha,通过组合上述软件,您不会丢失任何文件。


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

  1. 挂载虚拟驱动器\?{GUID},即虚拟磁盘和RW缓存。创建此虚拟驱动器的软件需要两个输入参数(至关重要):

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

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

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

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

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

  4. 来自网络的异步复制仍在继续。读取速度约为100 MiB / s和2 GiB ramdisk,则读取所有数据将需要20.5 s。

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

这将有这些专业人士

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

lipsync的bin文件夹包含shell脚本,而不是二进制文件。
haggai_e 2011年



3

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

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

这意味着目的地不必在云中。它与Dropbox完全不同,它更多地是关于备份而不是从任何地方同步和访问文件,但是,如果只是备份,则效果很好。如果您想从另一台PC访问备份的文件,我认为您可以执行“本地还原”,但这不是我尝试过的。

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



2

-1我认为这不是最佳解决方案,因此不是答案。
亨里克

-1,这是一个rsync服务器,而不是像解决方案一样的保管箱……
Arman

1
该解决方案的实用性受到了限制,因为它仅链接到另一篇文章,因此存在链接错误的风险。在简单地以给定链接为来源的同时,应将此答案编辑为更实质的内容。
Christopher Kyle Horton

虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
蒂姆(Tim)

2

如果要使用复制文件夹设置两台(或更多)计算机,请查看glusterfs。

如果您遵循《GlusterFS用户指南》,则设置起来很容易。


您是说在GlusterFS群集中,当客户端连接到其他客户端时文件将被同步,但是与其他客户端断开连接的客户端仍可在本地使用文件系统?我正在考虑使用它在笔记本电脑和服务器之间进行同步。
瑞安·汤普森

是。我尚未完成测试,但它似乎可以正常工作。
理查德·霍洛威

这在Windows上不起作用,因此不“兼容Dropbox”。
亨里克

2

没有人提到过bitorrent同步吗?可以在任何东西上运行-Ubuntu,Windows,许多常见的智能手机操作系统,树莓派...。您可以将其命名,并且可以作为普通用户使用。加密传输,文件不会存储在云中(尽管我认为bittorrent会为它运行跟踪器),速度相当快,您可以有选择地共享文件夹,并且几乎不涉及复杂性,您只需要复制并粘贴一个密钥即可系统。

设置完成后,就可以使用。


1

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

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


1

我将apache与mod_dav(webdav)一起用于apache网络服务器,我可以将其安装为驱动器并通过网络上传/下载文件。这很简单,但是可以满足您的需求。


1

尽管这里已经列出了一些有趣的替代方法,并且这是一个较旧的问题,但我坚信,由于最近一次隐私泄露事件,该主题显然并不过时,并且正变得越来越重要。

因此,我想分享自己的经验。我当前针对类似托管云的环境的解决方案是Seafile

Seafile功能:

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

我的Seafile经验:

  • 安装非常简单快捷。(在纤薄的debian vm上,文件通过共享存储到物理主机dmraid 5)
  • 用户界面干净且功能正常
  • 客户端软件干净且功能正常
  • 没有功能性问题对我来说,到现在为止!(从现在开始已经使用了几周)
  • 功能集是基本的(例如,与owncloud相比),但我强调,一切都在这里工作!
  • 没有直接代理支持(至少对于linux客户端-和Web界面!)。注意:Web界面可以使用,但是通过Web界面下载文件在代理之后不起作用-不知道这样做是否可行

因为我不需要代理支持,所以我对Seafile非常满意!


0

我使用SSHFS将服务器上的目录挂载为台式机和笔记本电脑上的本地目录。所有文件更改都直接保存到服务器上。但是,与保管箱不同,文件不是本地存储在客户端计算机上。我认为这很棒,因为您不必担心同步和版本控制,但是对于脱机使用或非常大的文件而言,它并不是理想的选择。

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.