52 lines
1.8 KiB
Plaintext
52 lines
1.8 KiB
Plaintext
Вот надёжный и готовый к использованию шаблон скрипта для создания дампа PostgreSQL, с логированием, сжатием, ротацией старых бэкапов и поддержкой различных сценариев (локальная БД, удалённая, с паролем или через .pgpass).
|
||
|
||
Файл: postgresql-backup.sh
|
||
|
||
Как передать пароль безопасно?
|
||
|
||
Вариант 1 (рекомендуется): файл .pgpass
|
||
|
||
Создайте файл /root/.pgpass:
|
||
|
||
chmod 600 /root/.pgpass
|
||
echo "localhost:5432:your_database_name:postgres:your_password" >> /root/.pgpass
|
||
|
||
Формат строки:
|
||
|
||
hostname:port:database:username:password
|
||
|
||
|
||
|
||
Вариант 2: раскомментируйте PG_PASSWORD в скрипте
|
||
|
||
Менее безопасно: пароль виден в процессах (ps aux) и в файле.
|
||
|
||
Как использовать:
|
||
|
||
Сохраните как /root/postgresql-backup.sh
|
||
|
||
chmod +x /root/postgresql-backup.sh
|
||
|
||
Отредактируйте параметры:
|
||
|
||
PG_DB — имя вашей БД (например, gitea, grafana, kuma)
|
||
PG_USER, PG_HOST — если нужно
|
||
|
||
Добавьте в cron (ежедневно в 1:00):
|
||
|
||
0 1 * * * /root/postgresql-backup.sh
|
||
|
||
|
||
|
||
Логи будут в:
|
||
|
||
/root/backups/postgresql/backup.log
|
||
|
||
Если у вас несколько БД — запускайте скрипт несколько раз с разными PG_DB.
|
||
|
||
Для Gitea обычно БД называется gitea.
|
||
Для Uptime Kuma — по умолчанию используется SQLite, но если вы перешли на PostgreSQL — укажите её имя.
|
||
|
||
Дамп в формате .sql.gz легко восстановить:
|
||
|
||
gunzip -c backup.sql.gz | psql -U postgres -d mydb |