-
Notifications
You must be signed in to change notification settings - Fork 144
/
db_dump.sh
32 lines (25 loc) · 1.39 KB
/
db_dump.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/bash
# https://habr.com/ru/company/ruvds/blog/325522/ - Bash documentation
# https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
# set -e - прекращает выполнение скрипта, если команда завершилась ошибкой
# set -u - прекращает выполнение скрипта, если встретилась несуществующая переменная
# set -x - выводит выполняемые команды в stdout перед выполнением (только для отладки, а то замусоривает журнал!)
# set -o pipefail - прекращает выполнение скрипта, даже если одна из частей пайпа завершилась ошибкой
set -euo pipefail
SCRIPT_FILE=$(readlink -f "$0")
SCRIPT_DIR=$(dirname "$SCRIPT_FILE")
# Check syntax this file
bash -n "${SCRIPT_FILE}" || exit
# если есть файл ~/.pgpass, то можно просто ввести Enter
read -s -r -p "Enter password for user postgres: " PGPASSWORD
echo
export PGPASSWORD
ARCHIVE_DIR=/mnt/backup_db/tmp
for dbname in my_db1 my_db2
do
time ( \
pg_dump --verbose --username=postgres --host=localhost --dbname=${dbname} \
| zstd --verbose --adapt -f -q -o ${ARCHIVE_DIR}/${dbname}.sql.zst \
)
done
# zstd -l ${ARCHIVE_DIR}/*.sql.zst