서문
데이터 백업은 운영에서 가장 중요하면서도 가장 간과되기 쉬운 부분입니다. OpenClaw의 경우 설정 파일, 스킬 플러그인, 대화 기록 등의 데이터가 손실되면 복구 비용이 매우 높습니다. 본 가이드에서는 어떤 데이터를 백업해야 하는지, 자동화 백업을 구현하는 방법, 재해 복구 및 서버 마이그레이션의 전체 절차를 상세히 안내합니다.
백업이 필요한 데이터
데이터 목록
| 데이터 유형 | 저장 위치 | 중요도 | 크기 추정 |
|---|---|---|---|
| 메인 설정 파일 | ~/.config/openclaw/openclaw.json5 |
매우 높음 | < 10 KB |
| 스킬 파일 | ~/.openclaw/skills/*.md |
높음 | 개당 1-50 KB |
| 대화 기록 | ~/.openclaw/data/conversations/ |
중간 | 사용량에 따라 다름 |
| MCP 설정 | ~/.openclaw/mcp/ |
높음 | < 100 KB |
| 사용자 데이터 | ~/.openclaw/data/users/ |
중간 | 사용자 수에 따라 다름 |
| 로그 파일 | ~/.openclaw/logs/ |
낮음 | 상당히 클 수 있음 |
| SSL 인증서 | /etc/letsencrypt/ 또는 커스텀 경로 |
높음 | < 100 KB |
| 환경 변수 | ~/.bashrc 또는 ~/.env |
매우 높음 | < 5 KB |
최소 백업 세트
저장 공간이 제한된 경우, 최소한 다음 항목을 백업합니다:
~/.config/openclaw/openclaw.json5 # 메인 설정
~/.openclaw/skills/ # 모든 스킬
~/.openclaw/mcp/ # MCP 설정
이 세 가지만 있으면, 다른 데이터가 손실되더라도 핵심 기능을 빠르게 복구할 수 있습니다.
1단계: 수동 백업
1.1 원클릭 백업 스크립트
간단한 백업 스크립트를 생성합니다:
nano ~/openclaw-backup.sh
다음 내용을 작성합니다:
#!/bin/bash
# OpenClaw 백업 스크립트
# 설정
BACKUP_DIR="$HOME/openclaw-backups"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="openclaw-backup-${DATE}.tar.gz"
# 백업 디렉토리 생성
mkdir -p "$BACKUP_DIR"
# 백업할 경로
PATHS=(
"$HOME/.config/openclaw"
"$HOME/.openclaw/skills"
"$HOME/.openclaw/mcp"
"$HOME/.openclaw/data"
)
# 선택: 환경 변수 백업 (OPENCLAW 관련만)
ENV_FILE="/tmp/openclaw-env-${DATE}.txt"
env | grep -E '^(OPENCLAW_|OPENAI_|ANTHROPIC_|GOOGLE_AI_|DEEPSEEK_|OPENROUTER_)' > "$ENV_FILE"
# 압축 백업 생성
echo "백업 시작..."
tar -czf "${BACKUP_DIR}/${BACKUP_FILE}" \
"${PATHS[@]}" \
"$ENV_FILE" \
2>/dev/null
# 임시 파일 정리
rm -f "$ENV_FILE"
# 백업 크기 확인
SIZE=$(du -h "${BACKUP_DIR}/${BACKUP_FILE}" | cut -f1)
echo "백업 완료:"
echo " 파일: ${BACKUP_DIR}/${BACKUP_FILE}"
echo " 크기: ${SIZE}"
# 최근 30개 백업 유지, 오래된 것은 삭제
cd "$BACKUP_DIR"
ls -t openclaw-backup-*.tar.gz | tail -n +31 | xargs -r rm
echo "만료된 백업 정리 완료"
권한 설정 및 실행:
chmod +x ~/openclaw-backup.sh
~/openclaw-backup.sh
1.2 백업 검증
# 백업 내용 확인
tar -tzf ~/openclaw-backups/openclaw-backup-*.tar.gz | head -20
# 파일 무결성 검사
tar -tzf ~/openclaw-backups/openclaw-backup-*.tar.gz > /dev/null && echo "백업 파일 정상" || echo "백업 파일 손상"
2단계: 자동화 백업
2.1 Cron을 이용한 정기 백업
crontab -e
다음 항목을 추가합니다:
# 매일 새벽 2시 OpenClaw 자동 백업
0 2 * * * /home/your-user/openclaw-backup.sh >> /var/log/openclaw-backup.log 2>&1
# 매주 일요일 새벽 3시 전체 백업 생성 (로그 포함)
0 3 * * 0 /home/your-user/openclaw-backup-full.sh >> /var/log/openclaw-backup.log 2>&1
2.2 전체 백업 스크립트 (로그 및 대화 기록 포함)
nano ~/openclaw-backup-full.sh
#!/bin/bash
# OpenClaw 전체 백업 스크립트 (주간)
BACKUP_DIR="$HOME/openclaw-backups/weekly"
DATE=$(date +%Y%m%d)
BACKUP_FILE="openclaw-full-${DATE}.tar.gz"
mkdir -p "$BACKUP_DIR"
# 데이터 일관성을 위해 OpenClaw 일시 중지
echo "OpenClaw 서비스 일시 중지..."
openclaw restart
# 서비스 완전 종료 대기
sleep 5
# 전체 백업
echo "전체 백업 시작..."
tar -czf "${BACKUP_DIR}/${BACKUP_FILE}" \
"$HOME/.config/openclaw" \
"$HOME/.openclaw" \
2>/dev/null
# OpenClaw 서비스 복구
echo "OpenClaw 서비스 복구..."
openclaw up -d
SIZE=$(du -h "${BACKUP_DIR}/${BACKUP_FILE}" | cut -f1)
echo "전체 백업 완료: ${SIZE}"
# 최근 12주분 백업 유지
cd "$BACKUP_DIR"
ls -t openclaw-full-*.tar.gz | tail -n +13 | xargs -r rm
chmod +x ~/openclaw-backup-full.sh
2.3 원격 스토리지에 백업
로컬 백업만으로는 충분하지 않으므로, 원격으로 동기화하는 것을 권장합니다:
방법 1: rsync로 다른 서버에 동기화
# 백업 스크립트 끝에 추가
rsync -avz --delete \
"$BACKUP_DIR/" \
backup-user@backup-server:/backups/openclaw/
방법 2: S3 호환 스토리지에 업로드
# AWS CLI 또는 호환 도구 설치
# apt install awscli
# 백업 스크립트 끝에 추가
aws s3 cp "${BACKUP_DIR}/${BACKUP_FILE}" \
s3://your-backup-bucket/openclaw/ \
--storage-class STANDARD_IA
방법 3: Google Drive / OneDrive에 업로드
# rclone 사용
# apt install rclone
# rclone config (최초 설정 필요)
rclone copy "${BACKUP_DIR}/${BACKUP_FILE}" \
gdrive:Backups/openclaw/
2.4 백업 알림
백업 스크립트에 알림 기능을 추가합니다:
# OpenClaw 자체를 통해 백업 알림 발송 (Telegram 설정 시)
notify_backup() {
local status=$1
local message=$2
curl -s -X POST "http://localhost:18789/api/notify" \
-H "Content-Type: application/json" \
-d "{\"channel\": \"telegram\", \"user\": \"${ADMIN_TELEGRAM_ID}\", \"message\": \"${message}\"}"
}
# 백업 성공 후 호출
notify_backup "success" "OpenClaw 일일 백업 완료, 크기: ${SIZE}"
# 백업 실패 시 호출
if [ $? -ne 0 ]; then
notify_backup "error" "OpenClaw 백업 실패, 로그를 확인하십시오"
fi
3단계: 데이터 복구
3.1 복구 절차
백업에서 복구해야 할 때 다음 단계를 따릅니다:
# 1단계: OpenClaw 중지
openclaw restart
# 2단계: 현재 데이터 백업 (만약을 위해)
mv ~/.config/openclaw ~/.config/openclaw.broken
mv ~/.openclaw ~/.openclaw.broken
# 3단계: 백업 파일 압축 해제
cd /
tar -xzf ~/openclaw-backups/openclaw-backup-20260404_020000.tar.gz
# 4단계: 환경 변수 복구 (백업에 포함된 경우)
cat /tmp/openclaw-env-*.txt
# 필요한 환경 변수를 ~/.bashrc에 수동 추가
# 5단계: 환경 변수 다시 로드
source ~/.bashrc
# 6단계: OpenClaw 시작
openclaw up -d
# 7단계: 검증
openclaw doctor
3.2 부분 복구
특정 데이터만 복구해야 하는 경우:
# 설정 파일만 복구
tar -xzf backup.tar.gz --include='*openclaw.json5' -C /
# 스킬 파일만 복구
tar -xzf backup.tar.gz --include='*skills/*' -C /
# MCP 설정만 복구
tar -xzf backup.tar.gz --include='*mcp/*' -C /
3.3 백업 내 파일 확인
복구 전에 먼저 백업 내용을 확인합니다:
# 백업의 모든 파일 나열
tar -tzf backup.tar.gz
# 특정 파일 내용 확인 (압축 해제 없이)
tar -xzf backup.tar.gz -O home/user/.config/openclaw/openclaw.json5
4단계: 서버 마이그레이션
4.1 마이그레이션 전 준비
기존 서버에서:
# 전체 백업 생성
~/openclaw-backup-full.sh
# 현재 버전 기록
openclaw --version > ~/openclaw-version.txt
# Node.js 버전 기록
node --version >> ~/openclaw-version.txt
# 환경 변수 내보내기
env | grep -E '^(OPENCLAW_|OPENAI_|ANTHROPIC_|GOOGLE_AI_|DEEPSEEK_|OPENROUTER_|TELEGRAM_|DISCORD_)' > ~/openclaw-env-export.txt
4.2 새 서버에서 복구
# 1단계: Node.js 22+ 설치
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash -
sudo apt install -y nodejs
# 2단계: OpenClaw 설치
npm install -g openclaw@latest
# 3단계: 백업을 새 서버로 전송
scp old-server:~/openclaw-backups/openclaw-full-latest.tar.gz ~/
# 4단계: 데이터 복구
cd /
tar -xzf ~/openclaw-full-latest.tar.gz
# 5단계: 환경 변수 복구
scp old-server:~/openclaw-env-export.txt ~/
cat ~/openclaw-env-export.txt >> ~/.bashrc
source ~/.bashrc
# 6단계: 초기화 점검 실행
openclaw doctor
# 7단계: 서비스 시작
openclaw up -d
# 8단계: 모든 채널 정상 확인
openclaw logs
4.3 마이그레이션 후 점검 목록
| 점검 항목 | 명령어 | 예상 결과 |
|---|---|---|
| 서비스 상태 | openclaw doctor |
전부 통과 |
| 설정 로드 | openclaw logs |
오류 없음 |
| 모델 연결 | 테스트 메시지 전송 | 정상 응답 |
| 채널 연결 | 각 채널에서 메시지 전송 | 정상 송수신 |
| 스킬 로드 | openclaw skill list |
모든 스킬 표시 |
| Dashboard | 브라우저에서 접속 | 정상 로그인 |
| HTTPS | curl -I https://your-domain |
200 OK |
4.4 DNS 전환
커스텀 도메인을 사용하는 경우:
# DNS A 레코드를 새 서버 IP로 업데이트
# 도메인 서비스 제공자 대시보드에서 작업
# DNS 전파 대기 (보통 5-30분, 최대 48시간)
# 다음 명령으로 확인 가능
dig ai.example.com +short
# 새 IP 확인 후, 새 서버에서 SSL 설정
sudo certbot certonly --standalone -d ai.example.com
5단계: 재해 복구 방안
5.1 3-2-1 백업 규칙
업계 표준인 3-2-1 백업 규칙을 준수합니다:
- 3개의 데이터 복사본
- 2가지 다른 저장 매체
- 1개의 원격지 백업
예시 방안:
복사본 1: 서버 로컬 ~/openclaw-backups/ (매일 자동)
복사본 2: 원격 S3 스토리지 (매일 동기화)
복사본 3: 로컬 NAS 또는 외장 하드 (매주 수동 또는 자동)
5.2 복구 시간 추정
| 복구 시나리오 | 예상 시간 | 작업 |
|---|---|---|
| 설정 파일 손상 | 5-10분 | 백업에서 설정 복구 |
| 스킬 파일 분실 | 5분 | 백업에서 스킬 디렉토리 복구 |
| 전체 .openclaw 분실 | 15-30분 | 전체 백업 복구 |
| 서버 다운 | 30-60분 | 새 서버 + 백업 복구 |
| 데이터센터 장애 | 1-2시간 | 원격지 복구 |
5.3 빠른 복구 스크립트
재해 발생 시 빠르게 실행할 원클릭 복구 스크립트를 생성합니다:
nano ~/openclaw-restore.sh
#!/bin/bash
# OpenClaw 원클릭 복구 스크립트
set -e
BACKUP_DIR="$HOME/openclaw-backups"
# 최신 백업 찾기
LATEST_BACKUP=$(ls -t "$BACKUP_DIR"/openclaw-backup-*.tar.gz 2>/dev/null | head -1)
if [ -z "$LATEST_BACKUP" ]; then
echo "오류: 백업 파일을 찾을 수 없습니다"
exit 1
fi
echo "다음 백업에서 복구합니다:"
echo " $LATEST_BACKUP"
echo " 생성 시간: $(stat -c %y "$LATEST_BACKUP" 2>/dev/null || stat -f %Sm "$LATEST_BACKUP")"
echo ""
read -p "복구를 진행하시겠습니까? (y/N) " confirm
if [ "$confirm" != "y" ]; then
echo "취소되었습니다"
exit 0
fi
# 서비스 중지
echo "OpenClaw 중지..."
openclaw restart 2>/dev/null || true
# 현재 상태 백업
echo "현재 상태 백업..."
if [ -d "$HOME/.openclaw" ]; then
mv "$HOME/.openclaw" "$HOME/.openclaw.pre-restore.$(date +%s)"
fi
if [ -d "$HOME/.config/openclaw" ]; then
mv "$HOME/.config/openclaw" "$HOME/.config/openclaw.pre-restore.$(date +%s)"
fi
# 복구
echo "백업 데이터 복구..."
cd /
tar -xzf "$LATEST_BACKUP"
# 서비스 시작
echo "OpenClaw 시작..."
source ~/.bashrc
openclaw up -d
# 검증
echo "서비스 상태 확인..."
sleep 3
openclaw doctor
echo ""
echo "복구가 완료되었습니다!"
chmod +x ~/openclaw-restore.sh
백업 모니터링
백업 정상 실행 여부 확인
# 최신 백업 시간 확인
ls -lt ~/openclaw-backups/ | head -5
# 백업 cron 로그 확인
tail -20 /var/log/openclaw-backup.log
# 백업 파일 크기 확인 (너무 작으면 불완전할 수 있음)
du -sh ~/openclaw-backups/openclaw-backup-*.tar.gz | tail -5
정기 복구 연습
분기별로 한 번씩 복구 연습을 하여 백업의 유효성을 확인하는 것을 권장합니다:
# 테스트 환경에서 복구
mkdir -p /tmp/openclaw-test-restore
cd /tmp/openclaw-test-restore
tar -xzf ~/openclaw-backups/openclaw-backup-latest.tar.gz
echo "복구 테스트 통과"
rm -rf /tmp/openclaw-test-restore
자주 묻는 질문
백업 파일이 너무 큰 경우
대화 기록으로 인해 백업 파일이 커질 수 있습니다. 해결 방법:
# 핵심 설정만 백업, 대화 기록 제외
tar -czf backup.tar.gz \
~/.config/openclaw \
~/.openclaw/skills \
~/.openclaw/mcp \
--exclude='*.log' \
--exclude='conversations'
복구 후 채널 연결 불가
보통 환경 변수가 올바르게 복구되지 않아서 발생합니다. 확인:
# 주요 환경 변수 존재 여부 확인
echo $TELEGRAM_BOT_TOKEN
echo $OPENAI_API_KEY
비어 있으면 환경 변수를 다시 설정해야 합니다.
크로스 플랫폼 마이그레이션 (Linux → 다른 Linux 배포판)
OpenClaw의 데이터는 크로스 플랫폼 호환됩니다. Node.js 버전이 동일하다면 (22+), 백업 파일은 어떤 Linux 배포판에서든 복구할 수 있습니다.
요약
데이터 백업은 OpenClaw의 안정적인 운영을 보장하는 최후의 방어선입니다. 핵심 권장사항: 자동화 스크립트로 매일 백업하고, 최소 한 개의 원격지 백업을 유지하며, 정기적으로 복구 연습을 실시합니다. 설정 파일과 스킬 파일이 가장 중요한 백업 대상이며, 이들을 복구하는 데는 몇 분이면 충분합니다. 3-2-1 원칙을 기억하여, 어떤 예기치 않은 상황에서도 AI 어시스턴트를 빠르게 복구할 수 있도록 대비하십시오.