2 # SYNTAX: $database_pattern -- $snapshot_eval
3 # DESCRIPTION: crée un instantané pour chaque base de données MySQL $database donnée
4 # DESCRIPTION: dans ~backup/snapshot/mysql/"$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
/mysql
19 while IFS
='' read -r database
21 test "${database:+set}"
22 if test -e ~backup
/snapshot
/mysql
/$database
25 ERROR: soit une sauvegarde est déjà en cours, soit une précédente a échoué.
30 while IFS
=' ' read -r table engine
37 $(mysql -u backup --batch --skip-column-names <<-EOF
38 SELECT table_name,engine
39 FROM information_schema.tables
40 WHERE table_schema = '$database';
47 sudo
-u root
find ~mysql-data
-mindepth 1 -maxdepth 1 -type d
-exec \
48 install -d -m 750 -o mysql
-g backup
{} +
50 test "${TRACE:+set}" || quiet
=--quiet
51 mysqlhotcopy
--method=cp -u backup
${quiet:-} \
52 "$database" ~backup
/snapshot
/mysql
55 install -d -m 770 -o backup
-g backup \
56 ~backup
/snapshot
/mysql
/"$database"
57 mysqldump
--opt --events -u backup
${TRACE:+--verbose} \
58 --result-file ~backup
/snapshot
/mysql
/$database/dump.sql \
64 ~backup
/snapshot
/mysql
/"$database"
68 ERROR: $0 "$database" "$@"
70 if test "${database:+set}"
71 then rm -rf ~backup
/snapshot
/mysql
/"$database"
75 $(mysql -u backup --batch --skip-column-names <<-EOF
77 FROM information_schema.schemata
78 WHERE schema_name NOT IN ('information_schema', 'performance_schema')
79 AND schema_name LIKE '$database_pattern';