서문
OpenClaw 운영 과정에서 설정 파일, API 키, 대화 기록, 스킬 설정 등 다양한 중요 데이터가 생성됩니다. 서버 장애나 오조작으로 데이터가 손실되면 복구 비용이 매우 높습니다. 이 글에서는 완벽한 백업 전략을 수립하고, 재해 발생 시 신속하게 서비스를 복구하는 방법을 상세히 설명합니다.
1. 백업이 필요한 데이터
1.1 데이터 목록
| 데이터 유형 | 기본 경로 | 중요도 | 변경 빈도 |
|---|---|---|---|
| 주 설정 파일 | ~/.config/openclaw/openclaw.json5 |
매우 높음 | 낮음 |
| 환경 변수 설정 | ~/.config/openclaw/.env |
매우 높음 | 낮음 |
| 채널 자격 증명 | ~/.openclaw/credentials/ |
매우 높음 | 낮음 |
| 세션 데이터 | ~/.openclaw/sessions/ |
높음 | 높음 |
| 스킬 설정 | ~/.openclaw/skills/ |
중간 | 중간 |
| 지식 베이스 데이터 | ~/.openclaw/knowledge/ |
높음 | 중간 |
| SSL 인증서 | ~/.openclaw/ssl/ |
높음 | 낮음 |
| 로그 파일 | ~/.local/share/openclaw/logs/ |
낮음 | 높음 |
1.2 데이터 용량 확인
# 각 데이터 디렉토리의 디스크 사용량 확인
du -sh ~/.config/openclaw/
du -sh ~/.openclaw/sessions/
du -sh ~/.openclaw/skills/
du -sh ~/.openclaw/knowledge/
du -sh ~/.local/share/openclaw/logs/
2. 수동 백업
2.1 전체 백업
# 백업 디렉토리 생성
BACKUP_DIR="/backup/openclaw/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
# 설정 파일 백업
cp -r ~/.config/openclaw/ "$BACKUP_DIR/config/"
# 운영 데이터 백업
cp -r ~/.openclaw/ "$BACKUP_DIR/data/"
# 백업 압축
cd /backup/openclaw/
tar -czf "openclaw-backup-$(date +%Y%m%d_%H%M%S).tar.gz" "$(date +%Y%m%d_%H%M%S)/"
echo "백업 완료: $BACKUP_DIR"
2.2 핵심 설정만 백업
가장 중요한 설정만 백업하면 됩니다 (새 서버로 마이그레이션 시 가장 자주 사용):
# 설정 내보내기
openclaw config export > ~/openclaw-config-backup.json
# 또는 핵심 파일 수동 패키징
tar -czf openclaw-core-backup.tar.gz \
~/.config/openclaw/openclaw.json5 \
~/.config/openclaw/.env \
~/.openclaw/credentials/
2.3 openclaw backup 명령 사용
OpenClaw에는 백업 명령이 내장되어 있어 원클릭으로 완료할 수 있습니다:
# 전체 백업 (설정+데이터)
openclaw backup create
# 설정만 백업
openclaw backup create --config-only
# 출력 경로 지정
openclaw backup create --output /backup/openclaw-20260314.tar.gz
# 백업 내용 확인
openclaw backup list
3. 자동 정기 백업
3.1 Cron을 사용한 정기 백업
자동 백업 스크립트를 생성합니다:
#!/bin/bash
# /usr/local/bin/openclaw-backup.sh
BACKUP_ROOT="/backup/openclaw"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_ROOT/openclaw-$DATE.tar.gz"
KEEP_DAYS=30
# 백업 디렉토리 생성
mkdir -p "$BACKUP_ROOT"
# 백업 실행
openclaw backup create --output "$BACKUP_FILE"
if [ $? -eq 0 ]; then
echo "[$(date)] 백업 성공: $BACKUP_FILE" >> /var/log/openclaw-backup.log
else
echo "[$(date)] 백업 실패!" >> /var/log/openclaw-backup.log
# 알림 전송
curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" \
-d chat_id="$CHAT_ID" \
-d text="OpenClaw 백업이 실패했습니다. 확인해 주세요!"
exit 1
fi
# 오래된 백업 정리
find "$BACKUP_ROOT" -name "openclaw-*.tar.gz" -mtime +$KEEP_DAYS -delete
echo "[$(date)] ${KEEP_DAYS}일 이전의 오래된 백업을 정리했습니다" >> /var/log/openclaw-backup.log
chmod +x /usr/local/bin/openclaw-backup.sh
# 정기 작업 설정: 매일 새벽 2시 실행
crontab -e
# 추가: 0 2 * * * /usr/local/bin/openclaw-backup.sh
3.2 원격 저장소로 백업
로컬 백업만으로는 디스크 장애를 방지할 수 없으므로, 원격 저장소로 동기화하는 것을 권장합니다:
# 원격 서버로 동기화 (rsync를 통해)
rsync -avz /backup/openclaw/ user@backup-server:/remote-backup/openclaw/
# S3 호환 스토리지로 동기화
aws s3 sync /backup/openclaw/ s3://my-bucket/openclaw-backup/ --storage-class STANDARD_IA
# Backblaze B2로 동기화
b2 sync /backup/openclaw/ b2://my-bucket/openclaw-backup/
백업 스크립트 끝에 원격 동기화 단계를 추가합니다:
# openclaw-backup.sh 끝에 추가
rsync -avz --delete "$BACKUP_ROOT/" user@backup-server:/remote-backup/openclaw/
echo "[$(date)] 원격 동기화 완료" >> /var/log/openclaw-backup.log
3.3 백업 암호화
백업에 민감한 정보(API 키 등)가 포함된 경우 암호화를 권장합니다:
# GPG로 백업 암호화
gpg --symmetric --cipher-algo AES256 "$BACKUP_FILE"
rm "$BACKUP_FILE" # 암호화되지 않은 백업 삭제
# 복호화 시
gpg --decrypt "$BACKUP_FILE.gpg" > "$BACKUP_FILE"
4. 재해 복구
4.1 복구 절차
백업에서 복구해야 할 때 다음 단계를 따릅니다:
# 1. OpenClaw 설치 (새 서버인 경우)
npm install -g openclaw
# 2. 현재 서비스 중지 (실행 중인 경우)
openclaw stop
# 3. openclaw backup restore 명령 사용
openclaw backup restore /backup/openclaw-20260314.tar.gz
# 또는 수동 복구
tar -xzf /backup/openclaw-20260314.tar.gz -C /tmp/openclaw-restore/
cp -r /tmp/openclaw-restore/config/* ~/.config/openclaw/
cp -r /tmp/openclaw-restore/data/* ~/.openclaw/
# 4. 설정 검증
openclaw config validate
# 5. 서비스 시작
openclaw up -d
# 6. 상태 확인
openclaw doctor
curl -s http://localhost:18789/health | jq .
4.2 부분 복구
특정 데이터만 복구해야 할 때도 있습니다:
# 설정 파일만 복구
openclaw backup restore /backup/openclaw-20260314.tar.gz --config-only
# 세션 데이터만 복구
openclaw backup restore /backup/openclaw-20260314.tar.gz --sessions-only
# 지식 베이스만 복구
openclaw backup restore /backup/openclaw-20260314.tar.gz --knowledge-only
4.3 서버 간 마이그레이션
OpenClaw을 한 서버에서 다른 서버로 마이그레이션합니다:
# 기존 서버에서
openclaw backup create --output /tmp/openclaw-migration.tar.gz
scp /tmp/openclaw-migration.tar.gz user@new-server:/tmp/
# 새 서버에서
npm install -g openclaw
openclaw backup restore /tmp/openclaw-migration.tar.gz
openclaw up -d
# 모든 채널이 정상적으로 연결되었는지 확인
openclaw status
5. 백업 전략 권장사항
5.1 계층적 백업 전략
| 계층 | 빈도 | 보존 기간 | 내용 | 저장 위치 |
|---|---|---|---|---|
| 일일 백업 | 매일 | 30일 | 전체 백업 | 로컬 + 원격 |
| 주간 백업 | 매주 일요일 | 90일 | 전체 백업 | 원격 스토리지 |
| 설정 변경 백업 | 변경 시마다 | 영구 | 설정만 | Git 저장소 |
5.2 설정 파일 버전 관리
Git을 사용한 설정 파일 변경 관리를 강력히 권장합니다:
# Git 저장소 초기화
cd ~/.config/openclaw
git init
echo ".env" >> .gitignore # 민감한 환경 변수 제외
git add .
git commit -m "Initial OpenClaw config"
# 설정 수정 후 매번
git add -A
git commit -m "모델 설정을 claude-3.5-sonnet으로 업데이트"
# 프라이빗 저장소로 푸시
git remote add origin [email protected]:yourname/openclaw-config.git
git push -u origin main
5.3 정기 백업 검증
백업을 검증하지 않으면 백업이 없는 것과 같습니다. 매월 한 번 복구 훈련을 실행하는 것을 권장합니다:
# 테스트 환경에서 복구 시도
docker run -it --rm -v /backup/openclaw/latest.tar.gz:/backup.tar.gz node:20 bash
npm install -g openclaw
openclaw backup restore /backup.tar.gz
openclaw config validate
신뢰할 수 있는 백업 전략을 수립하고 실행하는 것은 OpenClaw 서비스의 장기적인 안정 운영을 보장하는 기반입니다. 데이터가 손실된 후에야 백업의 중요성을 깨닫지 마세요.