Jenkins在CentOS上如何进行备份
导读: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
- 执行 sudo crontab -e,添加:
- 常见问题处理:
- 脚本含 Windows 换行符导致 “command not found”:执行 dos2unix /opt/scripts/jenkins_backup.sh 或 sed -i ‘s/\r$//’ /opt/scripts/jenkins_backup.sh。
- 权限不足:确保备份用户对 $JENKINS_HOME 有读权限,备份目录可写。
四 使用插件进行备份 ThinBackup
- 安装:进入 Manage Jenkins → Manage Plugins,搜索并安装 ThinBackup。
- 配置:进入 Manage Jenkins → ThinBackup,设置 Backup directory、Backup 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 Clouds、Manage Plugins、系统配置、关键 Job 配置与历史是否完整。
- 如曾单独备份 master.key,在恢复完其他数据后,将其放回 $JENKINS_HOME/secrets/ 并确保权限为 jenkins:jenkins。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Jenkins在CentOS上如何进行备份
本文地址: https://pptw.com/jishu/754343.html
