在 Debian 上备份 Jenkins,通常不需要备份整个系统,而是重点备份 Jenkins 主目录(JENKINS_HOME) 以及少量配置。下面按推荐程度给你一个完整、可操作的方案。
默认情况下:
JENKINS_HOME=/var/lib/jenkins
也可以在配置文件中确认:
grep JENKINS_HOME /etc/default/jenkins
避免数据不一致:
sudo systemctl stop jenkins
sudo tar -czvf jenkins-backup-$(date +%F).tar.gz /var/lib/jenkins
备份文件示例:
jenkins-backup-2026-01-21.tar.gz
sudo rsync -aAXv /var/lib/jenkins/ /backup/jenkins/
sudo tar -czvf jenkins-config-backup.tar.gz \
/etc/default/jenkins \
/etc/systemd/system/jenkins.service \
/etc/nginx/sites-enabled/jenkins # 如果有反向代理
sudo systemctl start jenkins
| 目录/文件 | 说明 |
|---|---|
jobs/ |
所有 Job 配置 |
config.xml |
Jenkins 全局配置 |
users/ |
用户和权限 |
plugins/ |
插件(可重新安装) |
secrets/ |
凭据、密钥(⚠️ 非常重要) |
nodes/ |
Agent 节点配置 |
workspace/ |
构建工作区(通常不需要备份) |
✅ 建议排除 workspace 和 builds 历史以减少体积:
sudo tar --exclude='/var/lib/jenkins/workspace' \
--exclude='/var/lib/jenkins/builds' \
-czvf jenkins-backup.tar.gz /var/lib/jenkins
插件方式适合不太熟悉命令行的人:
✅ 优点:简单
❌ 缺点:不够灵活,不适合大规模生产环境
#!/bin/bash
BACKUP_DIR=/data/backups/jenkins
DATE=$(date +%F)
JENKINS_HOME=/var/lib/jenkins
systemctl stop jenkins
tar --exclude="$JENKINS_HOME/workspace" \
--exclude="$JENKINS_HOME/builds" \
-czvf $BACKUP_DIR/jenkins-$DATE.tar.gz $JENKINS_HOME
systemctl start jenkins
设置权限并加到 cron:
chmod +x /usr/local/bin/backup-jenkins.sh
crontab -e
0 2 * * * /usr/local/bin/backup-jenkins.sh
systemctl stop jenkins
sudo rm -rf /var/lib/jenkins
sudo tar -xzvf jenkins-backup.tar.gz -C /
systemctl start jenkins
✅ 备份要异地保存(NAS / 对象存储)
✅ 定期测试恢复流程
✅ 大集群不推荐直接备份 workspace
✅ 使用 Pipeline as Code 后,Job 配置可 Git 管理,降低备份压力
如果你愿意,我可以帮你:
只要告诉我你的 Jenkins 是 裸机 / Docker / K8s 即可。