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