centos jenkins部署的备份与恢复方法
导读:CentOS 上 Jenkins 的备份与恢复方法 一 核心要点与准备 备份的核心是 JENKINS_HOME 目录,默认位于 /var/lib/jenkins。该目录包含:jobs/、plugins/、users/、config.xml...
CentOS 上 Jenkins 的备份与恢复方法
一 核心要点与准备
- 备份的核心是 JENKINS_HOME 目录,默认位于 /var/lib/jenkins。该目录包含:jobs/、plugins/、users/、config.xml、secrets/ 等关键数据。可在 Jenkins 管理界面:系统管理 → 系统信息 查看实际路径。为减少体积与提升一致性,常见做法是备份时排除 workspace/ 与部分构建产物(如 builds/ 下的 artifacts/),这些可在恢复后按需重建。备份频率建议:开发环境每周一次全备;测试环境每日增量、每周全备;生产环境每日多次增量、每日全备。
二 备份方法
-
手动全量备份(停机一致性)
- 停止服务:
sudo systemctl stop jenkins - 打包主目录(示例排除 workspace 与部分产物):
sudo tar czvf jenkins_backup_$(date +%F_%H%M%S).tgz -C /var/lib/jenkins . --exclude='workspace' --exclude='jobs/*/builds/*/artifacts' - 备份关键配置文件(系统级):
/etc/sysconfig/jenkins或/etc/default/jenkins - 启动服务:
sudo systemctl start jenkins - 将备份文件迁移到安全位置(如独立磁盘或远程存储)。
- 停止服务:
-
自动定时备份(脚本 + Cron)
- 示例脚本(保留最近 7 天,含配置与日志归档):
#!/usr/bin/env bash set -e JENKINS_HOME="/var/lib/jenkins" BACKUP_ROOT="/opt/backups/jenkins" DATE=$(date +%F_%H%M%S) mkdir -p "$BACKUP_ROOT" # 停止服务 sudo systemctl stop jenkins # 打包主目录(排除大体积与可重建数据) tar czvf "$BACKUP_ROOT/jenkins_home_$DATE.tgz" -C "$JENKINS_HOME" . \ --exclude='workspace' \ --exclude='jobs/*/workspace' \ --exclude='jobs/*/builds/*/artifacts' \ --exclude='jobs/*/builds/*/log' # 可选:单独归档配置与日志 tar czvf "$BACKUP_ROOT/jenkins_config_$DATE.tgz" -C /etc sysconfig/jenkins default/jenkins 2> /dev/null || true tar czvf "$BACKUP_ROOT/jenkins_logs_$DATE.tgz" -C /var/log jenkins # 启动服务 sudo systemctl start jenkins # 清理 7 天前备份 find "$BACKUP_ROOT" -name 'jenkins_*.tgz' -mtime +7 -delete - 加入定时任务(每天 02:00 执行):
0 2 * * * /opt/backups/jenkins/backup.sh > > /var/log/jenkins_backup.log 2> & 1
使用crontab -e编辑并确认:crontab -l。脚本需具备可执行权限:chmod +x backup.sh。
- 示例脚本(保留最近 7 天,含配置与日志归档):
-
使用插件备份(ThinBackup)
- 安装:管理界面 Manage Jenkins → Manage Plugins 搜索并安装 ThinBackup,重启。
- 配置:Manage Jenkins → ThinBackup → Settings
- Backup directory:如 /backups/jenkins
- Backup schedule:如
0 2 * * *(每天 2 点) - Full backup schedule:如
0 1 * * 0(每周日 1 点全备) - Files excluded from backup:如
**/workspace/**, **/jobs/*/builds/*/artifacts/** - Max number of backup sets:如 10
- 使用:可立即 Backup Now,恢复时 Manage Jenkins → ThinBackup → Restore 选择备份集执行。
-
远程与离线存储
- 远程备份(SSH 免密 + rsync/scp):在备份服务器生成密钥对,将公钥追加到备份目标服务器的
~/.ssh/authorized_keys,之后可用rsync -a --delete /opt/backups/jenkins/ backup@192.0.2.10:/backups/jenkins/或scp自动传输。 - 传输到 FTP(可选):CentOS 安装
lftp,脚本中使用mirror -R $SOURCE_DIR $FTP_TARGET_DIR将备份目录推送到 Windows FileZilla Server 或其他 FTP 服务。
- 远程备份(SSH 免密 + rsync/scp):在备份服务器生成密钥对,将公钥追加到备份目标服务器的
三 恢复方法
-
手动恢复(停机)
- 停止服务:
sudo systemctl stop jenkins - 备份当前目录(可选):
mv /var/lib/jenkins /var/lib/jenkins.bak_$(date +%F_%H%M%S) - 解压备份到目标主目录:
sudo mkdir -p /var/lib/jenkins & & sudo tar xzvf jenkins_backup_YYYY-MM-DD_HHMMSS.tgz -C /var/lib/jenkins - 如曾改动系统级配置,恢复
/etc/sysconfig/jenkins或/etc/default/jenkins - 启动服务:
sudo systemctl start jenkins - 登录 Web 界面验证 系统配置、插件、任务 是否正常。
- 停止服务:
-
使用 ThinBackup 恢复
- 管理界面 Manage Jenkins → ThinBackup → Restore,选择需要的备份集,按提示执行恢复,完成后重启 Jenkins 并校验。
-
迁移到新机器或更改 JENKINS_HOME
- 在新机器安装同版本 Jenkins,确认 JENKINS_HOME(默认 /var/lib/jenkins)。如需变更,设置环境变量:
- 方式一:编辑
/etc/profile或 systemd 环境文件,加入export JENKINS_HOME=/opt/jenkins_home,执行source /etc/profile - 方式二:若以 Tomcat 运行,可在
catalina.sh中导出JENKINS_HOME
- 方式一:编辑
- 将备份解压到新的 JENKINS_HOME,启动服务并校验。
- 在新机器安装同版本 Jenkins,确认 JENKINS_HOME(默认 /var/lib/jenkins)。如需变更,设置环境变量:
四 验证与运维建议
- 定期验证:抽样解压备份检查关键文件(如 config.xml、jobs/ 配置);在预备环境演练恢复流程;核对备份数量与保留策略是否生效。
- 版本兼容:恢复时尽量保持 Jenkins 版本一致;跨大版本恢复前建议先测试,避免插件/配置不兼容。
- 安全与合规:限制备份目录与日志权限;对含凭据的 secrets/ 与 master.key 妥善保护;远程传输使用 SSH 或 FTPS,避免明文协议。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos jenkins部署的备份与恢复方法
本文地址: https://pptw.com/jishu/781334.html
