38 lines
968 B
Bash
38 lines
968 B
Bash
#!/usr/bin/env bash
|
|
# Config Backup Script - 설정 변경 시 자동 백업
|
|
# Usage: config-backup.sh [label]
|
|
|
|
set -euo pipefail
|
|
|
|
CONFIG_FILE="$HOME/.openclaw/openclaw.json"
|
|
BACKUP_DIR="$HOME/openclaw/config-history"
|
|
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
|
|
LABEL="${1:-auto}"
|
|
|
|
# Backup directory 없으면 생성
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
# Config 파일 존재 확인
|
|
if [ ! -f "$CONFIG_FILE" ]; then
|
|
echo "❌ Config file not found: $CONFIG_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
# Backup 생성
|
|
BACKUP_FILE="$BACKUP_DIR/${TIMESTAMP}-${LABEL}.json"
|
|
cp "$CONFIG_FILE" "$BACKUP_FILE"
|
|
|
|
# 파일 크기 확인
|
|
SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
|
|
echo "✅ Config backup created: $BACKUP_FILE ($SIZE)"
|
|
|
|
# 30일 이상 된 백업 자동 삭제
|
|
find "$BACKUP_DIR" -name "*.json" -type f -mtime +30 -delete 2>/dev/null || true
|
|
|
|
# 최근 5개 백업 목록
|
|
echo ""
|
|
echo "📋 Recent backups:"
|
|
ls -lt "$BACKUP_DIR"/*.json 2>/dev/null | head -5 | awk '{print " - " $9 " (" $6" "$7" "$8")"}'
|
|
|
|
exit 0
|