Ubuntu Jenkins备份指南
Jenkins在Ubuntu系统中的核心数据均集中存储在**/var/lib/jenkins**目录(称为“Jenkins主目录”),包含配置文件、作业定义、用户信息、插件及构建历史等关键数据。备份前需确保对该目录有读写权限(通常需sudo权限),并提前规划备份存储路径(如外部硬盘、云存储等),避免本地存储风险。
通过tar命令打包整个主目录是最基础的手动备份方式,适用于一次性完整备份:
# 停止Jenkins服务(防止备份时数据写入导致不一致)
sudo systemctl stop jenkins
# 打包主目录(排除logs目录以减小体积,可选)
sudo tar -czvf jenkins_backup_$(date +%Y%m%d).tar.gz --exclude=/var/lib/jenkins/logs/* /var/lib/jenkins
# 重启Jenkins服务
sudo systemctl start jenkins
说明:--exclude参数可排除无需备份的目录(如临时日志、缓存),节省存储空间。
若只需备份核心数据,可选择性地打包以下目录/文件:
sudo tar -czvf jenkins_core_backup_$(date +%Y%m%d).tar.gz \
/var/lib/jenkins/config.xml \
/var/lib/jenkins/jobs \
/var/lib/jenkins/users \
/var/lib/jenkins/plugins
适用场景:快速备份核心配置,节省时间和存储空间。
ThinBackup是Jenkins生态中最流行的备份插件,支持增量备份、定时任务及备份过滤,操作简便:
/var/backups/jenkins);0 2 * * *表示每天凌晨2点);logs/、workspace/)。Backup Plugin支持自定义备份格式(如ZIP、TAR)及远程存储(如FTP、S3),适合需要灵活存储的场景:
*.tmp)。若需更灵活的备份控制(如自定义备份命名、清理旧备份),可编写Shell脚本并通过cron定时执行:
#!/bin/bash
# 定义备份目录和主目录
BACKUP_DIR="/var/backups/jenkins"
JENKINS_HOME="/var/lib/jenkins"
# 创建备份目录(若不存在)
mkdir -p $BACKUP_DIR
# 生成带时间戳的备份文件名
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/jenkins_backup_$TIMESTAMP.tar.gz"
# 打包主目录(排除logs和临时文件)
tar -czvf $BACKUP_FILE -C $JENKINS_HOME . --exclude=logs --exclude=tmp
# 删除7天前的备份(保留最近7天)
find $BACKUP_DIR -name 'jenkins_backup_*' -type d -mtime +7 -exec rm -rf {} \;
设置定时任务:将脚本保存为/usr/local/bin/jenkins_backup.sh,赋予执行权限:
sudo chmod +x /usr/local/bin/jenkins_backup.sh
编辑cron任务(每天凌晨2点执行):
sudo crontab -e
添加以下内容:
0 2 * * * /usr/local/bin/jenkins_backup.sh
若Jenkins配置了外部数据库(如MySQL、PostgreSQL),需额外备份数据库以确保配置和作业数据的完整性:
# 导出Jenkins数据库(默认数据库名可能为'jenkins')
mysqldump -u jenkins_user -p jenkins > jenkins_db_backup_$(date +%Y%m%d).sql
# 导出Jenkins数据库(默认数据库名可能为'jenkins')
pg_dump -U jenkins_user jenkins > jenkins_db_backup_$(date +%Y%m%d).sql
说明:需将jenkins_user替换为实际的数据库用户名,jenkins替换为数据库名。备份文件应与Jenkins主目录备份一同存储。