snow · 2026.5.15 12:44 · 조회 2
Jenkins 백업 및 복구
백업 대상
Jenkins의 모든 설정과 데이터는 JENKINS_HOME 디렉토리에 저장됩니다.
| 경로 | 내용 |
|---|---|
$JENKINS_HOME/config.xml | Jenkins 전체 설정 |
$JENKINS_HOME/jobs/ | 모든 Job 설정 및 빌드 이력 |
$JENKINS_HOME/plugins/ | 설치된 플러그인 |
$JENKINS_HOME/secrets/ | 암호화 키 및 Credentials |
$JENKINS_HOME/users/ | 사용자 계정 정보 |
빌드 workspace는 백업 불필요. 소스 코드는 Git에서, 아티팩트는 별도 저장소에서 관리합니다.
ThinBackup 플러그인 (권장)
설치
플러그인 관리에서 ThinBackup 검색 후 설치
설정
Jenkins 관리 → ThinBackup → Settings
| 항목 | 권장값 |
|---|---|
| Backup directory | /backup/jenkins |
| Backup schedule (full) | 0 2 * * 0 (매주 일요일 새벽 2시) |
| Backup schedule (diff) | 0 2 * * 1-6 (평일 매일) |
| Max # of backup sets | 10 |
| Wait until Jenkins is idle | 체크 |
복구
Jenkins 관리 → ThinBackup → Restore → 날짜 선택 후 복구
수동 백업 스크립트
#!/bin/bash
JENKINS_HOME=/var/jenkins_home
BACKUP_DIR=/backup/jenkins
DATE=$(date +%Y%m%d_%H%M%S)
# 백업 디렉토리 생성
mkdir -p $BACKUP_DIR
# 중요 파일만 백업 (빌드 이력 제외)
tar -czf $BACKUP_DIR/jenkins_config_$DATE.tar.gz \
--exclude="$JENKINS_HOME/jobs/*/builds" \
--exclude="$JENKINS_HOME/jobs/*/workspace" \
--exclude="$JENKINS_HOME/war" \
$JENKINS_HOME
# 30일 이상 된 백업 삭제
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
echo "백업 완료: jenkins_config_$DATE.tar.gz"
cron 등록
# 매일 새벽 3시 백업
0 3 * * * /opt/scripts/jenkins-backup.sh >> /var/log/jenkins-backup.log 2>&1
Job 내보내기/가져오기
Job XML 내보내기
curl -u admin:TOKEN http://jenkins/job/my-job/config.xml > my-job.xml
Job XML 가져오기
# 새 Job 생성
curl -u admin:TOKEN -X POST http://jenkins/createItem?name=my-job-copy \
-H "Content-Type: application/xml" \
--data-binary @my-job.xml
Docker 환경 복구
# 백업에서 Jenkins 홈 복구
tar -xzf jenkins_config_20251001_030000.tar.gz -C /
# Jenkins 컨테이너 재시작
docker restart jenkins
댓글
아직 댓글이 없습니다.
댓글을 작성하려면 로그인이 필요합니다.