Бэкап баз данных PostgreSQL под Linux.
Бэкап баз данных PostgreSQL под Linux.
#!/bin/sh
HOST="127.0.0.1"
PORT="5432"
USERNAME="SA"
export PGPASSWORD="Stack450194"
# каталог бекапа
BACKUP=/backup
# исключаем из архивации некоторые таблицы
EXCL_TABLE="--exclude-table-data=\"stack\".\"Журнал запросов\" \
--exclude-table-data=\"stack\".\"Асинхронные очереди\" \
--exclude-table-data=\"stack\".\"Асинхронные исполнители\" \
--exclude-table-data=\"stack\".\"Асинхронные работы\" \
--exclude-table-data=\"stack\".\"Хранилище сессии\" \
--exclude-table-data=\"stack\".\"Опубликованные файлы\" \
--exclude-table-data=\"stack\".\"Потоки очистки\" \
--exclude-table-data=\"stack\".\"Ошибки очистки\" \
--exclude-table=\"stack\".#* "
# если не воскресенье, иключаем ещё несколько таблиц
if [ `date +%u` != 7 ]; then
EXCL_TABLE="$EXCL_TABLE""--exclude-table-data=\"stack\".\"Журнал изменений\" \
--exclude-table-data=\"stack\".\"Журнал изменений АДС\" \
--exclude-table-data=\"stack\".\"Журнал перерасчеты\" \
--exclude-table-data=\"stack\".\"Журналы\" \
--exclude-table-data=\"stack\".\"Журнал обмена\" \
--exclude-table-data=\"stack\".\"Файлы\""
fi
# Указать список баз через пробел
#for dbase in base1 base2
for dbase in "demo"
do
COMMAND="`which pg_dump` --file "$BACKUP"/"$dbase" --host "$HOST" --port "$PORT" --username "$USERNAME" --no-password --format=d --jobs=4 --section=pre-data --section=data --section=post-data "$EXCL_TABLE" "$dbase""
eval $COMMAND
tar --directory=$BACKUP -cf "$BACKUP"/"$dbase"_$(date +%Y.%m.%d).tar "$dbase"
rm -R "$BACKUP"/"$dbase"
done