#!/bin/bash # Скрипт для создания бэкапов БД PROD и DEV set -e BACKUP_DIR="./backups" TIMESTAMP=$(date +%Y%m%d_%H%M%S) echo "==========================================" echo "Создание бэкапов БД (PROD и DEV)" echo "==========================================" echo "" # Создать директорию для бэкапов mkdir -p "$BACKUP_DIR" # Функция для создания бэкапа backup_db() { local CONTAINER_NAME=$1 local DB_USER=$2 local DB_NAME=$3 local BACKUP_NAME=$4 echo "Создание бэкапа: $BACKUP_NAME" # Проверить, что контейнер запущен if ! docker ps | grep -q "$CONTAINER_NAME"; then echo "⚠️ Контейнер $CONTAINER_NAME не запущен, пропускаем..." return 1 fi BACKUP_FILE="$BACKUP_DIR/${BACKUP_NAME}_${TIMESTAMP}.sql.gz" # Создать бэкап if docker exec "$CONTAINER_NAME" pg_dumpall -U "$DB_USER" -c 2>/dev/null | gzip > "$BACKUP_FILE"; then BACKUP_SIZE=$(du -h "$BACKUP_FILE" | cut -f1) echo " ✓ Бэкап создан: $BACKUP_FILE ($BACKUP_SIZE)" return 0 else echo " ✗ Ошибка создания бэкапа для $BACKUP_NAME" return 1 fi } # Бэкап PROD БД echo "--- PROD БД ---" backup_db "platform_prod_db" "platform_prod_user" "platform_prod_db" "platform_prod_db" echo "" # Бэкап DEV БД echo "--- DEV БД ---" backup_db "platform_dev_db" "platform_dev_user" "platform_dev_db" "platform_dev_db" echo "" echo "==========================================" echo "Бэкапы сохранены в: $BACKUP_DIR" echo "==========================================" echo "" echo "Для восстановления PROD БД:" echo " gunzip < $BACKUP_DIR/platform_prod_db_*.sql.gz | docker exec -i platform_prod_db psql -U platform_prod_user -d postgres" echo "" echo "Для восстановления DEV БД:" echo " gunzip < $BACKUP_DIR/platform_dev_db_*.sql.gz | docker exec -i platform_dev_db psql -U platform_dev_user -d postgres"