X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=local%2Fbackup%2Fpostgresql-snapshot;h=bbacc62129c81d1c2df31f6b5066a05cd02b8275;hb=d85c16565d00de9646c03944f855e4cc6be368eb;hp=da34ee005f7038a1c9d757665fea499bcf011bdd;hpb=f5e12fec2c7ef8d743e2d3e32c3bbe37b40c7a73;p=lhc%2Fateliers.git diff --git a/local/backup/postgresql-snapshot b/local/backup/postgresql-snapshot index da34ee0..bbacc62 100755 --- a/local/backup/postgresql-snapshot +++ b/local/backup/postgresql-snapshot @@ -15,32 +15,35 @@ test ! $# = 0 || set -- : install -d -m 770 -o backup -g backup \ ~backup/snapshot/postgresql -snapshot () { - local database="$1" && shift && - test ! -e ~backup/snapshot/postgresql/"$database" && - # NOTE: soit une sauvegarde est déjà en cours, - # soit une précédente a échoué. - install -d -m 770 -o backup -g backup \ - ~backup/snapshot/postgresql/"$database" && - psql --quiet "$database" -c "VACUUM (ANALYSE);" && - pg_dump --blobs --compress 0 --format custom ${TRACE:+--verbose} \ - --file ~backup/snapshot/postgresql/"$database"/dump.sql \ - "$database" && - eval "$@" && - rm -rf \ - ~backup/snapshot/postgresql/"$database" && - : - } - -exit=0 +errno=0 while IFS=' \r' read -r database - do if ! snapshot "$database" "$@" + do { + test "${database:+set}" + if test -e ~backup/snapshot/postgresql/$database then - exit=1 cat >&2 <<-EOF - ERROR: snapshot "$database" "$@" + ERROR: soit une sauvegarde est déjà en cours, soit une précédente a échoué. EOF + false fi + install -d -m 770 -o backup -g backup \ + ~backup/snapshot/postgresql/"$database" + psql --quiet "$database" -c "VACUUM (ANALYSE);" + pg_dump --blobs --compress 0 --format custom ${TRACE:+--verbose} \ + --file ~backup/snapshot/postgresql/"$database"/dump.sql \ + "$database" + eval "$@" + rm -rf \ + ~backup/snapshot/postgresql/"$database" + } || { + errno=$? + cat >&2 <<-EOF + ERROR: $0 "$database" "$@" + EOF + if test "${database:+set}" + then rm -rf ~backup/snapshot/postgresql/"$database" + fi + } done <<-EOF $(psql --quiet --tuples-only postgres <<-EOF || exit 1 \set ON_ERROR_STOP on @@ -51,4 +54,4 @@ while IFS=' \r' read -r database EOF ) EOF -exit $exit +exit $errno