#!/bin/bash # db-backup.sh - Backup selectivo das tabelas cr_* # Author: Descomplicar® # # Uso: ./db-backup.sh [--compress] [--tables=X,Y] set -e # Directório de backups (regra CLAUDE.md) BACKUP_BASE="/media/ealmeida/Dados/Backups" BACKUP_DIR="$BACKUP_BASE/claude-infrastructure/cr_backup_$(date +%Y%m%d_%H%M%S)" COMPRESS=0 TABLES="" # Parse argumentos while [[ $# -gt 0 ]]; do case $1 in --compress) COMPRESS=1 shift ;; --tables=*) TABLES="${1#*=}" shift ;; *) shift ;; esac done # Criar directório de backup mkdir -p "$BACKUP_DIR/schema" mkdir -p "$BACKUP_DIR/data" # Lista de tabelas cr_* (se não especificadas) if [[ -z "$TABLES" ]]; then TABLES="cr_agents,cr_skills,cr_mcps,cr_lsps,cr_sdks,cr_mcp_tools,cr_plugins,cr_hooks" TABLES="$TABLES,cr_agent_mcps,cr_agent_lsps,cr_agent_skills,cr_skill_mcps" TABLES="$TABLES,cr_sdk_agents,cr_sdk_skills,cr_sdk_mcps,cr_agent_collaborations" TABLES="$TABLES,cr_agent_usage,cr_skill_usage,cr_mcp_tool_usage,cr_lsp_usage" TABLES="$TABLES,cr_decision_trees,cr_recommendations,cr_component_issues,cr_reflections" TABLES="$TABLES,cr_migrations,cr_maintenance_log" fi # Criar manifest.json cat > "$BACKUP_DIR/manifest.json" << EOF { "backup_id": "$(basename $BACKUP_DIR)", "created_at": "$(date -Iseconds)", "created_by": "descomplicar-meta-plugin", "version": "1.5.1", "tables": "$(echo $TABLES | tr ',' '\n' | wc -l)", "compressed": $COMPRESS } EOF echo "╔══════════════════════════════════════════════════════════════════════╗" echo "║ DB BACKUP ║" echo "╠══════════════════════════════════════════════════════════════════════╣" echo "║ Backup ID: $(basename $BACKUP_DIR)" echo "║ Output: $BACKUP_DIR/" echo "╠══════════════════════════════════════════════════════════════════════╣" echo "║ NOTA: Este script gera estrutura de backup. ║" echo "║ Para dump real, usar desk-crm-v3 MCP ou mysqldump. ║" echo "╠══════════════════════════════════════════════════════════════════════╣" # Gerar SQL para cada tabela (esqueleto - dump real via MCP) IFS=',' read -ra TABLE_ARRAY <<< "$TABLES" for table in "${TABLE_ARRAY[@]}"; do echo "-- Backup: $table" > "$BACKUP_DIR/schema/$table.sql" echo "-- Dump via: mysqldump perfex_crm $table > $BACKUP_DIR/data/$table.sql" >> "$BACKUP_DIR/schema/$table.sql" echo "║ $table ✓" done if [[ $COMPRESS -eq 1 ]]; then echo "╠══════════════════════════════════════════════════════════════════════╣" echo "║ Compressing..." cd "$BACKUP_BASE/claude-infrastructure" tar -czf "$(basename $BACKUP_DIR).tar.gz" "$(basename $BACKUP_DIR)" rm -rf "$BACKUP_DIR" echo "║ Compressed: $(basename $BACKUP_DIR).tar.gz" fi echo "╠══════════════════════════════════════════════════════════════════════╣" echo "║ Status: ✓ SUCCESS ║" echo "╚══════════════════════════════════════════════════════════════════════╝" exit 0