首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
V2EX  ›  分享创造

最快最强大的开源云备份工具求点赞!

  •  
  •   acrosync · 2018-04-09 10:34:18 +08:00 · 9226 次点击
    这是一个创建于 554 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Duplicacy 是我个人开发的一个多平台云备份软件: https://github.com/gilbertchen/duplicacy

    最大的特点是可以将多台机器备份到同一个云存储空间,从而达到最大程度的去冗余( deduplication )。这一点没有任何其他类似软件可以做到。

    支持绝大多数流行的云存储,而且比所有其他开源软件都要快很多: https://github.com/gilbertchen/benchmarking

    现在 GitHub 上已经有 1 千 6 百多个点赞,主要是国外用户。现在计划在国外国内同时推广,希望能推荐给更多国内用户,同时欢迎云存储厂商合作。

    GitHub 上开源的是命令行版本。另外有一个带图形界面的收费版本,但是很便宜,特别是个人用户: https://duplicacy.com

    79 回复  |  直到 2019-04-06 17:58:43 +08:00
        1
    OldDriverKing   2018-04-09 11:10:15 +08:00   ♥ 2
    战略性马克
        2
    ThirdFlame   2018-04-09 11:22:02 +08:00   ♥ 1
    “最大的特点是可以将多台机器备份到同一个云存储空间” 是写错了,备份到多个云存储空间么?
        3
    acrosync   2018-04-09 11:29:22 +08:00
    @ThirdFlame 没有写错。这样的好处是如果同一个文件在多台机器上都有,那么第一台机器上传后其他机器就不用上传,而且这些机器之间不用互相通信。
        4
    PressOne   2018-04-09 11:31:18 +08:00   ♥ 1
    是增量备份?还是同步备份?
        5
    acrosync   2018-04-09 11:37:50 +08:00
    @PressOne 是增量备份,但是每一次备份又是独立的完全备份,不依赖于其他备份,不象有些备份软件中每次增量备份都依赖于上一次备份。
        6
    Tink   2018-04-09 11:42:28 +08:00
    重复性验证是靠什么检查的呢
        7
    dianso   2018-04-09 11:43:28 +08:00 via Android
    没中文吗
        8
    l0wkey   2018-04-09 11:46:45 +08:00
    是通过文件 or DB 记录文件的元信息?
    文件数量大会导致性能问题么
        9
    PressOne   2018-04-09 11:47:55 +08:00
    @acrosync 那要是很多小文件,都是增量备份,你对比文件是否重复,不是巨慢啊
        10
    zhaoyc2018   2018-04-09 11:51:55 +08:00
    很是需要这东东,我英文太差了,不怎么看的懂。。。
        11
    gamexg   2018-04-09 11:56:13 +08:00
    果然是哈希作为文件名,
    考虑过仿照 git 搞个,但是没时间...
        12
    zhandi   2018-04-09 12:06:13 +08:00 via iPhone
    支持忽略指定文件名或者目录吗?
        13
    SingeeKing   2018-04-09 12:08:49 +08:00
    Do I pay anually?
    No. Instead you pay a one-time fee based on the number and length of the licenses. You can alway renew a license (at the rate for subsequent years) before it expires. We don't renew your licenses automatically.

    这不还是 pay annually 吗。。只是不会 auto-renew 而已
        14
    acrosync   2018-04-09 12:11:14 +08:00 via iPad
    @PressOne 所有文件先打包再分割平均 4MB 的 chunk 再上传。用 Linux 源代码做测试 Duplicacy 的速度比其它软件都快很多: https://github.com/gilbertchen/benchmarking
        15
    acrosync   2018-04-09 12:13:58 +08:00 via iPad
    @Tink 哈希码作为文件名,这样只要査找文件名就知道同一份文件以前有没有上传过。
        16
    SingeeKing   2018-04-09 12:14:14 +08:00
        17
    acrosync   2018-04-09 12:21:19 +08:00 via iPad
        18
    acrosync   2018-04-09 12:25:56 +08:00 via iPad
    @SingeeKing 谢谢指正。"No"在这里确实不准确,我会把它去掉。
        19
    acrosync   2018-04-09 12:30:43 +08:00 via iPad
    @gamexg 哈希码作为文件名只是第一步。最大的问题是如何删除旧备份来回收空间而不影响其它备份,我们发明了一个技术解决了这个难题……
        20
    acrosync   2018-04-09 12:36:26 +08:00 via iPad
    @SingeeKing 你在国内吗? GUI 版本的 license server 架在 google app engine 上,国内可能没法访问。
        21
    SingeeKing   2018-04-09 12:40:33 +08:00
    @acrosync #20 开了 Surge,软件没有走代理吗?
        22
    GooMS   2018-04-09 12:47:45 +08:00 via Android
    为什么不直接利用纠删码
        23
    gamecreating   2018-04-09 13:25:45 +08:00
    马克
        24
    FindBoyFriend   2018-04-09 13:31:26 +08:00 via iPad
    赞略性马渴
        25
    etc   2018-04-09 13:34:34 +08:00
    马克斯维尔
        26
    tongz   2018-04-09 13:35:07 +08:00
    战略性马克
        27
    l1093178   2018-04-09 13:56:08 +08:00   ♥ 2
    原来 Duplicacy 是国人开发的啊,我还一直以为是国外某个独立软件开发商
    当时选择备份软件的时候考虑了 restic 和 Duplicacy,最后还是选择了 restic,主要是因为

    1. restic 免费而且开源
    2. Duplicacy 在某些密码学细节上处理看起来没有 restic 让人放心(比如 KDF 选择的是 PBKDF2 而不是 Bcrypt / Scrypt / argon2 )

    总体来说 Duplicacy 还是很棒的

    另外,restic 准备结合 rclone,通过 API 来支持更多的 backend ( https://github.com/restic/restic/issues/1561 ),感觉这是一个更加模块化更加容易扩展的设计
        28
    glacier2002   2018-04-09 14:01:27 +08:00
    666666666666666
        29
    xiaole   2018-04-09 15:05:29 +08:00 via iPhone
    违反了广告法
        30
    yanest   2018-04-09 15:16:15 +08:00
    能备份数据库吗
        31
    carbon   2018-04-09 16:16:03 +08:00
    全是外文,看不懂,连收费怎么算的都没看懂。没找到中文文档啊。
        32
    goodryb   2018-04-09 17:45:11 +08:00
    所以对国内的云厂商都不支持吗?
        33
    bestkayle   2018-04-09 17:56:05 +08:00 via iPhone
    最强大会不会有一种钦定的感觉?
        34
    xiaoyu9527   2018-04-09 18:18:17 +08:00
    @l1093178 具体是怎么操作的?
        35
    acrosync   2018-04-09 20:13:17 +08:00   ♥ 1
    @dianso @carbon @zhaoyc2018 这里有中文教程,是 DigitalOcean 写的教程的翻译: https://www.howtoing.com/manage-backups-cloud-duplicacy
        36
    Showfom   2018-04-09 20:14:52 +08:00
    多台机器备份到同一个。。。。。这样不是更不安全
        37
    acrosync   2018-04-09 20:25:59 +08:00   ♥ 1
    @l1093178 谢谢你的反馈。已有用户要求用 argon2 来代替 PBKDF2,看来我需要很快实现这个。

    restic 算其它软件中不错的,但是如果你备份多台机器到同一个云存储空间,restic 的算法是不可靠的而且很危险,具体讨论见 https://github.com/restic/restic/issues/1141

    如果每台机器有单独的云存储则关系不大。

    除此之外,restic 一直没有实现压缩,现在已经比 Duplicacy 慢,加入压缩后只会更慢

    另外不同意 restic 更加模块化更加容易扩展。基本上 rclone 支持的 Duplicacy 都支持,所以这个 rclone backend 对 Duplicacy 没有必要。
        38
    acrosync   2018-04-09 20:42:44 +08:00
    @Showfom 如果你担心云存储的可靠性,那么你应该将在存在一个云存储的备份拷贝到另一个上,而不是让每台机器有自己的备份空间。

    比如有 100 台机器需要备份,那么正确的方案是备份到同一个空间后,再通过 rclone 或 Duplicacy 的 copy 命令来拷贝到另一个存储。每台机器有自己单独备份空间的话,一来浪费空间,二来一旦一个云存储数据丢失总会影响到某些机器。
        39
    Showfom   2018-04-09 20:44:15 +08:00
    @acrosync 万一一台机器被黑了,所有机器的数据都会被人看去呀
        40
    PressOne   2018-04-09 21:03:43 +08:00   ♥ 1
    @acrosync 你这个理念是支持的,聚中心,多个备份。分散了之后反而熵值增加,其实分散了之后,各个节点存储的数据重要程度还是有区别的,对于重要节点的数据依然是多个备份才放心。
        41
    Menci   2018-04-09 21:47:03 +08:00   ♥ 1
    看了眼 GitHub Repo,连 LICENSE 都不是 Free 的 …… 其他说再多都不用看了直接关掉。

    大家请慎重。
        42
    acrosync   2018-04-09 22:53:58 +08:00
    @Showfom 如果每台机器用单独的密码那就很难做到 deduplication。我觉得比较好的方案是先不加密备份到内网的一台主机上再用 rclone 或 Duplicacy 的 copy 命令拷贝到云端。
        43
    qiuai   2018-04-09 22:58:08 +08:00   ♥ 1
    比较需要阿里云 OSS......
        44
    acrosync   2018-04-09 22:58:16 +08:00
    @PressOne 你说的是对的。Duplicacy 让用户多了一个分散节点聚中心的选择,同时 copy 命令支持在不同存储之间拷贝备份。
        45
    zhangyuting   2018-04-09 22:59:18 +08:00 via iPhone   ♥ 1
    元数据是存在本地还是云端呢?
        46
    acrosync   2018-04-09 23:02:02 +08:00
    @Menci 命令行版本对个人用户是完全免费的,企业用户也只要$20 每个用户每年。如果你是企业用户但又需要免费的软件,那么 Duplicacy 确实不适合。
        47
    acrosync   2018-04-09 23:02:51 +08:00
    @qiuai 阿里云 OSS 好像是兼容 S3 的,所以 Duplicacy 应该支持。
        48
    qiuai   2018-04-09 23:03:37 +08:00   ♥ 1
    @acrosync 我一会试试.
        49
    acrosync   2018-04-09 23:04:39 +08:00
    @zhangyuting 元数据是存在云端。
        50
    qiuai   2018-04-09 23:07:25 +08:00   ♥ 1
    @acrosync 访问路径的构成好像是有问题的.
    提示 Error requesterror: send request failed.
        51
    acrosync   2018-04-09 23:08:44 +08:00
    @SingeeKing 没有用过 Surge。可能需要设置让 Duplicacy 的流量也走 Surge ?
        52
    zhangyuting   2018-04-09 23:08:56 +08:00 via iPhone
    @acrosync 那查找 chunk 是否重复的时候需要访问云端元数据吗?还是说本地会有 hash cache 呢?
        53
    zsj950618   2018-04-09 23:20:49 +08:00 via Android   ♥ 1
    很早就 mark 过了,当时是搜到 Acrosync 然后发现同作者另一个非常棒的项目的。
        54
    acrosync   2018-04-10 00:31:21 +08:00
    @qiuai 我试过了,没有问题。初始话命令是:

    duplicacy init repository_id s3://[email protected]-us-east-1.aliyuncs.com/bucket/path
        55
    keramist   2018-04-10 00:34:32 +08:00 via Android
    duplicati 了解一下
        56
    acrosync   2018-04-10 01:34:22 +08:00
    @keramist 这里有详细的 Duplicacy 和 duplicati 的对比: https://forum.duplicati.com/t/duplicati-2-vs-duplicacy-2/592

    就速度而言,他们用了好几个办法,包括去掉压缩这一步才达到和 Duplicacy 差不多的速度。

    duplicati 的最大问题是不可靠,经常备份数据坏掉,在他们的论坛以 repair 为关键词搜索一下你就知道了。
        57
    darkr4y   2018-04-10 01:35:30 +08:00 via iPhone   ♥ 1
    提个 enhancement 行不行,能不能像 cryfs 那样引入同步时加密,但是最好不依赖 FUSE 的
        58
    acrosync   2018-04-10 01:43:06 +08:00
    @darkr4y 曾经设想过以 Duplicacy 为底层开发过一个文件同步工具,但是最后决定还是集中精力完善 Duplicacy 和手头其它项目。
        59
    acrosync   2018-04-10 01:46:42 +08:00
    @zhangyuting 本地会有 hash cache。查找 chunk 是否重复时先检查本地 cache,然后再查云端有没有这个 chunk 文件,一个 API 调用就可以搞定。
        60
    monnand   2018-04-10 03:48:06 +08:00 via Android   ♥ 1
    特别注意下,这个软件并非是开源的,此处是它的许可证 https://github.com/gilbertchen/duplicacy/blob/master/LICENSE.md

    选择许可证本身是作者的自由。但是把一款没有开源的产品标称开源就不好了
        61
    acrosync   2018-04-10 04:03:30 +08:00
    @monnand “开源”字面上意思指的是源代码公开,但是如果你认为“开源”必须是严格根据 OSI 的定义只有那么几种许可证才可以叫做开源的话那我就无话可说了
        62
    monnand   2018-04-10 07:04:58 +08:00 via Android   ♥ 9
    @acrosync

    先说问题。你的许可证规定商用付费,这个完全没问题。自己的代码想怎么做都行。但你在这个帖子标题非要说这是开源软件,而开源软件定义研究明确规定了存在这种特例的许可证不叫开源。这种行为本身就是挂羊头卖狗肉,被人抓出来之后还要辩解说狗就是羊的一种,没必要遵循严格定义。

    开源一词本来就是 OSI 造出来的,在一开始造出来的时候就给出了明确定义[0]。之所以造出这个词,一个重要的原因之一,就是避免产生 free software 这样词的歧义[1]。这才硬生生要自己造一个之前没有的词并且在一开始就明确给出定义。

    > “开源”字面上意思指的是源代码公开
    为了防止这种误解,开源软件定义的开篇第一句就是:

    Open source doesn't just mean access to the source code.

    你可以说普通用户和开发者根本记不住开源软件定义。但是你随机找几个用户,让他们列举出几个他们知道的开源软件项目,看看他们说的软件中,多少是不符合开源软件定义的。再找找市面上有几个号称开源,但是许可证不符合定义的。

    无论是有意还是无意,你的做法已经是利用人们已有的观点,改成自己的定义之后,发布出去。别人问起来,你还要强词夺理,告诉对方你自己对开源的定义和其他人不同。说是挂羊头卖狗肉,真的不为过。

    何必呢?大大方方说代码开放,商用付费,又怕什么呢?干什么非要拉起一个假开源的大旗,被问起来还要再多狡辩一下呢?这对谁都没有好处啊。

    > 如果你认为“开源”必须是严格根据 OSI 的定义只有那么几种许可证才可以叫做开源的话

    开源本来就是 OSI 造出来的词,OSI 也说了只要符合定义[0]就是开源。许可证仅仅是定义的实现,你完全可以自己造一个许可证,只要符合定义,就可以被认为是开源许可证。

    最后,提醒希望对此项目贡献代码的开发者: 这种山寨许可证没有经过律师的检查,很容易存在潜在的纠纷。这个许可证本身非常模糊,而这种模糊很容易让代码贡献者处于不利的位置。当年大家逼着 Facebook 修改许可证也是这个缘故。

    我手机码字,还是上班时间,说了这么多,是真心希望能避免这种没有意义的误会。无论 @acrosync 是否是有意还是无意,这都在客观上会让人产生误解。本来好好的软件,何必让人有这样的误会呢?既然要拿自己的软件赚钱,本来是天经地义的事。非要用非开源的许可证扯上开源,惹来没必要的麻烦。于人于己都没好处。大方点,告诉用户这个软件商用收费,并不开源。这有什么难的?


    0. https://opensource.org/osd-annotated
    1. http://www.catb.org/~esr/open-source.html
        63
    acrosync   2018-04-10 08:01:00 +08:00
    @acrosync

    > 开源一词本来就是 OSI 造出来的

    Open Source 这么简单的词,我不认为是 OSI 生生造出来的。OSI 最多只是给已经存在的词重新下了一个定义。当然如果你有证据表明在 OSI 定义之前这个词不存在那我会承认我的理解是错误的。

    类似的还有“免费软件”( Free Software )这个词。免费难道不就是不收钱吗?不,FSF 给 Free Software 下了一个定义( https://www.gnu.org/philosophy/free-sw.en.html )。所以我写了一个不收费的软件但不满足其它条件就不能把它称做免费软件了吗?


    > 大方点,告诉用户这个软件商用收费,并不开源。这有什么难的?

    我不是更大方了,虽然商用收费,但是个人免费,而且公开源代码。只是用了“开源”这个词不符合你的观点就值得花你宝贵的上班时间来指责?
        64
    naiba   2018-04-10 08:13:14 +08:00 via Android
    在用 duplicity-alicloud,你这个健壮性和稳定性经过验证了吗,毕竟人家那么多年了,你那还有 200 issue
        65
    acrosync   2018-04-10 09:04:53 +08:00
    @naiba 200 issues 中就只有几个未解决小 bug(不好意思我没有养成及时关 issue 的习惯)。可以看看我们一个用户写的为什么选择 Duplicacy ( https://duplicacy.com/issue?id=5651874166341632 ),其中重点之一就是 Duplicacy 的简洁有效的实现保证了出大 bug 的可能性很低。
        66
    harker   2018-04-10 09:08:11 +08:00
    没中文,不能买断需要一直续费,差评
        67
    shunia   2018-04-10 10:33:59 +08:00   ♥ 1
    作为一个商业产品看起来是足够强大的,支持楼主.
    但是作为话痨,回复的目的只想说楼主团队的英语需要加强...商业产品可以找一个商业翻译吧.
        68
    l1093178   2018-04-10 10:39:02 +08:00   ♥ 2
    @acrosync #37 restic 的并发问题只在 prune 的情况下会有风险,备份是完全不受影响的
    另外,#63 这里,Free Software 准确翻译应该是自由软件而不是免费软件,RMS 专门说过「 Free software is a matter of liberty, not price. To understand the concept, you should think of free as in free speech, not as in free beer.」

    另外我想明确一个事情,如果我在其他软件中使用了 duplicacy 里面的部分算法和设计,那么我是否需要遵守 https://github.com/gilbertchen/duplicacy#license 这里的协议
        69
    acrosync   2018-04-10 10:55:29 +08:00   ♥ 1
    @l1093178

    > 另外我想明确一个事情,如果我在其他软件中使用了 duplicacy 里面的部分算法和设计,那么我是否需要遵守 https://github.com/gilbertchen/duplicacy#license 这里的协议

    我的理解是如果完全是你自己的代码,那么应该不需要遵守 Duplicacy 的协议。 但是要注意的是,@monnand 有一点说的很对,我这个确实是山寨许可证,所以你应该找个律师咨询一下。
        70
    qwqwp   2018-04-10 10:59:18 +08:00
    老哥,来份中文吧。
        71
    acrosync   2018-04-10 11:21:41 +08:00
    @qwqwp @harker 35 楼有一个中文教程的链接
        72
    dorothyREN   2018-04-10 12:49:20 +08:00
    最大 最强 违反广告法了
        73
    liangzi   2018-04-10 13:25:32 +08:00 via Android
    比 rclone 还厉害?
        74
    monnand   2018-04-10 15:24:34 +08:00 via Android   ♥ 1
    @acrosync

    > Open Source 这么简单的词,我不认为是 OSI 生生造出来的。OSI 最多只是给已经存在的词重新下了一个定义。

    不知道你是从哪里来出来觉得 Open Source 是简单的词的。并不是两个简单词汇放在一起就还是简单词组。语言本身讲究的是用词习惯。

    根据韦氏词典,Open source 一词最早使用在 1998 年[0],就是那篇 OSI 的文章中。你如果发现了有文献在 1998 年之前使用了 Open Source 这个词,可以直接去给韦氏词典汇报。这也算对词源上有个贡献。

    稍微了解历史的人都知道,当年 OSI 恰恰就是特别为了避开已有的词,才造了之前没人用过的 Open source 这个词组。也是为了避免像 Free Software 那样去重新定义已有词组。要么你是不了解这段历史,要么就是存心糊弄人。

    > 只是用了“开源”这个词不符合你的观点就值得花你宝贵的上班时间来指责?

    不是我的观点,是 OSI --- 开源一词的首次提出和定义者---的观点。

    并且,这个定义也都是大家普遍接受的。前面我已经说了,未必人人能记得开源的定义,但你让他们举几个开源软件的例子,里面能有几个是你这种号称开源但不符合 OSI 对开源的定义的?再在市面上找找,有几个你这样号称开源,但使用了不符合 OSI 开源软件定义的许可证的?

    现在的情况就是:

    * Open source 一词从第一次使用有明确的定义。从你的回复看,似乎你也早就知道有这么个定义。或者你不知道,但是经我提醒查到又不肯承认自己之前不知道。无论如何,你现在是知道有这么个定义的。
    * 在明知道这个定义存在的情况下,即最迟在发出 #63 的时候,你依旧不愿意承认自己使用开源一次可能会带来误解。

    我的所有回复,都是在善意地提醒你,没有必要给用户带来额外的误解。告诉大家这个不是开源的并不会对你造成什么影响。相反,在已经被提醒存在这种潜在误会的时候,依旧坚持声称自己的产品是开源,并且明确说明自己就要采用与大众印象中不一样的对开源一词的定义。这么做真的就是在搅浑水了。

    做生意都讲究个童叟无欺。倘若你之前不知道开源软件这么个定义,不了解其中历史,误用了开源一词,倒也无所谓。如果在我跟你解释一通之后,你自己查阅资料完,还要这么固执地声称自己的软件是开源。我就只能怀疑你使用开源一词有故意混淆视听,蒙蔽用户的嫌疑了。

    0. https://www.merriam-webster.com/dictionary/open-source
        75
    acrosync   2018-04-10 20:21:56 +08:00
    @monnand

    我怀疑你根本就没有仔细看你自己提到的 98 年的文章。那篇文章的最后一句话就表明了 Open Source 这个词之前就已经存在了:

    > (Yes, we're aware of the specialized meaning "open source" has in the intelligence community. This is a feature, not a bug.)

    既然你提到了韦氏词典,那就看看韦氏词典是怎么定义 open source 的:

    > having the source code freely available for possible modification and redistribution

    按照字面意思,Duplicacy 哪一点不符合?那个地方提到了 OSI 的定义?

    如果你坚持认为大家普遍接受 open source 这个词必须按照 OSI 的官方定义来理解,那么 FSF 第一个表示不同意( https://www.gnu.org/philosophy/open-source-misses-the-point.en.html ):

    > the obvious meaning for the expression “ open source software ”— and the one most people seem to think it means — is “ You can look at the source code.”

    本来就只是灌水论坛上随手贴的广告,为什么一定要遵循 OSI 的定义?好几个人都指出了,“最快最强大”违反了广告法,怎么没见工商局来找我的麻烦?一顶接一顶的帽子扣过来,“挂羊头卖狗肉”,“混淆视听”,“蒙蔽用户”,还称自己是“善意“的,难到不觉得好笑吗?

    有一个词描述你这种人很贴切:open-source nazi
        76
    hljjhb   2018-04-10 23:04:55 +08:00
    桌面端在使用 Duplicati 暂时没有什么大问题 2T+的备份数据感觉良好

    VPS 在使用 Duplicacy cli 做备份 简单方便

    建议 GUI 收费方式改为买断 1 年内更新
        77
    wwek   2018-04-14 20:51:31 +08:00
    mark
        78
    artandlol   2018-04-16 16:12:41 +08:00
    厉害了 竟然是国内开发者
        79
    zh99998   192 天前
    我觉得你应该 GUI 版本免费 而命令行 /API 付费
    这个 GUI 也就备份一下个人电脑用用,而命令行版本可以更方便做企业级部署。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1663 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 28ms · UTC 16:47 · PVG 00:47 · LAX 09:47 · JFK 12:47
    ♥ Do have faith in what you're doing.