Как настроить автоматическое резервное копирование базы данных PostgreSQL через pg_dump с загрузкой в облако Google Drive?

Автоматическое резервное копирование базы данных PostgreSQL с загрузкой в Google Drive — надёжный способ защиты данных. Ниже представлена пошаговая инструкция.

## 1. Установка необходимых инструментов

Убедитесь, что на сервере установлены:
— `postgresql-client` (содержит `pg_dump`)
— Python 3 и pip
— `rclone` или `gdrive` для работы с Google Drive

Рекомендуется использовать **rclone** — универсальный инструмент для работы с облачными хранилищами.

bash
sudo apt update && sudo apt install postgresql-client rclone -y

## 2. Настройка rclone для Google Drive

Запустите интерактивную настройку:
bash
rclone config

Выберите `n` (новый remote), укажите имя (например, `gdrive`), выберите тип `drive` (Google Drive). Следуйте инструкциям для авторизации через браузер. После завершения у вас будет настроенный remote `gdrive:`.

## 3. Создание скрипта резервного копирования

Создайте файл `/usr/local/bin/pg_backup.sh`:

bash
#!/bin/bash

DB_NAME=»your_database»
DB_USER=»postgres»
BACKUP_DIR=»/tmp/pg_backups»
REMOTE_DIR=»gdrive:PostgreSQL_Backups»
DATE=$(date +%Y-%m-%d_%H-%M-%S)
FILE=»$BACKUP_DIR/${DB_NAME}_$DATE.sql.gz»

mkdir -p $BACKUP_DIR

# Создание дампа с компрессией
PGPASSWORD=»your_password» pg_dump -U $DB_USER -h localhost $DB_NAME | gzip > $FILE

# Загрузка в Google Drive
rclone copy $FILE $REMOTE_DIR —log-file=/var/log/pg_backup.log

# Удаление локального файла
rm -f $FILE

# Удаление старых бэкапов в облаке (старше 30 дней)
rclone delete $REMOTE_DIR —min-age 30d

echo «Backup $FILE completed and uploaded to Google Drive.»

Сделайте скрипт исполняемым:
bash
chmod +x /usr/local/bin/pg_backup.sh

## 4. Безопасное хранение пароля

Вместо хранения пароля в скрипте используйте файл `.pgpass`:
bash
echo «localhost:5432:your_database:postgres:your_password» >> ~/.pgpass
chmod 600 ~/.pgpass

После этого уберите `PGPASSWORD=…` из скрипта.

## 5. Настройка автозапуска через cron

Откройте crontab:
bash
crontab -e

Добавьте строку для ежедневного запуска в 2:00 ночи:

0 2 * * * /usr/local/bin/pg_backup.sh >> /var/log/pg_backup_cron.log 2>&1

## 6. Проверка работоспособности

Запустите скрипт вручную и убедитесь, что файл появился в Google Drive:
bash
/usr/local/bin/pg_backup.sh
rclone ls gdrive:PostgreSQL_Backups

## Советы по безопасности
— Шифруйте бэкапы перед загрузкой с помощью `gpg`
— Настройте уведомления об ошибках на email через `mail` или Telegram-бота
— Периодически проверяйте восстановление из бэкапа командой `pg_restore`

Такой подход обеспечивает надёжное автоматическое резервное копирование с минимальными затратами ресурсов.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.