首页主机资讯Jenkins在CentOS上如何进行备份

Jenkins在CentOS上如何进行备份

时间2025-11-24 12:32:03发布访客分类主机资讯浏览853
导读:Jenkins在CentOS上的备份与恢复指南 一 备份策略与范围 关键数据范围:优先备份 $JENKINS_HOME(默认 /var/lib/jenkins)下的核心子目录与文件,包括:config.xml、jobs、users、plu...

Jenkins在CentOS上的备份与恢复指南

一 备份策略与范围

  • 关键数据范围:优先备份 $JENKINS_HOME(默认 /var/lib/jenkins)下的核心子目录与文件,包括:config.xml、jobs、users、plugins、secrets。这些包含了系统配置、任务定义与历史、用户与凭据索引等关键信息。为减小体积与提升速度,可排除:jobs//workspace/、jobs//builds/*/artifacts/、cache、tools、logs(日志与产物可按需保留)。
  • 安全要点:不要将用于加密凭据的 master.key 放入常规备份;如需完整可恢复性,应将 master.key 单独离线妥善保管(与常规备份分离)。
  • 系统级配置:同时备份 /etc/sysconfig/jenkins/etc/default/jenkins(系统服务与环境变量配置)。
  • 备份方式选型:小规模或要求简便可用插件(如 ThinBackup);中大型或需定制保留策略建议采用脚本化全量/增量备份。

二 手动备份步骤

  • 确认主目录:查看 $JENKINS_HOME(常见为 /var/lib/jenkins)。
  • 停止服务(强烈建议,保证一致性):执行 sudo systemctl stop jenkins
  • 打包核心数据(示例):
    • 全量打包:
      • sudo tar -czvf jenkins_backup_$(date +%F_%H%M%S).tar.gz -C /var/lib/jenkins .
    • 仅关键子集(推荐,排除大体积目录):
      • sudo tar -czvf jenkins_backup_$(date +%F_%H%M%S).tar.gz -C /var/lib/jenkins --exclude=jobs//workspace --exclude=jobs//builds/*/artifacts --exclude=cache --exclude=tools --exclude=logs .
  • 备份系统配置:
    • sudo tar -czvf jenkins_config_$(date +%F).tar.gz /etc/sysconfig/jenkins /etc/default/jenkins 2> /dev/null || true
  • 启动服务:sudo systemctl start jenkins
  • 校验与异地存放:检查归档内容(如 tar -tzf),并将备份文件拷贝至外部存储或远程服务器。

三 自动化备份脚本与定时任务

  • 示例脚本(/opt/scripts/jenkins_backup.sh):
    • 功能:停止服务→打包核心数据(排除大目录)→备份配置文件→启动服务→保留最近 7 天。
    • 注意:脚本首行需为 #!/bin/bash,赋权 chmod +x
#!/bin/bash
set -e

JENKINS_HOME="/var/lib/jenkins"
BACKUP_DIR="/mnt/backups/jenkins"
TIMESTAMP=$(date +%F_%H%M%S)
RETENTION_DAYS=7

# 创建备份目录
mkdir -p "$BACKUP_DIR"

# 停止Jenkins
echo "[$TIMESTAMP] 停止 Jenkins 服务..."
sudo systemctl stop jenkins || {
     echo "停止失败";
     exit 1;
 }


# 等待进程完全退出
sleep 15

# 备份核心数据(排除大目录)
BACKUP_FILE="$BACKUP_DIR/jenkins_${
TIMESTAMP}
.tar.gz"
echo "[$TIMESTAMP] 创建备份: $BACKUP_FILE"
sudo tar -czvf "$BACKUP_FILE" -C "$JENKINS_HOME" \
  --exclude=jobs/*/workspace \
  --exclude=jobs/*/builds/*/artifacts \
  --exclude=cache \
  --exclude=tools \
  --exclude=logs \
  .

# 备份系统配置
CFG_FILE="$BACKUP_DIR/jenkins_config_${
TIMESTAMP}
    .tar.gz"
echo "[$TIMESTAMP] 备份系统配置: $CFG_FILE"
sudo tar -czvf "$CFG_FILE" /etc/sysconfig/jenkins /etc/default/jenkins 2>
/dev/null || true

# 启动Jenkins
echo "[$TIMESTAMP] 启动 Jenkins 服务..."
sudo systemctl start jenkins || {
     echo "启动失败";
     exit 1;
 }
    

# 清理旧备份
echo "[$TIMESTAMP] 清理 $RETENTION_DAYS 天前的备份..."
find "$BACKUP_DIR" -name "jenkins_*.tar.gz" -mtime +$RETENTION_DAYS -delete
find "$BACKUP_DIR" -name "jenkins_config_*.tar.gz" -mtime +$RETENTION_DAYS -delete

echo "[$TIMESTAMP] 备份完成: $BACKUP_FILE"
exit 0
  • 定时任务(每天 02:00 执行):
    • 执行 sudo crontab -e,添加:
      • 0 2 * * * /opt/scripts/jenkins_backup.sh > > /var/log/jenkins_backup.log 2> & 1
  • 常见问题处理:
    • 脚本含 Windows 换行符导致 “command not found”:执行 dos2unix /opt/scripts/jenkins_backup.shsed -i ‘s/\r$//’ /opt/scripts/jenkins_backup.sh
    • 权限不足:确保备份用户对 $JENKINS_HOME 有读权限,备份目录可写。

四 使用插件进行备份 ThinBackup

  • 安装:进入 Manage Jenkins → Manage Plugins,搜索并安装 ThinBackup
  • 配置:进入 Manage Jenkins → ThinBackup,设置 Backup directoryBackup schedule(全量/差异)、以及需要排除的路径(如 workspace、artifacts 等)。
  • 执行与恢复:使用 Backup Now 立即备份;恢复时在同一页面选择备份点执行 Restore

五 恢复与验证

  • 恢复步骤:
    • 停止服务:sudo systemctl stop jenkins
    • 恢复数据(示例):
      • sudo tar -xzvf /mnt/backups/jenkins/jenkins_YYYY-MM-DD_HHMMSS.tar.gz -C /var/lib/jenkins
    • 恢复系统配置(如有):
      • sudo tar -xzvf /mnt/backups/jenkins/jenkins_config_YYYY-MM-DD.tar.gz -C /
    • 权限修正(重要):sudo chown -R jenkins:jenkins /var/lib/jenkins
    • 启动服务:sudo systemctl start jenkins
  • 验证要点:
    • 登录 Web 界面,检查 Manage Jenkins → Manage Nodes and CloudsManage Plugins系统配置、关键 Job 配置与历史是否完整。
    • 如曾单独备份 master.key,在恢复完其他数据后,将其放回 $JENKINS_HOME/secrets/ 并确保权限为 jenkins:jenkins

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Jenkins在CentOS上如何进行备份
本文地址: https://pptw.com/jishu/754343.html
CentOS里Jenkins配置如何进行管理 CentOS中Jenkins配置如何进行调试

游客 回复需填写必要信息