From: Nicolas Boisselier Date: Thu, 21 Nov 2024 12:49:49 +0000 (+0000) Subject: etc/profile.d/pg.sh X-Git-Url: https://git.nbdom.net/?a=commitdiff_plain;h=75255fe165cf56909bdad65f3ba988c55b4e3177;p=nb.git etc/profile.d/pg.sh --- diff --git a/etc/profile.d/pg.sh b/etc/profile.d/pg.sh index 65907482..c2b07de4 100644 --- a/etc/profile.d/pg.sh +++ b/etc/profile.d/pg.sh @@ -63,3 +63,40 @@ pg_backups_dir() { su postgres -c 'vacuumdb -q -a -z' ) } + +pg_backup() { + local keep_days=7 + local dir=/var/backups/postgresql + local preff="$(date +'%F-%H%M')" + local usage="pg_backup [-dir PATH] [-days DAYS]" + + while [ $# -gt 0 ]; do + case "$1" in + -days) keep_days="$2"; shift ;; + -dir) dir="$2"; shift ;; + *) echo "$usage" 1>&2; return 1 ;; + esac + shift + done + + if [ ! -w "$dir" ] ; then + echo "ERR: can't write into $dir" + return 1 + fi + + cd / + su postgres -c 'psql -d template1 -c "select 1" >/dev/null 2>&1' || return 0 + [ -d "$dir" ] || mkdir -p "$dir" + if pg_dumpall --help |grep '\--oids' -q + then + su postgres -c 'pg_dumpall -c --oids' | bzip2 -9 -c > "$dir"/$preff-pg_dumpall.sql.bz2 + else + su postgres -c 'pg_dumpall -c' | bzip2 -9 -c > "$dir"$preff-/pg_dumpall.sql.bz2 + fi + su postgres -c 'vacuumdb -q -a -z' + + if [ -n "$keep_days" -a "$keep_days" -gt 0 ]; then + find $dir/ -type f -mtime +$keep_days -delete + fi + +}