/home/suroeste/public_html/payments.transportessuroeste.com/scripts
NameSizeModeActions
scripts/-0755rm
backup.sh26380644editdlrm
deploy.sh41270644editdlrm
generate_report.py308390644editdlrm
Edit: /home/suroeste/public_html/payments.transportessuroeste.com/scripts/backup.sh (2638B)
#!/usr/bin/env bash # ============================================================================ # TRANSPORTES SUROESTE - Database Backup Script # ============================================================================ # Usage: ./scripts/backup.sh # Cron: 0 2 * * * /path/to/project/scripts/backup.sh >> /var/log/ts-backup.log 2>&1 # ============================================================================ set -euo pipefail # Configuration SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" BACKUP_DIR="${PROJECT_DIR}/backups" DATE=$(date +%Y%m%d_%H%M%S) DB_NAME="${DB_NAME:-transportes_suroeste_payments}" RETENTION_DAYS=${BACKUP_RETENTION_DAYS:-30} CONTAINER_NAME="ts-mysql" # Colors (only for interactive terminal) if [ -t 1 ]; then GREEN='\033[0;32m' YELLOW='\033[0;33m' RED='\033[0;31m' RESET='\033[0m' else GREEN='' YELLOW='' RED='' RESET='' fi log() { echo -e "[$(date '+%Y-%m-%d %H:%M:%S')] $1"; } # Load environment variables if [ -f "${PROJECT_DIR}/.env" ]; then set -a source "${PROJECT_DIR}/.env" set +a fi # Create backup directory mkdir -p "${BACKUP_DIR}" # Check if MySQL container is running if ! docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then log "${RED}ERROR: MySQL container '${CONTAINER_NAME}' is not running${RESET}" exit 1 fi BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}_${DATE}.sql.gz" log "${YELLOW}Starting backup of '${DB_NAME}'...${RESET}" # Create backup using mysqldump via Docker docker exec "${CONTAINER_NAME}" \ mysqldump \ --user=root \ --password="${MYSQL_ROOT_PASSWORD}" \ --single-transaction \ --routines \ --triggers \ --events \ --add-drop-table \ --set-gtid-purged=OFF \ "${DB_NAME}" 2>/dev/null | gzip > "${BACKUP_FILE}" # Verify backup if [ -s "${BACKUP_FILE}" ]; then BACKUP_SIZE=$(du -h "${BACKUP_FILE}" | cut -f1) log "${GREEN}Backup created: ${BACKUP_FILE} (${BACKUP_SIZE})${RESET}" else log "${RED}ERROR: Backup file is empty${RESET}" rm -f "${BACKUP_FILE}" exit 1 fi # Cleanup old backups DELETED=$(find "${BACKUP_DIR}" -name "*.sql.gz" -mtime +${RETENTION_DAYS} -delete -print | wc -l) if [ "${DELETED}" -gt 0 ]; then log "${YELLOW}Cleaned ${DELETED} backups older than ${RETENTION_DAYS} days${RESET}" fi # Summary TOTAL_BACKUPS=$(find "${BACKUP_DIR}" -name "*.sql.gz" | wc -l) TOTAL_SIZE=$(du -sh "${BACKUP_DIR}" | cut -f1) log "${GREEN}Backup complete. Total: ${TOTAL_BACKUPS} backups (${TOTAL_SIZE})${RESET}"