Debian系统下Jenkins备份与恢复方法
手动备份是最直接的备份方式,适用于需要精确控制备份内容的场景。
sudo systemctl stop jenkins
/var/lib/jenkins目录下,使用tar命令打包该目录(可添加-v参数查看压缩过程)。sudo tar -czvf jenkins_full_backup.tar.gz /var/lib/jenkins
/etc/default/jenkins(Debian默认路径),需单独备份。sudo tar -czvf jenkins_config_backup.tar.gz /etc/default/jenkins
.tar.gz文件转移至安全位置(如外部硬盘、NFS共享或远程服务器),避免本地磁盘故障导致数据丢失。sudo mv jenkins_*.tar.gz /mnt/external_drive/backup/
sudo systemctl start jenkins
ThinBackup是Jenkins生态中常用的备份插件,支持定时备份、增量备份及灵活配置。
/var/backups/jenkins);0 2 * * *表示每日凌晨2点执行完整备份);通过Shell脚本可实现定时、定向的自动化备份,适合需要定期清理旧备份的场景。
/usr/local/bin/backup_jenkins.sh文件,内容如下:#!/bin/bash
JENKINS_HOME="/var/lib/jenkins"
BACKUP_DIR="/backups/jenkins"
CURRENT_DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/jenkins_backup_$CURRENT_DATE.tar.gz"
# 创建备份目录(若不存在)
mkdir -p "$BACKUP_DIR"
# 停止Jenkins服务
sudo systemctl stop jenkins
# 打包核心数据
sudo tar -czvf "$BACKUP_FILE" -C "$JENKINS_HOME" .
# 启动Jenkins服务
sudo systemctl start jenkins
# 删除7天前的旧备份(保留最近7天)
find "$BACKUP_DIR" -name "jenkins_backup_*.tar.gz" -mtime +7 -exec rm {} \;
echo "Jenkins备份完成:$BACKUP_FILE"
sudo chmod +x /usr/local/bin/backup_jenkins.sh
crontab -e编辑当前用户的cron任务,添加以下行(每日凌晨1点执行备份):0 1 * * * /usr/local/bin/backup_jenkins.sh >> /var/log/jenkins_backup.log 2>&1
将Jenkins数据目录纳入Git版本控制,可实现数据的版本追溯与远程同步。
cd /var/lib/jenkins
sudo git init
sudo git add .
sudo git commit -m "Initial Jenkins backup"
sudo git remote add origin git@github.com:your_username/jenkins-backup.git
sudo git push -u origin master
backup_jenkins_git.sh),并通过cron定时执行,实现每日自动推送备份。手动恢复适用于需要覆盖现有Jenkins数据或迁移至新服务器的场景。
sudo systemctl stop jenkins
sudo rm -rf /var/lib/jenkins/*
.tar.gz文件解压至Jenkins主目录。sudo tar -xzvf /mnt/external_drive/backup/jenkins_full_backup.tar.gz -C /var/lib/jenkins
sudo tar -xzvf /mnt/external_drive/backup/jenkins_config_backup.tar.gz -C /var/lib/jenkins
sudo systemctl start jenkins
http://<server-ip>:8080),检查配置、作业、用户及插件是否恢复。ThinBackup插件支持从备份文件中快速恢复数据。
.tar.gz文件复制至Jenkins服务器的临时目录(如/tmp)。.tar.gz备份文件,然后点击“恢复”。config.xml、jobs目录等关键内容是否完整,避免恢复无效数据。