V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
cheneydog
V2EX  ›  问与答

使用 rsync 同步,如何能多保留几个版本?

  •  
  •   cheneydog · 2022-08-10 11:11:47 +08:00 · 2733 次点击
    这是一个创建于 854 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 整个文件。客户端删除后, 服务端也删除了。
    不加 --delete 参数就行。但是同步的不完全,部分软件可能有问题。


    2. 客户端文件中的内容删除了,服务端文件中的内容也删除了。
    和解?
    如何能配置保留 3 个历史版本?
    20 条回复    2024-05-07 09:13:00 +08:00
    killva4624
        1
    killva4624  
       2022-08-10 14:23:34 +08:00
    同步之前把原来的目录加上日期重命名一份?
    cheneydog
        2
    cheneydog  
    OP
       2022-08-10 14:39:06 +08:00
    @killva4624 这样就没有 rsync 增量传输的优势了,跟自己每天打个包一样的效果。
    vibbow
        3
    vibbow  
       2022-08-10 16:46:39 +08:00
    goodsync 可以保留历史版本
    cheneydog
        4
    cheneydog  
    OP
       2022-08-10 17:31:45 +08:00
    goodsync 有两个问题。
    1. 通过回收站来管理历史版本。个别文件恢复可以,多了不好弄。
    2. 商业授权不好弄。
    A3
        5
    A3  
       2022-08-10 19:36:46 +08:00 via Android
    同步前用 git 存档?
    XiLingHost
        6
    XiLingHost  
       2022-08-10 19:39:58 +08:00
    试试 freefilesync ,可以配置删除方式为移动到一个指定的文件夹
    wlsnx
        7
    wlsnx  
       2022-08-10 23:10:45 +08:00   ❤️ 1
    如果一定要用 rsync 的话,可以在服务端用硬链接来假装备份文件,定期创建和删除硬链接就行了。
    或者试试 https://github.com/borgbackup/borg
    JohnH
        8
    JohnH  
       2022-08-10 23:31:55 +08:00   ❤️ 1
    如果是为了备份的话,可以试试 restic ,
    https://restic.net/
    增量、压缩、版本管理、仅保留最新的几次备份点,想要的都有。
    但 restic 跟 rsync 一类典型的区别是,前者是备份,后者是同步。
    greenskinmonster
        9
    greenskinmonster  
       2022-08-10 23:36:49 +08:00 via Android   ❤️ 1
    rsnapshot ,基于 rsync
    fox0001
        10
    fox0001  
       2022-08-11 00:35:39 +08:00 via Android
    @killva4624 #1 需要保留历史版本,就是一楼的方案了。

    op 说的“增量传输”是什么意思?我发觉 rsync 是判断文件有更新,就把该文件完整复制到目标路径,再删除目标路径的旧文件。我使用 rsync 时是使用默认设置。
    Windelight
        11
    Windelight  
       2022-08-11 01:01:03 +08:00 via Android
    我倒是觉得,直接 rsync+git 就可以了。rsync 先干净同步一次,push 一下子算 initial comment ,然后如果你是定时执行 rsync 的话,每同步完一次,就 push 一下子,文件变了就推送上去,没变的就没变,被删除的文件自动成零。
    当然这个存储成本是取决于你要存档的数量,以及保留的版本流量。rsync 和 git 不修改源码,你就该咋用还咋用。
    lovelylain
        12
    lovelylain  
       2022-08-11 08:20:41 +08:00 via Android
    换支持快照的文件系统,例如 btrfs ,同步前创建快照,只保留最近 N 个快照
    y830CAa5nink4rUQ
        13
    y830CAa5nink4rUQ  
       2022-08-11 09:03:38 +08:00
    最佳方案是 ZFS 、BTRFS 之类支持快照的文件系统,每次 rsync 之后,打个快照完事。
    coolloves
        14
    coolloves  
       2022-08-11 10:45:50 +08:00   ❤️ 2
    如果一定要用 rsync,且是定时同步的话,要保留历史版本可以考虑
    源 R─|
    ├─副本 A
    ├─副本 B
    ├─副本 C
    设置三个定时,定时 1 同步到 A,.......以此类推
    xuboying
        15
    xuboying  
       2022-08-11 12:22:01 +08:00
    这个不是 rsync 一个软件能做到的,可以考虑配合 rsnapshot + crontab 做版本备份
    rsnapshot 用硬链接,很节约空间。
    hatebugs
        16
    hatebugs  
       2022-08-11 13:05:22 +08:00 via iPhone
    @coolloves 好思路
    cheneydog
        17
    cheneydog  
    OP
       2022-08-11 16:17:12 +08:00
    @A3
    @Windelight

    git 方案也有考虑过,问题在于备份内容是不可控的,内容有可能又是一个 git 项目,他包括自己的 .gitignore 对备份程序本身执行是个干扰。
    Windelight
        18
    Windelight  
       2022-08-12 16:04:21 +08:00 via Android
    @cheneydog 如果这样不行,还是尝试使用 Windows 卷影复制(需要一个 Server),或者 BTRFS 吧。
    cheneydog
        19
    cheneydog  
    OP
       2022-08-12 16:47:19 +08:00
    @JohnH restic 尝试了一下,各个方面都满足需求。
    备份清理方案很好。Rest Server 支持。SFTP 支持。webdav 还在路上。
    略微有点不好的就是备份后的结构是 restic 自定的,基于 snapshot 统一回滚。没有那么直观的看到单个文件,偶尔恢复一个小文件的场景不方面。
    gumuxi
        20
    gumuxi  
       219 天前
    @coolloves 好思路,可以多个定时任务,不同执行时间,比如 7 个副本,分散在 7 台服务器,周 1 到周 7 ,每天一个服务器节点的 rsync 同步,这样就可以有 7 个副本可以回溯回滚了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5486 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 01:55 · PVG 09:55 · LAX 17:55 · JFK 20:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.