Опубликовано 17 ноября 2024 г. 19:25 by Xadmin просмотров: 89

Для управления количеством бэкапов, чтобы старые удалялись, можно добавить проверку на количество или объем бэкапов. Ниже пример скрипта с ограничением количества бэкапов (например, оставляем только 10 самых новых):

#!/bin/bash

# Параметры подключения к базе данных
DB_NAME="default_db"
DB_USER="default_user"
DB_PASSWORD="~Super_-P@as$word_"
DB_HOST="127.0.0.1"
DB_PORT="5432"

# Директория для сохранения бэкапов
BACKUP_DIR="/home/www/backup"
mkdir -p "$BACKUP_DIR"

# Создаем имя файла с датой и временем
BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_backup_$(date +%Y-%m-%d_%H-%M-%S).sql"

# Экспортируем пароль для использования с pg_dump
export PGPASSWORD="$DB_PASSWORD"

# Создаем бэкап
pg_dump -U "$DB_USER" -h "$DB_HOST" -p "$DB_PORT" -d "$DB_NAME" -F c -b -v -f "$BACKUP_FILE"

# Очищаем переменную с паролем
unset PGPASSWORD

# Лимит на количество бэкапов (например, оставляем только 10)
BACKUP_LIMIT=10

# Удаление старых бэкапов, если их больше лимита
BACKUP_COUNT=$(ls -1 "$BACKUP_DIR"/*.sql 2>/dev/null | wc -l)
if [ "$BACKUP_COUNT" -gt "$BACKUP_LIMIT" ]; then
  ls -1t "$BACKUP_DIR"/*.sql | tail -n +$((BACKUP_LIMIT + 1)) | xargs -d '\n' rm -f
fi

echo "Бэкап завершен. Лишние бэкапы удалены, если их больше $BACKUP_LIMIT."