2 # SYNTAX: $database_pattern -- $snapshot_eval
3 # DESCRIPTION: crée un instantané pour chaque base de données PostgreSQL $database donnée
4 # DESCRIPTION: dans ~backup/snapshot/postgresql/"$database",
5 # DESCRIPTION: puis évalue $snapshot_eval,
6 # DESCRIPTION: puis efface l'instantané.
9 test "$(id -u)" = "$(id -u backup)"
11 database_pattern
=$1; shift
12 test ! "${1-}" = -- ||
shift
13 test ! $# = 0 ||
set -- :
15 install -d -m 770 -o backup
-g backup \
16 ~backup
/snapshot
/postgresql
19 while IFS
=' \r' read -r database
21 test "${database:+set}"
22 if test -e ~backup
/snapshot
/postgresql
/$database
25 ERROR: soit une sauvegarde est déjà en cours, soit une précédente a échoué.
29 install -d -m 770 -o backup
-g backup \
30 ~backup
/snapshot
/postgresql
/"$database"
31 psql
--quiet "$database" -c "VACUUM (ANALYSE);"
32 pg_dump
--blobs --compress 0 --format custom
${TRACE:+--verbose} \
33 --file ~backup
/snapshot
/postgresql
/"$database"/dump.sql \
37 ~backup
/snapshot
/postgresql
/"$database"
41 ERROR: $0 "$database" "$@"
43 if test "${database:+set}"
44 then rm -rf ~backup
/snapshot
/postgresql
/"$database"
48 $(psql --quiet --tuples-only postgres <<-EOF ||
exit 1
51 FROM pg_catalog.pg_database
53 AND datname LIKE '$database_pattern';