使用 rsync 同步,如何能多保留几个版本? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cheneydog
V2EX    问与答

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

  •  
  •   cheneydog 2022-08-10 11:11:47 +08:00 3407 次点击
    这是一个创建于 1189 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 存档?
    KagurazakaNyaa
        6
    KagurazakaNyaa  
    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 之后,打个快照完事。
    sparkssssssss
        14
    sparkssssssss  
       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  
       2024-05-07 09:13:00 +08:00
    @coolloves 好思路,可以多个定时任务,不同执行时间,比如 7 个副本,分散在 7 台服务器,周 1 到周 7 ,每天一个服务器节点的 rsync 同步,这样就可以有 7 个副本可以回溯回滚了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     946 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 22:23 PVG 06:23 LAX 14:23 JFK 17:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86