Linux版Jenkins数据备份方法
手动备份是最直接的备份方式,适用于需要完全控制备份内容的场景,核心是备份Jenkins主目录(默认/var/lib/jenkins)及关键配置文件。
为避免备份过程中数据不一致,建议先停止Jenkins服务(若使用Docker部署,需替换为docker stop jenkins):
sudo systemctl stop jenkins
使用tar命令打包主目录(包含配置、作业、插件、用户等所有关键数据),建议添加时间戳以便区分:
sudo tar -czvf jenkins_backup_$(date +%Y%m%d).tar.gz /var/lib/jenkins
优化建议:若主目录较大,可排除无需备份的文件(如日志、临时文件),减少备份体积:
sudo tar -czvf jenkins_backup_$(date +%Y%m%d).tar.gz --exclude=/var/lib/jenkins/logs/* --exclude=/var/lib/jenkins/tmp/* /var/lib/jenkins
除主目录外,部分配置文件需单独备份(如服务配置、JDK/工具路径):
# 备份Jenkins服务配置(根据系统选择其一)
sudo cp /etc/sysconfig/jenkins /path/to/backup/ # CentOS/RHEL
sudo cp /etc/default/jenkins /path/to/backup/ # Ubuntu/Debian
# 备份Jenkins WAR包(若有自定义修改)
sudo cp /opt/tomcat/webapps/jenkins.war /path/to/backup/
将备份文件复制到外部存储(如U盘、NFS)或远程服务器(如SFTP、SCP),避免本地磁盘损坏导致数据丢失:
sudo mv jenkins_backup_*.tar.gz /mnt/external_disk/backup/
sudo mv /path/to/backup/*.conf /mnt/external_disk/backup/
sudo systemctl start jenkins
ThinBackup是Jenkins生态中最流行的备份插件,支持定时备份、增量备份、远程存储,适合生产环境。
登录Jenkins管理界面→点击「系统管理」→「插件管理」→「可选插件」→搜索「ThinBackup」→点击「安装」。
安装完成后,进入「系统管理」→「ThinBackup」→「Settings」:
/var/lib/jenkins/backup);0 2 * * *);jobs/、plugins/);通过脚本实现自动化备份+清理旧备份,结合crontab设置定时任务,适合需要灵活控制的场景。
创建/usr/local/bin/backup_jenkins.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主目录
tar -czvf "$BACKUP_FILE" -C "$JENKINS_HOME" .
# 删除7天前的备份(保留最近7天)
find "$BACKUP_DIR" -name 'jenkins_backup_*.tar.gz' -type f -mtime +7 -exec rm -rf {} \;
echo "[$(date)] Jenkins备份完成:$BACKUP_FILE" >> "$BACKUP_DIR/backup.log"
sudo chmod +x /usr/local/bin/backup_jenkins.sh
编辑crontab(sudo crontab -e),添加以下内容(每天凌晨2点执行):
0 2 * * * /usr/local/bin/backup_jenkins.sh
若需要增量备份(仅备份变化的文件),可使用rsync工具,适合大型Jenkins环境。
sudo yum install rsync -y # CentOS/RHEL
sudo apt install rsync -y # Ubuntu/Debian
创建/usr/local/bin/rsync_jenkins.sh,内容如下:
#!/bin/bash
# 定义变量
SOURCE_DIR="/var/lib/jenkins"
BACKUP_DIR="/opt/backup/jenkins_incremental"
LOG_FILE="/opt/backup/jenkins/rsync.log"
# 执行增量备份(保留删除的文件)
rsync -avz --delete "$SOURCE_DIR/" "$BACKUP_DIR/" >> "$LOG_FILE" 2>&1
echo "[$(date)] Jenkins增量备份完成" >> "$LOG_FILE"
sudo chmod +x /usr/local/bin/rsync_jenkins.sh
sudo crontab -e
# 添加以下内容(每天凌晨3点执行)
0 3 * * * /usr/local/bin/rsync_jenkins.sh