CentOS中Jenkins的备份与恢复方法是什么
导读:CentOS 上 Jenkins 的备份与恢复 一 核心原则与准备 确认 JENKINS_HOME 路径(常见为 /var/lib/jenkins),备份与恢复均围绕该目录进行;如使用 RPM/YUM 安装,还需备份 /etc/sysco...
CentOS 上 Jenkins 的备份与恢复
一 核心原则与准备
- 确认 JENKINS_HOME 路径(常见为 /var/lib/jenkins),备份与恢复均围绕该目录进行;如使用 RPM/YUM 安装,还需备份 /etc/sysconfig/jenkins 或 /etc/default/jenkins 等环境配置。为减少体积与风险,建议采用“关键数据备份”而非全量打包。务必重视安全:控制器密钥 master.key 必须单独、离线、加密保存;不要将 secrets/ 目录纳入常规备份或传输流程,恢复时再单独放置。为降低备份窗口与锁文件风险,建议在低峰期操作,必要时短暂停机或使用文件系统快照/一致性工具。
二 备份方法
- 手动全量打包(停机)
- 停止服务:sudo systemctl stop jenkins
- 打包主目录:sudo tar czvf jenkins_home_$(date +%F).tar.gz -C /var/lib jenkins
- 备份环境配置:sudo cp /etc/sysconfig/jenkins /etc/sysconfig/jenkins.bak_$(date +%F)
- 启动服务:sudo systemctl start jenkins
- 校验与异地存放:ls -lh、sha256sum、scp/rsync 到备份存储
- 关键数据选择性备份(推荐,停机或低峰)
- 建议纳入:
- $JENKINS_HOME/config.xml
- $JENKINS_HOME/jobs/(任务配置与构建元数据)
- $JENKINS_HOME/users/(用户与偏好)
- $JENKINS_HOME/plugins/(插件列表与配置;必要时配合插件清单校验)
- $JENKINS_HOME/secrets/(不含 master.key;恢复时单独放置 master.key)
- 建议排除:
- $JENKINS_HOME/jobs/*/workspace/(可从 SCM 重新拉取)
- $JENKINS_HOME/jobs//builds//artifacts/(若已归档至外部存储)
- $JENKINS_HOME/cache/、$JENKINS_HOME/tools/、$JENKINS_HOME/logs/(日志仅在审计需要时备份)
- 建议纳入:
- 自动化脚本与定时任务
- 示例(关键数据备份,含权限与日志):
- 备份脚本 jenkins_backup.sh(节选):
#!/bin/bash
JENKINS_HOME=/var/lib/jenkins
BACKUP_DIR=/mnt/backups/jenkins/$(date +%F)
mkdir -p “$BACKUP_DIR”
sudo systemctl stop jenkins || { echo “停止失败”; exit 1; }
rsync -a --delete --exclude=‘jobs//workspace’ --exclude='jobs//builds/*/artifacts’
–exclude=‘cache’ --exclude=‘tools’ --exclude=‘logs’
“$JENKINS_HOME/” “$BACKUP_DIR/”
sudo systemctl start jenkins
chown -R jenkins:jenkins “$BACKUP_DIR”
echo “$(date) 备份完成: $BACKUP_DIR” > > /var/log/jenkins_backup.log - 定时任务(每天 02:00):
- 0 2 * * * /opt/scripts/jenkins_backup.sh
- 备份脚本 jenkins_backup.sh(节选):
- 示例(关键数据备份,含权限与日志):
- 插件辅助
- 使用 ThinBackup 插件实现定时全备/差异备与保留策略,适合图形化管理与快速恢复。
三 恢复方法
- 场景 A:全量包恢复(停机)
- 停止服务:sudo systemctl stop jenkins
- 备份当前目录(可选):mv /var/lib/jenkins /var/lib/jenkins.bak_$(date +%F)
- 解压备份:sudo tar xzvf jenkins_home_YYYY-MM-DD.tar.gz -C /var/lib
- 权限修正:sudo chown -R jenkins:jenkins /var/lib/jenkins
- 单独恢复 master.key(若备份中不含):将离线保存的 master.key 放置到 $JENKINS_HOME/secrets/
- 启动服务:sudo systemctl start jenkins
- 场景 B:关键数据恢复(停机或低峰)
- 停止服务:sudo systemctl stop jenkins
- 清空或重命名现有数据目录(谨慎):mv /var/lib/jenkins /var/lib/jenkins.bak_$(date +%F)
- 恢复关键数据:将备份中的 config.xml、jobs、users、plugins、secrets 复制到新目录
- 放置 master.key:确保 $JENKINS_HOME/secrets/master.key 存在且权限正确(仅 jenkins 用户可读)
- 权限修正:sudo chown -R jenkins:jenkins /var/lib/jenkins
- 启动服务:sudo systemctl start jenkins
- 场景 C:使用 ThinBackup 恢复
- 在 Jenkins 管理界面:Manage Jenkins → ThinBackup → Restore,选择备份点并执行恢复。
四 异地与自动化传输
- rsync + SSH 免密到备份服务器(示例)
- 生成密钥:ssh-keygen -t rsa(一路回车,空口令或强口令)
- 将公钥追加到备份服务器 authorized_keys
- 备份脚本中 rsync 示例:
rsync -avz -e ssh /mnt/backups/jenkins/ backup@10.0.0.10:/data/jenkins_backups/
- FTP 传输(示例)
- 安装 lftp:sudo yum install -y lftp
- 脚本片段:
lftp -u user,pass 10.0.0.20 < < EOF
mirror -R /var/lib/jenkins /jenkins_home
quit
EOF
- 保留策略与清理
- 示例(保留 30 天):find /mnt/backups/jenkins -type f -mtime +30 -name ‘.tar’ -delete
五 验证与常见问题
- 备份有效性验证
- 定期做“演练恢复”:解压抽查 config.xml、随机 jobs/ 配置、核对 plugins/ 列表与版本、验证 secrets/ 可用性;校验 master.key 是否单独安全保存;记录并告警备份结果。
- 常见问题与处理
- 备份失败:权限不足(确保备份用户对 $JENKINS_HOME 可读)、磁盘空间不足、文件被锁定(停机或低峰操作)、网络不稳定(重试与断点续传)。
- 恢复失败:Jenkins 版本差异过大(先小版本内恢复并逐步升级)、文件权限错误(chown -R jenkins:jenkins)、插件缺失(先安装对应插件再恢复)、端口占用(检查 8080 并调整)。
- 安全提醒:切勿将 master.key 纳入常规备份或公网传输;恢复时先恢复系统其余部分,再单独放置 master.key。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS中Jenkins的备份与恢复方法是什么
本文地址: https://pptw.com/jishu/758949.html
