36 lines
1.2 KiB
Django/Jinja
36 lines
1.2 KiB
Django/Jinja
#!/bin/bash
|
|
|
|
set -eu -o pipefail
|
|
|
|
readonly POSTGRES_VER={{ postgres1c_version }}
|
|
readonly POSTGRES_COMPRESS={{ postgres1c_backup_compression }}
|
|
|
|
echo "Starting 1C backup at $(date +F'%Y-%m-%d %H:%M:%S')"
|
|
|
|
# db list array
|
|
echo "getting a list of database names via psql ..."
|
|
databases=($(/opt/pgpro/1c-${POSTGRES_VER}/bin/psql -t -A -c "SELECT datname FROM pg_database WHERE datname <> ALL ('{template0,template1,postgres}')"))
|
|
echo "database names: ${databases[@]}"
|
|
|
|
# get current seconds since shell invocation
|
|
start_time=$SECONDS
|
|
|
|
# iterate over the db list array
|
|
for db in "${databases[@]}"; do
|
|
start_one_time=$SECONDS
|
|
echo "${db} - backup started"
|
|
|
|
# local backup command (don't forget to sync to a remote server by borg or some other tool)
|
|
# -Fc: "custom format" https://www.postgresql.org/docs/current/app-pgdump.html
|
|
# -Z: compression
|
|
/opt/pgpro/1c-${POSTGRES_VER}/bin/pg_dump -d ${db} -Fc -Z ${POSTGRES_COMPRESS} -f /var/backups/postgres1c/backup_${db}.dump
|
|
|
|
# notify about the db dump completion
|
|
echo "${db} - backup done"
|
|
total_one_time=$(($SECONDS - start_one_time))
|
|
echo "${db} - total time: ${total_one_time} sec"
|
|
done
|
|
|
|
total_time=$(($SECONDS - start_time))
|
|
echo "job completed at $(date); total time elapsed: ${total_time} sec"
|