backup.sh 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/bin/bash
  2. # Cat-Fly 自动备份脚本
  3. # 每天凌晨4点执行,备份到 Git 仓库
  4. BACKUP_DIR="/tmp/cat-fly-backup-$(date +%Y%m%d)"
  5. SOURCE_DIR="/root/.openclaw/workspace/cat-fly"
  6. REPO_URL="http://openclaw:asdasd9981@code.erwin.wang/openclaw/openclaw-backup.git"
  7. LOG_FILE="/var/log/catfly-backup.log"
  8. # 日志函数
  9. log() {
  10. echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
  11. }
  12. log "开始备份..."
  13. # 创建临时目录
  14. rm -rf "$BACKUP_DIR"
  15. mkdir -p "$BACKUP_DIR"
  16. # 复制核心文件
  17. cp "$SOURCE_DIR/auto_report.py" "$BACKUP_DIR/"
  18. cp "$SOURCE_DIR/cyb50_30min_dual_direction.py" "$BACKUP_DIR/"
  19. cp "$SOURCE_DIR/config.json" "$BACKUP_DIR/"
  20. cp "$SOURCE_DIR/cron_jobs.json" "$BACKUP_DIR/"
  21. cp "$SOURCE_DIR/README.md" "$BACKUP_DIR/"
  22. # 添加备份信息
  23. echo "Backup Date: $(date '+%Y-%m-%d %H:%M:%S')" > "$BACKUP_DIR/BACKUP_INFO.txt"
  24. echo "Source: $SOURCE_DIR" >> "$BACKUP_DIR/BACKUP_INFO.txt"
  25. # 克隆仓库并更新
  26. cd /tmp
  27. rm -rf openclaw-backup-temp
  28. if ! git clone "$REPO_URL" openclaw-backup-temp 2>/dev/null; then
  29. log "错误: 无法克隆仓库"
  30. exit 1
  31. fi
  32. # 复制新文件到仓库
  33. cd openclaw-backup-temp
  34. rm -rf cat-fly/*
  35. cp -r "$BACKUP_DIR"/* cat-fly/ 2>/dev/null || cp "$BACKUP_DIR"/* cat-fly/ 2>/dev/null
  36. # Git 配置
  37. git config user.email "backup@openclaw.local"
  38. git config user.name "Auto Backup"
  39. # 提交并推送
  40. git add -A
  41. if git diff --cached --quiet; then
  42. log "没有变更,跳过提交"
  43. else
  44. git commit -m "Auto backup $(date '+%Y-%m-%d %H:%M:%S')"
  45. if git push origin master; then
  46. log "备份成功推送到仓库"
  47. else
  48. log "错误: 推送失败"
  49. exit 1
  50. fi
  51. fi
  52. # 清理
  53. rm -rf "$BACKUP_DIR"
  54. rm -rf /tmp/openclaw-backup-temp
  55. log "备份完成"