From 344f65c397f046293ed2e5aa2b9dcd49337bdd71 Mon Sep 17 00:00:00 2001 From: Julien Moutinho Date: Tue, 24 Sep 2013 13:44:16 +0200 Subject: [PATCH] =?utf8?q?Correction=20:=20r=C3=A9silience=20des=20sauvega?= =?utf8?q?rdes=20MySQL=20et=20PostgreSQL.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- local/backup/mysql-snapshot | 41 ++++++++++++++++++-------------- local/backup/postgresql-snapshot | 33 ++++++++++++++----------- 2 files changed, 42 insertions(+), 32 deletions(-) diff --git a/local/backup/mysql-snapshot b/local/backup/mysql-snapshot index 56e5b14..24a07f3 100755 --- a/local/backup/mysql-snapshot +++ b/local/backup/mysql-snapshot @@ -15,22 +15,17 @@ test ! $# = 0 || set -- : install -d -m 770 -o backup -g backup \ ~backup/snapshot/mysql -trap_exit () { - errno=$? - test $errno = 0 || - cat >&2 <<-EOF - ERROR: $0 "$database" "$@" - EOF - #return $errno - } -trap trap_exit EXIT - +errno=0 while IFS='' read -r database - do + do { test "${database:+set}" - test ! -e ~backup/snapshot/mysql/$database - # NOTE: soit une sauvegarde est déjà en cours, - # soit une précédente a échoué. + if test -e ~backup/snapshot/mysql/$database + then + cat >&2 <<-EOF + ERROR: soit une sauvegarde est déjà en cours, soit une précédente a échoué. + EOF + false + fi can_hotcopy=yes while IFS=' ' read -r table engine do @@ -40,10 +35,10 @@ while IFS='' read -r database esac done <<-EOF $(mysql -u backup --batch --skip-column-names <<-EOF - SELECT table_name,engine - FROM information_schema.tables - WHERE table_schema = '$database'; - EOF + SELECT table_name,engine + FROM information_schema.tables + WHERE table_schema = '$database'; + EOF ) EOF case $can_hotcopy in @@ -67,6 +62,15 @@ while IFS='' read -r database eval "$@" rm -rf \ ~backup/snapshot/mysql/"$database" + } || { + errno=$? + cat >&2 <<-EOF + ERROR: $0 "$database" "$@" + EOF + if test "${database:+set}" + then rm -rf ~backup/snapshot/mysql/"$database" + fi + } done <<-EOF $(mysql -u backup --batch --skip-column-names <<-EOF SELECT schema_name @@ -76,3 +80,4 @@ while IFS='' read -r database EOF ) EOF +exit $errno diff --git a/local/backup/postgresql-snapshot b/local/backup/postgresql-snapshot index a9b3348..bbacc62 100755 --- a/local/backup/postgresql-snapshot +++ b/local/backup/postgresql-snapshot @@ -15,22 +15,17 @@ test ! $# = 0 || set -- : install -d -m 770 -o backup -g backup \ ~backup/snapshot/postgresql -trap_exit () { - errno=$? - test $errno = 0 || - cat >&2 <<-EOF - ERROR: $0 "$database" "$@" - EOF - #return $errno - } -trap trap_exit EXIT - +errno=0 while IFS=' \r' read -r database - do + do { test "${database:+set}" - test ! -e ~backup/snapshot/postgresql/"$database" - # NOTE: soit une sauvegarde est déjà en cours, - # soit une précédente a échoué. + if test -e ~backup/snapshot/postgresql/$database + then + cat >&2 <<-EOF + 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);" @@ -40,6 +35,15 @@ while IFS=' \r' read -r 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 @@ -50,3 +54,4 @@ while IFS=' \r' read -r database EOF ) EOF +exit $errno -- 2.20.1