openclaw_weekly_backup.sh 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #!/bin/bash
  2. # OpenClaw 每周自动备份脚本
  3. # 运行时间: 每周日凌晨 2:00
  4. BACKUP_DIR="/root/openclaw-backups"
  5. DATE=$(date +%Y%m%d-%H%M%S)
  6. BACKUP_FILE="$BACKUP_DIR/openclaw-weekly-$DATE.tar.gz"
  7. # 创建备份目录
  8. mkdir -p "$BACKUP_DIR"
  9. # 执行备份 - 只备份代码和配置,排除数据文件
  10. # 排除: CSV数据、PNG图表、HTML报告、__pycache__、.pyc、.log、.tar.gz等
  11. tar -czf "$BACKUP_FILE" \
  12. -C /root/.openclaw \
  13. --exclude='workspace/**/__pycache__' \
  14. --exclude='workspace/**/*.pyc' \
  15. --exclude='workspace/**/*.csv' \
  16. --exclude='workspace/**/*.png' \
  17. --exclude='workspace/**/*.jpg' \
  18. --exclude='workspace/**/*.jpeg' \
  19. --exclude='workspace/**/*.html' \
  20. --exclude='workspace/**/*.log' \
  21. --exclude='workspace/**/*.tar.gz' \
  22. --exclude='workspace/**/backtest_result*' \
  23. --exclude='workspace/**/optimization_results*' \
  24. --exclude='workspace/**/backtest_results*' \
  25. --exclude='workspace/**/best_config*' \
  26. --exclude='workspace/**/last_*_days_report*' \
  27. --exclude='workspace/**/param_optimization*' \
  28. --exclude='workspace/**/quant_report*' \
  29. --exclude='openclaw-backup-*.tar.gz' \
  30. workspace/ \
  31. openclaw.json \
  32. openclaw.json.bak \
  33. openclaw.json.bak.1 \
  34. openclaw.json.bak.2 \
  35. openclaw.json.bak.3 \
  36. openclaw.json.bak.4 2>/dev/null
  37. # 检查备份是否成功
  38. if [ $? -eq 0 ]; then
  39. echo "[$(date '+%Y-%m-%d %H:%M:%S')] ✓ OpenClaw 备份成功: $BACKUP_FILE"
  40. echo " 文件大小: $(du -h $BACKUP_FILE | cut -f1)"
  41. # 只保留最近4个备份(约1个月)
  42. ls -t $BACKUP_DIR/openclaw-weekly-*.tar.gz | tail -n +5 | xargs -r rm -f
  43. echo " 已清理旧备份,保留最近4个"
  44. else
  45. echo "[$(date '+%Y-%m-%d %H:%M:%S')] ✗ OpenClaw 备份失败"
  46. exit 1
  47. fi