{{description>Скрипт для архивирования всех баз PostgreSQL на Linux}}
====== Скрипт архивирования всех баз postgresql на linux ======
[[ http://wiki.mihanik.net/doku.php?id=субд:postgresql:скрипт_архивирования_всех_баз_postgresql_на_linux&do=export_pdf | Экспорт в PDF ]] ~~ODT~~
Дата создания: 2024/05/12 08:27 (C) mihanik
===== Дано =====
Операционная система Linux с установленным PostgreSQL. В СУБД создано несколько баз.
===== Надо =====
Создать архивную копию каждой базы. Бекап каждой базы должен храниться в отдельном архивном файле.
Во время архивации старые архивные копии должны перезаписываться.
===== Решение =====
#!/bin/bash
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
BackupDir=/home/db_repository
PGPASSWORD=654321
# Создаём архивы баз PostgreSQL
for dbname in `echo "SELECT datname FROM pg_database;" | psql -U postgres | tail -n +3 | head -n -2 | egrep -v 'template0|template1|postgres'`; do
# Удалим старый файл с архивом базы
rm -f $BackupDir/$dbname.sql.gz
echo Устаревший архив базы $dbname удалён.
# Создаём архивную копию базы.
pg_dump -U postgres $dbname | gzip > $BackupDir/$dbname.sql.gz
echo Архив базы $dbname создан.
done;
unset PGPASSWORD
Здесь:
* **BackupDir** - каталог где будут храниться архивные копии
* **PGPASSWORD** - пароль пользователя postgres (значение "654321" установлено в качестве примера).
Ссылка на файл со скриптом: {{ :субд:postgresql:pg_backup.sh |}}
===== Источники =====
* https://www.dmosk.ru/miniinstruktions.php?mini=postgresql-dump&ysclid=lw34p4o9w280894748
[[#top|⇑ Наверх ⇑]]