必须备份镜像层、元数据库、配置与证书、运行时状态数据四类核心数据:镜像层需按存储类型同步或开启对象存储版本控制;元数据库用pg_dump导出;配置含harbor.yml和TLS证书;运行时状态包括Redis缓存等。

备份私有镜像仓库(如 Harbor 或自建 Registry)的核心数据,关键不是只导出镜像,而是保护底层存储与元数据的一致性。单纯用 docker save 只能备份单个镜像,对整个仓库无效;真正要保的,是镜像层、数据库、配置和认证体系这四类数据。
明确必须备份的四类核心数据
私有仓库的数据分静态与动态两类,缺一不可:
-
镜像层数据:实际存放镜像 blob 的位置,可能是本地路径(如
/data/harbor/registry或/var/lib/registry),也可能是对象存储(S3/OSS/MinIO)。需通过docker volume inspect或仓库配置确认真实挂载点 -
元数据库:Harbor 使用 PostgreSQL 存储项目、用户、权限、复制策略、扫描结果等;必须用
pg_dump定时导出,不能只拷文件目录 -
配置与证书:包括
harbor.yml(或 Helmvalues.yaml)、TLS 证书、密钥、Redis 配置等。这些决定服务能否启动、是否支持 HTTPS 和认证 - 运行时状态数据:如 Redis 缓存(含会话和 job 状态)、Chart 仓库数据(若启用)、审计日志路径。虽可容忍短暂丢失,但影响恢复后功能完整性
按部署形态选择对应备份方式
不同安装方式,备份重点不同:
-
容器化部署(Harbor Helm / Docker Compose):备份所有 PVC 对应的 PV 数据(特别是
harbor-core、harbor-registry、harbor-database卷),同时保留values.yaml和证书目录 -
本地文件存储型 Registry:用
rsync -avz --delete同步/var/lib/registry目录,配合cron每日执行,保留最近 7 天快照 - 对接对象存储的 Harbor:不备份 registry 目录,重点开启 S3/OSS 桶版本控制 + 跨区域复制;同时单独导出 PostgreSQL 数据库并校验
每次备份后必须验证三项内容
备份文件存在不等于能恢复成功。建议自动化执行以下检查:
- 校验归档包完整性:
gzip -t backup_$(date +%Y%m%d).tar.gz - 确认镜像标签可达:
skopeo list-tags docker://your-harbor.local/project/app - 每月至少一次模拟恢复:在隔离环境还原存储卷 + DB + 配置,启动 Harbor 后拉取一个镜像并
docker run验证 manifest 和 layer 可读
避免常见遗漏点
很多团队备份失败,往往卡在细节:
- 未保留文件权限和属主(如
10000:10000),导致恢复后 Harbor 容器反复 Crash - 只备份数据库但忽略 Redis 数据,造成登录会话失效、后台任务丢失
- 升级 Harbor 前未备份,导致升级失败无法回退
- 把
common/目录全量备份,其实只需备份harbor.yml和证书,其余由 installer 自动生成


















