Linux环境下Jenkins备份与恢复指南
Jenkins的数据主要集中在Jenkins主目录(默认路径:/var/lib/jenkins),包含配置文件、作业定义、插件、用户数据等关键信息。备份与恢复的核心是确保这些数据的完整性和一致性,以下是具体方法:
手动备份适合偶尔执行或需要自定义备份内容的场景,步骤如下:
sudo systemctl stop jenkins tar命令压缩主目录(可排除无需备份的文件,如日志)。sudo tar -czvf jenkins_full_backup_$(date +%Y%m%d).tar.gz --exclude=/var/lib/jenkins/logs/* /var/lib/jenkins sudo cp /etc/sysconfig/jenkins /etc/sysconfig/jenkins.bak # CentOS/RHEL sudo cp /etc/default/jenkins /etc/default/jenkins.bak # Debian/Ubuntu sudo cp /var/lib/jenkins/update-center.json update-center.bak sudo mv jenkins_full_backup_*.tar.gz /mnt/backup/ sudo mv *.bak /mnt/backup/ sudo systemctl start jenkins ThinBackup是Jenkins生态中最流行的备份插件,支持定时备份、增量备份、远程存储,适合生产环境。步骤如下:
/var/lib/jenkins/backup);0 2 * * *);full_backup_20250101.tar.gz)→点击「Restore」;通过Shell脚本结合cron实现定时自动备份,适合需要定期清理旧备份的场景。示例脚本:
#!/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主目录(排除日志和临时文件) tar -czvf $BACKUP_FILE -C $JENKINS_HOME . --exclude='logs/*' --exclude='workspace/*' --exclude='tmp/*' # 删除7天前的备份(保留最近7天) find $BACKUP_DIR -name 'jenkins_backup_*' -type d -mtime +7 -exec rm -rf {} \; echo "[$(date)] Backup completed: $BACKUP_FILE" >> $BACKUP_DIR/backup.log /usr/local/bin/backup_jenkins.sh,赋予执行权限:chmod +x /usr/local/bin/backup_jenkins.sh 编辑crontab(sudo crontab -e),添加以下行(每天凌晨2点执行):0 2 * * * /usr/local/bin/backup_jenkins.sh 手动恢复适合单台服务器或备份文件未损坏的情况,步骤如下:
sudo systemctl stop jenkins sudo rm -rf /var/lib/jenkins/* sudo cp /mnt/backup/jenkins_full_backup_20250101.tar.gz /var/lib/jenkins/ sudo tar -xzvf /var/lib/jenkins/jenkins_full_backup_20250101.tar.gz -C /var/lib/jenkins/ sudo cp /mnt/backup/jenkins.bak /etc/sysconfig/jenkins # CentOS/RHEL sudo cp /mnt/backup/jenkins.bak /etc/default/jenkins # Debian/Ubuntu sudo cp /mnt/backup/update-center.bak /var/lib/jenkins/update-center.json sudo systemctl start jenkins http://<server-ip>:8080),登录后检查作业、插件、用户数据是否正常。若之前使用ThinBackup插件备份,恢复步骤更简便:
若Jenkins配置了外部数据库(如MySQL、PostgreSQL),需额外恢复数据库数据:
# 登录MySQL mysql -u root -p # 创建Jenkins数据库(若不存在) CREATE DATABASE jenkins; # 授权用户 GRANT ALL PRIVILEGES ON jenkins.* TO 'jenkins'@'localhost' IDENTIFIED BY 'your_password'; # 退出MySQL exit # 导入备份的SQL文件 mysql -u jenkins -p jenkins < /mnt/backup/jenkins_backup.sql /var/log/backup_jenkins.log),及时发现异常。