From 9415f166b6f0c9d08c4c2c9fb6f023c2385d6d46 Mon Sep 17 00:00:00 2001 From: Julien Moutinho Date: Wed, 11 Sep 2013 12:26:19 +0200 Subject: [PATCH] =?utf8?q?Correction=20:=20local/backup/*-snapshot=20:=20?= =?utf8?q?=C3=A9vite=20set=20-e=20:=20inactif=20dans=20les=20fonctions.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- local/backup/mysql-snapshot | 53 ++++++++++++++++---------------- local/backup/postgresql-snapshot | 40 ++++++++++++------------ 2 files changed, 45 insertions(+), 48 deletions(-) diff --git a/local/backup/mysql-snapshot b/local/backup/mysql-snapshot index d77d2bf..56e5b14 100755 --- a/local/backup/mysql-snapshot +++ b/local/backup/mysql-snapshot @@ -15,20 +15,31 @@ test ! $# = 0 || set -- : install -d -m 770 -o backup -g backup \ ~backup/snapshot/mysql -snapshot () { - local database="$1" && shift && - test ! -e ~backup/snapshot/mysql/"$database" && +trap_exit () { + errno=$? + test $errno = 0 || + cat >&2 <<-EOF + ERROR: $0 "$database" "$@" + EOF + #return $errno + } +trap trap_exit EXIT + +while IFS='' read -r database + 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é. - can_hotcopy=yes && + can_hotcopy=yes while IFS=' ' read -r table engine do case $engine in (MyISAM|ARCHIVE) :;; (*) can_hotcopy=no;; esac - done <<-EOF && - $(mysql -u backup --batch --skip-column-names <<-EOF || exit 1 + done <<-EOF + $(mysql -u backup --batch --skip-column-names <<-EOF SELECT table_name,engine FROM information_schema.tables WHERE table_schema = '$database'; @@ -37,38 +48,27 @@ snapshot () { EOF case $can_hotcopy in (yes) - cd / && + cd / sudo -u root find ~mysql-data -mindepth 1 -maxdepth 1 -type d -exec \ - install -d -m 750 -o mysql -g backup {} + && - cd - >/dev/null 2>&1 && - test "${TRACE:+set}" || quiet=--quiet && + install -d -m 750 -o mysql -g backup {} + + cd - >/dev/null 2>&1 + test "${TRACE:+set}" || quiet=--quiet mysqlhotcopy --method=cp -u backup ${quiet:-} \ "$database" ~backup/snapshot/mysql ;; (no) install -d -m 770 -o backup -g backup \ - ~backup/snapshot/mysql/"$database" && + ~backup/snapshot/mysql/"$database" mysqldump --opt --events -u backup ${TRACE:+--verbose} \ - --result-file ~backup/snapshot/mysql/"$database"/dump.sql \ + --result-file ~backup/snapshot/mysql/$database/dump.sql \ "$database" ;; - esac && - eval "$@" && + esac + eval "$@" rm -rf \ ~backup/snapshot/mysql/"$database" - } - -exit=0 -while IFS=' ' read -r database - do if ! snapshot "$database" "$@" - then - exit=1 - cat >&2 <<-EOF - ERROR: snapshot "$database" "$@" - EOF - fi done <<-EOF - $(mysql -u backup --batch --skip-column-names <<-EOF || exit 1 + $(mysql -u backup --batch --skip-column-names <<-EOF SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('information_schema', 'performance_schema') @@ -76,4 +76,3 @@ while IFS=' ' read -r database EOF ) EOF -exit $exit diff --git a/local/backup/postgresql-snapshot b/local/backup/postgresql-snapshot index da34ee0..a9b3348 100755 --- a/local/backup/postgresql-snapshot +++ b/local/backup/postgresql-snapshot @@ -15,32 +15,31 @@ 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" && +trap_exit () { + errno=$? + test $errno = 0 || + cat >&2 <<-EOF + ERROR: $0 "$database" "$@" + EOF + #return $errno + } +trap trap_exit EXIT + +while IFS=' \r' read -r database + 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é. install -d -m 770 -o backup -g backup \ - ~backup/snapshot/postgresql/"$database" && - psql --quiet "$database" -c "VACUUM (ANALYSE);" && + ~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 "$@" && + "$database" + eval "$@" rm -rf \ - ~backup/snapshot/postgresql/"$database" && - : - } - -exit=0 -while IFS=' \r' read -r database - do if ! snapshot "$database" "$@" - then - exit=1 - cat >&2 <<-EOF - ERROR: snapshot "$database" "$@" - EOF - fi + ~backup/snapshot/postgresql/"$database" done <<-EOF $(psql --quiet --tuples-only postgres <<-EOF || exit 1 \set ON_ERROR_STOP on @@ -51,4 +50,3 @@ while IFS=' \r' read -r database EOF ) EOF -exit $exit -- 2.20.1