42 lines
1.5 KiB
Bash
42 lines
1.5 KiB
Bash
#!/bin/bash
|
||
# Логический бэкап PostgreSQL (Immich) с VM 200.
|
||
# Запускать на хосте Proxmox под root. Требуется SSH без пароля: root@host → admin@192.168.1.200
|
||
# (ssh-copy-id или ключ в ~/.ssh).
|
||
#
|
||
# На VM 200 должен быть установлен скрипт /opt/immich/scripts/backup-db.sh (см. immich-pgdump-remote.sh).
|
||
# Результат: /mnt/backup/databases/vm200-immich/immich-db-YYYYMMDD-HHMM.sql.gz
|
||
#
|
||
set -e
|
||
|
||
VM_SSH="admin@192.168.1.200"
|
||
REMOTE_SCRIPT="/opt/immich/scripts/backup-db.sh"
|
||
BACKUP_DIR="/mnt/backup/databases/vm200-immich"
|
||
RETENTION_DAYS=14
|
||
|
||
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/immich-db-$DATE.sql.gz"
|
||
|
||
if ssh -o ConnectTimeout=10 -o StrictHostKeyChecking=accept-new "$VM_SSH" "test -x $REMOTE_SCRIPT"; then
|
||
ssh -o ConnectTimeout=30 "$VM_SSH" "sudo $REMOTE_SCRIPT" | gzip > "$OUTPUT"
|
||
else
|
||
echo "На VM 200 не найден скрипт $REMOTE_SCRIPT. Скопируйте туда scripts/immich-pgdump-remote.sh и сделайте исполняемым."
|
||
exit 1
|
||
fi
|
||
|
||
if [ -s "$OUTPUT" ]; then
|
||
echo "Создан: $OUTPUT ($(du -h "$OUTPUT" | cut -f1))"
|
||
else
|
||
echo "Ошибка: дамп пустой или не создан."
|
||
rm -f "$OUTPUT"
|
||
exit 1
|
||
fi
|
||
|
||
# Удалить дампы старше RETENTION_DAYS
|
||
find "$BACKUP_DIR" -name 'immich-db-*.sql.gz' -mtime +$RETENTION_DAYS -delete
|