我在现场 linux 服务器上有大量 git 存储库,我需要每天将其备份到非现场 Windows 服务器。因为文件太多,所以我想用 rsync 代替纯副本来节省时间和网络带宽。(我将在安装 Windows 目标驱动器后使用 rsync。)我还想避免将所有文件压缩成 tar 或以其他方式将它们压缩成一个大文件的解决方案。这是因为异地服务器被进一步复制到其他异地服务器,如果我使用一个大的 tar 文件,而不是只需要复制更改的 1 或 2 个小文件,就必须复制整个大 tar 文件。(*1)
我的问题是,我应该还是不应该--delete
在 rsync 上使用删除标志 ()?
rsync 上的删除标志将删除在目标上找到但不在源上找到的文件。理想情况下,我希望关闭删除标志,因为如果一个想要的文件意外地从源中删除,它也会在目标上被删除。如果不使用删除标志,我们就有可能使目标成为我们想要的所有文件的超集。
这是一个问题吗?这会以某种方式破坏目的地上的 git 存储库吗?如果您的回答有所不同,我们只允许将快进提交推送到我们的现场 git 服务器。如果只完成快进提交,也许是 git 永远不会删除 .git 目录中的文件?
(*1) 编辑 1:添加关于希望避免将多个文件压缩为一个的解决方案的注释。因此 git bundle 不会是一个想要的解决方案。如果 rsync 不是要走的路,我很想知道您推荐的任何替代方法。