튜토리얼 카테고리 Skills 소개
ZH EN JA KO
보안 운영

OpenClaw 데이터 백업 및 복구 완전 가이드

· 21 분 소요

서문

데이터 백업은 운영에서 가장 중요하면서도 가장 간과되기 쉬운 부분입니다. 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 어시스턴트를 빠르게 복구할 수 있도록 대비하십시오.

OpenClaw는 무료 오픈소스 개인 AI 어시스턴트로, WhatsApp, Telegram, Discord 등 다양한 플랫폼을 지원합니다