Files
homelab-docs/scripts/backup-ct101-pgdump.sh

34 lines
1.1 KiB
Bash

#!/bin/bash
# Логический бэкап PostgreSQL (Nextcloud) из контейнера 101.
# Запускать на хосте Proxmox под root. Использует pct exec (SSH не нужен).
# Результат: /mnt/backup/databases/ct101-nextcloud/nextcloud-db-YYYYMMDD-HHMM.sql.gz
set -e
CT_ID=101
BACKUP_DIR="/mnt/backup/databases/ct101-nextcloud"
RETENTION_DAYS=14
# Имя контейнера БД в compose-проекте nextcloud (при смене имени в compose — поправить)
PG_CONTAINER="nextcloud-db-1"
if [ "$(id -u)" -ne 0 ]; then
echo "Запускайте под root."
exit 1
fi
mkdir -p "$BACKUP_DIR"
DATE=$(date +%Y%m%d-%H%M)
OUTPUT="$BACKUP_DIR/nextcloud-db-$DATE.sql.gz"
pct exec $CT_ID -- docker exec "$PG_CONTAINER" pg_dump -U nextcloud nextcloud 2>/dev/null | gzip > "$OUTPUT"
if [ -s "$OUTPUT" ]; then
echo "Создан: $OUTPUT ($(du -h "$OUTPUT" | cut -f1))"
else
echo "Ошибка: дамп пустой или контейнер недоступен."
rm -f "$OUTPUT"
exit 1
fi
find "$BACKUP_DIR" -name 'nextcloud-db-*.sql.gz' -mtime +$RETENTION_DAYS -delete