当前位置: 首页>>技术问答>>正文


如何在家里创建自己的Dropbox/Ubuntu One服务器?

, ,

问题描述

有谁知道任何资源可以告诉我如何在家里创建自己的“Dropbox,Ubuntu One”服务器吗?

我非常喜欢这些服务的想法,但我不想将我的’stuff’放入云中。理想情况下,它应该有一个在Linux和Windows上运行的客户端。

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

最佳解决方案

目前没有一个很好的开源替代品可以开箱即用。最好的事情是关注sparkleshare项目:http://www.sparkleshare.org/

希望这会成长为一个伟大的,自己动手的,另类的。

次佳解决方案

其实有很多。

  • github GUI-based同步软件SparkleShare(deps:git /subversion,mono,python)。一个。版本控制:通过源控制系统,因此它是通过版本号在中央服务器上的mutex-based。湾状态:正在开发中c。优点:OSS,mono-based很容易修改,缺点:user-level进程,GC-dependent,无效的共享协议,因为git主要用于小文本文件,相当难编译(我试过)。使用high-level工具。

  • lipsync(deps:Unison,rsync)命令行 service-based软件。一个。版本控制:通过rsync delta algoritm。我假定程序员必须选择冲突解决方案。湾状态:我找不到它的源代码,所以我不知道。他的git回购中唯一的东西是二进制文件。 C。优点:很好的设置,使用middle-level工具。

  • iFolder – Novell的Dropbox。我还没有研究它的来源。我只想把这个编辑过了,如果人们有兴趣,我会添加更多。一个。版本控制:b。状态:在Ubuntu上甚至可以编译它有问题,更不用说包了。 Here’s a detailed install guide。 C。优点:Windows X64客户端,成熟的,带ACL的AD-integration,没有其他项目已经开始实施的功能。我认为这可能是一个很好的起点。缺点:Novell可能不会使用其公共svn回购作为主要回购协议,而只能使用code-drops。虽然我不完全了解这一点。可能会被耦合到openSUSE以便在Ubuntu上轻松安装。检查它的算法。

  • scp /rcp – 弃用rsync

  • DRDB – 用于分布式RAID-1的块设备镜像工具,即Dropbox的server-variant。我还没有检查过它的源代码,但它只是Linux。实际的算法可能很容易与我在software-listing下面的冥想中的源代码结合使用。一个。版本控制:通过LAN /WAN的内部消息格式b。状态:似乎足够成熟c。优点:对于linux来说足够稳定,缺点:不支持其他操作系统


现在我正在研究在虚拟化Windows 7上改进compile-times,其中Windows 7金属上的compile-times为40秒,但虚拟化时间约为3分20秒。我正在考虑编写一个ioctl驱动程序,它是一个write-through缓存,它看起来像ram-disk,适用于NTFS上的选定文件夹。

使用上述软件,我认为一周的2-3人full-time开发将产生一个可用的Alpha,并不会因为结合上述软件而丢失文件。


在我的系统上,那么总的想法是;

  1. 安装虚拟驱动器\?{GUID},即ram-disk和RW-cache。创建此虚拟驱动器的软件需要两个输入参数(非常重要):a。目标文件夹;这是SMB文件夹,所以我将让操作系统的网络堆栈处理实际的IO。在我的情况下,这又是VMWare虚拟文件夹,它本身就是ext4驱动器上的一个目标,但它可能很容易成为使用SAMBA /SMB的文件服务器。湾要安装的文件夹的路径,例如C:\ ramdisk用于创建虚拟卷的代码取自TrueCrypt’s code,位于/Driver/DriverFilter.c(以及其他文件中)

  2. 该驱动器在启动时使用SMB /VMWare /网络协议获取数据;它以低优先级从网络异步获取并填充缓存。它可以使用简单的压缩算法,并有1个线程使用message-box类型的延续传递来获得很好的性能。在Windows上,它可以使用正常的异步IO调用,并且在Linux上它可以使用epoll /inotify实现并从nginx获取代码。

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

  4. 来自网络的异步复制仍在继续。使用read-rate约100 MiB /s和2 GiB ramdisk,读取所有数据的时间为20.5 s。

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

这将有这些PRO

  • 这将是non-blocking /异步

  • 它会作出这样的假设,但并不要求一台电脑主要写入文件。

  • 它适用于任意大的文件

  • 它可以在* nix和Windows上捆绑上述项目。

  • 当需要高read-performance时,它将工作(即文件物理位于磁盘上)

  • 当达到冲突事件时,可以提供用户界面应用程序,该应用程序允许用户编写/下载针对不同种类事件(即不同种类的文件)行事正常的插件。例如。一个文本文件可以用Kompare /WinDiff调出,而一个二进制文件将被复制并保存为另一个文件。

第三种解决方案

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

第四种方案

我听说Ubuntu UK Podcast上的Syncany,目前是beta版,但看起来像满足要求

第五种方案

我不认为这是你正在寻找的东西,但这取决于你的使用目的。

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

这意味着目的地不一定要在云端。它不像Dropbox那样更关心备份而不是同步和访问各处的文件,但是如果它只是你想要的备份,那么效果很好。如果你想从另一台PC访问备份的文件,我认为你可以做一个”local restore”,但这不是我尝试过的。

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

第六种方案

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

第七种方案

看看这是否有帮助:

http://fak3r.com/2009/09/14/howto-build-your-own-open-source-dropbox-clone/

第八种方案

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

如果您遵循GlusterFS User Guide,则很容易设置。

第九种方案

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

一旦建立起来,它就会起作用。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/968.html,未经允许,请勿转载。