原文:Synchronization
作者:原页面未标注个人作者
文档信息:页面标注 Kopia v0.6.0 开始支持自动仓库复制;页面最后修改日期为 2025 年 10 月 15 日。
为了应对灾难恢复,重要仓库可以保留多份副本。云端存储通常具有较好的持久性;与此同时,在本地保存一份仓库副本,也可能让恢复数据更快。Kopia 的仓库同步功能可以把当前连接的仓库增量复制到另一处存储,目标可以是文件系统或其他仓库位置。
开始前:确认访问权限与目标位置
执行同步的用户需要对当前连接的仓库有读取权限,并对目标位置有读取和写入权限。目标位置可以是 Kopia 支持的仓库位置。文档给出的示例包括本地文件系统和 Google Cloud Storage:
kopia repository sync-to filesystem --path /dest/repository
kopia repository sync-to gcs --bucket my-bucket
命令以当前连接的仓库为来源,将增量副本写入指定目标。使用前先确认当前连接确实是预期的源仓库,并确保目标路径或云端存储桶对应你要维护的副本。
默认不同步删除
Kopia 默认不会把源仓库中的删除操作同步到目标。即使源端某个文件已经删除,目标端仍会保留它。这样产生的副本仍然正确,但不会从压缩(compaction)中获益,并可能运行得更慢。
如果确实要让目标端也执行删除,可以在命令中加上 --delete:
kopia repository sync-to filesystem --path /dest/repository --delete
是否启用该选项,取决于副本的用途。默认保留删除过的内容,可避免源端删除立即传递到目标;启用 --delete 后,目标副本会按同步语义应用删除,因此应先确认目标就是要持续镜像维护的那份仓库。
同步到文件系统时检查挂载状态
如果目标是文件系统目录,要确认目标文件系统已经正确挂载。若挂载点意外没有挂载,Kopia 可能会把该位置当成普通目录,从而尝试下载或复制可能很大的仓库。
可以使用 --must-exist,要求目标位置必须已经存在:
kopia repository sync-to filesystem --path /dest/repository --must-exist
这有助于避免文件系统没有挂载时,程序在挂载点下面意外写入或下载大型仓库。运行计划任务前,应确保该路径正是预期的挂载位置。
在计划任务中运行
自动同步任务可以添加 --no-progress,关闭进度输出,让 cron 等计划任务或脚本得到更干净的输出,便于记录任务结果。
例如,将同步命令配置为定时任务时,保留源仓库连接和目标配置,并在该同步调用中加入此标志即可。具体调度方式由运行 Kopia 的操作系统或任务管理器决定。
选择同步策略
可以先按以下原则确定设置:
- 需要跨位置保留仓库副本时,使用
kopia repository sync-to并指定第二个存储位置; - 需要让目标保留源端已删除的数据时,使用默认设置,不传
--delete; - 需要目标跟随源端删除时,才加上
--delete; - 目标在可移动磁盘或独立挂载点上时,加上
--must-exist,避免目标文件系统未挂载时误将普通目录当成仓库目标; - 将同步放入 cron 或脚本时,可用
--no-progress精简进度输出。
同步功能从 Kopia v0.6.0 开始提供。维护第二份仓库副本可以为灾难恢复提供另一条恢复路径;但同步权限、目标位置、删除行为和挂载检查都应与副本用途相匹配。
来源与作者信息:Kopia 文档《Synchronization》;原页面未标注个人作者。页面注明 Kopia v0.6.0 加入自动仓库复制,并记录最后修改日期为 2025-10-15。 原文链接:https://kopia.io/docs/advanced/synchronization/











暂无评论内容