harbor备份还原
Harbor 的数据可分为几类:静态数据、动态数据, 在备份时请保持数据的权限不会改变,否则在恢复数据后无法启动Harbor,而且日志里同时会有文件权限相关的错误信息 。
静态数据
静态数据就是包括以下几部分【安装目录】:
-
1)在Harbor 安装期间通过配置文件生成的数据,主要是Harbor组件所依赖的配置文件和环境变量。这些数据通常在Harbor安装目录的
common
目录下,在Harbor各组件启动时会被挂载到对应的容器中。虽然临时数据对服务的顺利运行至关重要,但是安装程序每次都会读取 Harbor 配置文件重新生成一份临时数据,所以我们仅需备份配置文件即可,不必将整个 common 目录全部备份。 -
2)证书文件,如果是使用https的Harbor服务,将制作的证书文件存放在安装目录的ssl下(手动创建),建议阅读:《cfssl工具为Harbor颁发https证书》
-
3)在Harbor的日常维护中,获取镜像清单的
脚本
等也可进行备份。为方便对数据进行管理,该类数据属于“静态”数据,并不会再变化,建议放在Harbor的安装目录中(本处harbor安装在/app/harbor下)。
动态数据
动态数据,就是在Harbor运行过程中生成的各种数据,包括数据库、缓存、镜像文件等; 该类数据需要根据实际情况来进行周期性的备份,例如一周备份一次,并保留最近4个备份文件。
存放在数据目录配置项下(即配置文件中 data_volume
参数所配置的值),这些数据主要包括 Harbor 的数据库数据、Artifacts 数据、Redis 数据、Chart 数据,以及 Harbor 各个组件所依赖的运行时数据。
|-ca_download: 存放用户访问Harbor时所需的CA。 |-cert: Harbor启动HTTPS服务时所需的证书和密钥。 |-chart_storage: 存放Helm v2版本的Chart数据。 |-database: 存放数据库的目录,Harbor、Clair和Notary数据库的数据都在此目录下。 |-job_logs: 存放JobService的日志信息。 |-redis: 存放Redis数据。 |-registry: 存放OCI Artifacts数据(对于大部分用户来说是镜像数据)。 |-secret: 存放Harbor内部组件通信所需的加密信息。 |-trivy-adapter: 存放Trivy运行时相关的数据。
将Harbor的数据备份到另外一台备份主机上,对于“静态数据”使用scp全量备份一次即可;而对于“动态类数据”可使用rsync
工具结合计划任务
来进行周期性的备份。
创建备份目录
在备份主机(harbor-server)上创建备份目录来存放备份文件:
$ mkdir -p /data/harbor_backup_v1
备份Harbor安装目录
在Harbor服务主机上将Harbor的安装目录中的数据全量备份一次到备份主机上即可。
$ scp /app/harbor harbor-server:/data/harbor_backup_v1/harbor
备份“动态数据”
使用rsync工具备份Harbor中/data/下的所有数据(配置文件中data_volume参数指定的目录)
$ yum install -y rsync #安装rsync $ rsync --daemon $ echo "/usr/bin/rsync --daemon">>/etc/rc.local $ ps -aux |grep rsync #查看rsyncd进程 $ rsync --delete -av --partial /data/ harbor-server:/data/harbor_backup_v1/
还原
使用之前备份的文件恢复到之前版本的Harbor
停止Harbor
如果Harbor还在运行,则需要先停止Harbor:
$ cd /app/harbor$ docker-compose down
删除当前的Harbor目录:
$ cd /app/$ rm -rf harbor
恢复之前版本的Harbor目录:
将原创备份主机上的安装目录备份文件拷贝过来:
$ scp harbor-server:/data/harbor_backup_v1/harbor /app/harbor
如果备份文件是在本机:
$ mv /my_backup_dir/harbor harbor
恢复data目录
若data目录存在,则需要先删除它(或修改目录名):
$ rm -rf /data
$ scp harbor-server:/data/harbor_backup_v1/data /data
重启Harbor
$ cd harbor $ ./install.sh $ docker-compose ps