#!/bin/bash # Конфигурация DB_NAME="CCALM" DB_HOST="127.0.0.1" DB_USER="postgres" BACKUP_DIR="/opt/backups/data" TIMESTAMP=$(date +%Y%m%d_%H%M) BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}_${TIMESTAMP}.backup" # Проверка существования директории для бэкапов if [ ! -d "$BACKUP_DIR" ]; then echo "Ошибка: Директория $BACKUP_DIR не существует. Создаю..." mkdir -p "$BACKUP_DIR" if [ $? -ne 0 ]; then echo "Ошибка: Не удалось создать директорию $BACKUP_DIR" exit 1 fi fi # Установка прав для пользователя webdav chown rclone:rclone "$BACKUP_DIR" chmod 755 "$BACKUP_DIR" # Экспорт пароля (если не используется .pgpass) # Замените 'your_password' на реальный пароль или настройте .pgpass export PGPASSWORD='309A86FF65A78FB428F4E38DFE35F730' # Выполнение pg_dump echo "Создание резервной копии базы данных $DB_NAME в $BACKUP_FILE..." pg_dump "$DB_NAME" \ --host="$DB_HOST" \ --username="$DB_USER" \ --format=custom \ --file="$BACKUP_FILE" # Проверка успешности выполнения if [ $? -eq 0 ]; then echo "Резервная копия успешно создана: $BACKUP_FILE" # Установка прав для пользователя webdav chown webdav:webdav "$BACKUP_FILE" chmod 644 "$BACKUP_FILE" else echo "Ошибка: Не удалось создать резервную копию" exit 1 fi # Очистка старых бэкапов (например, старше 7 дней) find "$BACKUP_DIR" -name "${DB_NAME}_*.backup" -mtime +7 -delete echo "Старые бэкапы (старше 7 дней) удалены" # Перемещаю на другой сервер rclone move /opt/backups/data mywebdav:/backups --progress --no-check-certificate