]> git.nbdom.net Git - nb.git/commitdiff
etc/profile.d/pg.sh
authorNicolas Boisselier <nicolas.boisselier@gmail.com>
Thu, 21 Nov 2024 12:49:49 +0000 (12:49 +0000)
committerNicolas Boisselier <nicolas.boisselier@gmail.com>
Thu, 21 Nov 2024 12:49:49 +0000 (12:49 +0000)
etc/profile.d/pg.sh

index 659074824755024ed3014620b93e1499c1343066..c2b07de44bae0084d66a2747f9ae2fde20632266 100644 (file)
@@ -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
+
+}