it-swarm.cn

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

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

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

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

70
user1978

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

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

41
Rick

实际上有很多。

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

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

    湾国家:正在制定中

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

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

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

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

    c。优点:使用中级工具设置不错。

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

    一个。版本:

    湾State:有问题让它甚至在Ubuntu上编译,更不用说包了。 这是详细的安装指南

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

  • scp/rcp - 不赞成使用rsync

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

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

    湾州:似乎足够成熟

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


现在我正在研究改进虚拟化Windows 7上的编译时间,其中Windows 7上的编译时间为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创建一个文本文件,而二进制文件将被复制并保存为另一个文件。
44
Henrik

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

18
Dinesh

我听说 Syncany 关于 buntu UK Podcast ,目前是测试版,但看起来符合要求

5
deveneyi

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

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

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

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

3
Simon P Stevens

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

3
bassgey
2
guest442

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

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

2
Richard Holloway

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

一旦设置好,它就可以了。

2
Journeyman Geek

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

1
JurjenB

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

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

1
dempa

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

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

Seafile功能:

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

我的Seafile经历:

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

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

1
Nicolas

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

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

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

0
Sam Swift