温馨提示×

Linux环境下Jenkins如何备份与恢复

小樊
44
2025-10-01 10:43:10
栏目: 智能运维

一、Linux环境下Jenkins备份方法

1. 手动备份(基础且可靠)

  • 停止Jenkins服务:备份前需停止服务以保证数据一致性,命令:sudo systemctl stop jenkins(若使用Docker运行,需替换为docker stop jenkins)。
  • 备份Jenkins主目录:主目录(默认/var/lib/jenkins)包含配置、构建历史、插件等核心数据,使用tar命令打包:sudo tar -czvf jenkins_full_backup_$(date +%Y%m%d).tar.gz /var/lib/jenkins
  • 选择性备份关键组件:若只需备份核心数据,可单独打包config.xml(配置)、jobs(构建任务)、plugins(插件)、users(用户信息)等目录,例如:sudo tar -czvf jenkins_config_backup.tar.gz /var/lib/jenkins/config.xml /var/lib/jenkins/jobs /var/lib/jenkins/plugins
  • 备份配置文件:Jenkins系统配置文件位于/etc/sysconfig/jenkins(CentOS/RHEL)或/etc/default/jenkins(Ubuntu/Debian),命令:sudo cp /etc/sysconfig/jenkins jenkins_config_file.bak(路径根据系统调整)。
  • 存储备份文件:将备份文件转移至安全位置(如外部硬盘、远程服务器/NAS),避免本地磁盘故障导致数据丢失。

2. 使用ThinBackup插件(自动化推荐)

  • 安装插件:登录Jenkins管理界面→“系统管理”→“插件管理”→“可选插件”,搜索“ThinBackup”并安装。
  • 配置备份参数:安装后进入“系统管理”→“ThinBackup”→“Settings”,设置:
    • 备份目录:指定备份存储路径(如/var/lib/jenkins/backup);
    • 备份计划:通过Cron表达式设置定时任务(如每天凌晨2点执行:0 2 * * *);
    • 排除项:可选排除大文件(如构建产物*.log*.jar)以减少备份体积。
  • 执行备份:配置完成后,可手动点击“Backup Now”立即备份,或等待定时任务触发自动备份。
  • 恢复流程:将备份文件复制到新服务器的Jenkins备份目录→安装ThinBackup插件并配置相同参数→进入“ThinBackup”→“Restore”,选择备份文件并点击“Restore”,恢复后重启Jenkins。

3. Shell脚本自动化备份(灵活定制)

  • 编写备份脚本:创建脚本文件(如/usr/local/bin/jenkins_backup.sh),内容示例如下:
    #!/bin/bash
    BACKUP_DIR="/opt/backup/jenkins"
    JENKINS_HOME="/var/lib/jenkins"
    TIMESTAMP=$(date +%Y%m%d_%H%M%S)
    BACKUP_FILE="$BACKUP_DIR/jenkins_backup_$TIMESTAMP.tar.gz"
    
    # 创建备份目录
    mkdir -p "$BACKUP_DIR"
    
    # 停止Jenkins服务
    sudo systemctl stop jenkins
    
    # 备份主目录
    sudo tar -czvf "$BACKUP_FILE" -C "$JENKINS_HOME" .
    
    # 删除7天前的备份(保留最近7天)
    find "$BACKUP_DIR" -name 'jenkins_backup_*' -type d -mtime +7 -exec rm -rf {} \;
    
    # 启动Jenkins服务
    sudo systemctl start jenkins
    
    echo "Jenkins备份完成:$BACKUP_FILE"
    
  • 设置脚本权限sudo chmod +x /usr/local/bin/jenkins_backup.sh
  • 配置定时任务:通过crontab -e添加定时任务(如每天凌晨1点执行):
    0 1 * * * /usr/local/bin/jenkins_backup.sh >> /var/log/jenkins_backup.log 2>&1
    
    日志将记录在/var/log/jenkins_backup.log中,便于排查问题。

4. 数据库备份(若使用外部数据库)

  • 适用场景:若Jenkins配置了外部数据库(如MySQL、PostgreSQL),需额外备份数据库以确保配置和构建数据完整。
  • MySQL备份:使用mysqldump命令导出数据库(假设数据库名为jenkins):
    mysqldump -u jenkins_user -p jenkins > /opt/backup/jenkins_db_$(date +%Y%m%d).sql
    
  • PostgreSQL备份:使用pg_dump命令:
    pg_dump -U jenkins_user -d jenkins -f /opt/backup/jenkins_db_$(date +%Y%m%d).sql
    
  • 存储与恢复:将SQL文件转移至安全位置;恢复时使用mysql -u jenkins_user -p jenkins < backup.sql(MySQL)或psql -U jenkins_user -d jenkins -f backup.sql(PostgreSQL)。

二、Linux环境下Jenkins恢复方法

1. 手动恢复(对应手动备份)

  • 停止Jenkins服务sudo systemctl stop jenkins(Docker运行则用docker stop jenkins)。
  • 恢复主目录:将备份文件解压至Jenkins主目录(覆盖现有文件):
    sudo tar -xzvf /path/to/backup/jenkins_full_backup_20250930.tar.gz -C /var/lib/jenkins
    
  • 恢复配置文件:若备份了配置文件,复制至原路径:
    sudo cp /path/to/backup/jenkins_config_file.bak /etc/sysconfig/jenkins  # CentOS/RHEL
    sudo systemctl daemon-reload
    
  • 启动Jenkins服务sudo systemctl start jenkins,等待服务启动完成后访问Web界面验证。

2. 使用ThinBackup插件恢复(对应插件备份)

  • 安装插件:若新服务器未安装ThinBackup,需先通过“系统管理”→“插件管理”安装。
  • 配置插件:进入“系统管理”→“ThinBackup”→“Settings”,设置与备份时相同的备份目录和参数。
  • 执行恢复:进入“ThinBackup”→“Restore”,选择备份文件(如jenkins_backup_20250930.tar.gz)并点击“Restore”,恢复后重启Jenkins。

3. 数据库恢复(若使用外部数据库)

  • 恢复数据库:使用之前导出的SQL文件恢复数据库:
    mysql -u jenkins_user -p jenkins < /path/to/backup/jenkins_db_20250930.sql  # MySQL
    
  • 验证数据:恢复后访问Jenkins Web界面,检查配置、任务和用户数据是否完整。

0