V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Sponsored by
LinkedIn
不坐班的神仙工作 · 去任何你想去的地方远程,赚一线城市的工资
2000 个不用出门 Social 的全球远程工作,帮助 V2EX 的小伙伴开启全新的工作方式。
Promoted by LinkedIn
cheneydog
V2EX  ›  问与答

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

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


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

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

    git 方案也有考虑过,问题在于备份内容是不可控的,内容有可能又是一个 git 项目,他包括自己的 .gitignore 对备份程序本身执行是个干扰。
    Windelight
        18
    Windelight  
       46 天前 via Android
    @cheneydog 如果这样不行,还是尝试使用 Windows 卷影复制(需要一个 Server),或者 BTRFS 吧。
    cheneydog
        19
    cheneydog  
    OP
       46 天前
    @JohnH restic 尝试了一下,各个方面都满足需求。
    备份清理方案很好。Rest Server 支持。SFTP 支持。webdav 还在路上。
    略微有点不好的就是备份后的结构是 restic 自定的,基于 snapshot 统一回滚。没有那么直观的看到单个文件,偶尔恢复一个小文件的场景不方面。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1343 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 18:28 · PVG 02:28 · LAX 11:28 · JFK 14:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.