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

2022-08-10 11:11:47 +08:00
 cheneydog
1. 整个文件。客户端删除后, 服务端也删除了。
不加 --delete 参数就行。但是同步的不完全,部分软件可能有问题。


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

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

git 方案也有考虑过,问题在于备份内容是不可控的,内容有可能又是一个 git 项目,他包括自己的 .gitignore 对备份程序本身执行是个干扰。
Windelight
2022-08-12 16:04:21 +08:00
@cheneydog 如果这样不行,还是尝试使用 Windows 卷影复制(需要一个 Server),或者 BTRFS 吧。
cheneydog
2022-08-12 16:47:19 +08:00
@JohnH restic 尝试了一下,各个方面都满足需求。
备份清理方案很好。Rest Server 支持。SFTP 支持。webdav 还在路上。
略微有点不好的就是备份后的结构是 restic 自定的,基于 snapshot 统一回滚。没有那么直观的看到单个文件,偶尔恢复一个小文件的场景不方面。
gumuxi
184 天前
@coolloves 好思路,可以多个定时任务,不同执行时间,比如 7 个副本,分散在 7 台服务器,周 1 到周 7 ,每天一个服务器节点的 rsync 同步,这样就可以有 7 个副本可以回溯回滚了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/871878

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX