testing '/'in headings
This commit is contained in:
114
bash/share/sync/sync-conf-example.sh
Normal file
114
bash/share/sync/sync-conf-example.sh
Normal file
@@ -0,0 +1,114 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# sync-conf-example.sh - a "sync.sh" configuration file example.
|
||||
#
|
||||
# (C) Bruno Raoult ("br"), 2007-2022
|
||||
# Licensed under the GNU General Public License v3.0 or later.
|
||||
# Some rights reserved. See COPYING.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along with this
|
||||
# program. If not, see <https://www.gnu.org/licenses/gpl-3.0-standalone.html>.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later <https://spdx.org/licenses/GPL-3.0-or-later.html>
|
||||
#
|
||||
# USAGE:
|
||||
# sync.sh -rfu /path/to/sync-conf-example.sh
|
||||
|
||||
# below, default values are just below the lines starting with '######'.
|
||||
# The only mandatory ones are SOURCEDIR, SERVER, and DESTDIR.
|
||||
|
||||
###### source directory full path, destination server and path.
|
||||
###### SERVER could be user@host, or "local" if local machine
|
||||
# SOURCEDIR=""
|
||||
# SERVER=""
|
||||
# DESTDIR=""
|
||||
export SOURCEDIR=/example-srcdir
|
||||
export SERVER=root@backuphost
|
||||
export DESTDIR=/mnt/nas1/example-destdir
|
||||
|
||||
###### backups mount point on local machine.
|
||||
###### it is used by sync-view.sh only.
|
||||
export BACKUPDIR=/mnt/backup-example-srcdir
|
||||
|
||||
###### backups to keep
|
||||
# NYEARS=3
|
||||
# NMONTHS=12
|
||||
# NWEEKS=6
|
||||
# NDAYS=10
|
||||
|
||||
###### other rsync options. It must be an array.
|
||||
# RSYNCOPTS=()
|
||||
FILTERNAME=".rsync-filter-system"
|
||||
FILTER=--filter="dir-merge ${FILTERNAME}"
|
||||
RSYNCOPTS+=("$FILTER")
|
||||
|
||||
###### functions run immediately before and after the rsync. Can be used
|
||||
###### to create database dumps, etc...
|
||||
###### Warning: avoid using "cd", or be sure to come back to current dir
|
||||
###### before returning from functions
|
||||
# beforesync() { log "calling default beforesync..."; }
|
||||
# aftersync() { log "calling default aftersync..."; }
|
||||
|
||||
# example below will create a mysql/mariadb dump. At same time we create
|
||||
# a FILTERNAME file in database data directory to exclude databases directories
|
||||
# themselves.
|
||||
beforesync() {
|
||||
local -a databases
|
||||
local datadir
|
||||
|
||||
# log is a sync.sh function.
|
||||
log -s -t "calling user beforesync: mysql databases dumps..."
|
||||
|
||||
if ! datadir="$(mysql -sN -u root -e 'select @@datadir')"; then
|
||||
log -s "cannot get maria databases directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# dump users and permissions
|
||||
log -n "dumping users and permissions... "
|
||||
mysqldump --user=root --system=users > "$datadir/mariadb_users.sql"
|
||||
log -n "compressing... "
|
||||
gzip -f "$datadir/mariadb_users.sql"
|
||||
log "done."
|
||||
|
||||
rm -f "$datadir/$FILTERNAME"
|
||||
# shellcheck disable=2207
|
||||
if ! databases=( $(mysql -sN -u root -e "SHOW DATABASES;") ); then
|
||||
log -s "cannot get maria databases list"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for db in "${databases[@]}"; do
|
||||
# do not backup database contents itself
|
||||
printf -- "- /%s/*\n" "$db" >> "$datadir/$FILTERNAME"
|
||||
|
||||
log -n "$db... "
|
||||
case "$db" in
|
||||
information_schema|performance_schema)
|
||||
log "skipped."
|
||||
;;
|
||||
*)
|
||||
log -n "dumping to $datadir$db.sql... "
|
||||
if ! mysqldump --user=root --single-transaction --routines \
|
||||
"$db" > "$datadir/$db.sql"; then
|
||||
log -s "mysqldump error"
|
||||
exit 1
|
||||
fi
|
||||
log -n "compressing... "
|
||||
gzip -f "$datadir/$db.sql"
|
||||
log "done."
|
||||
esac
|
||||
done
|
||||
# log "filtername contains:"
|
||||
# cat ${datadir}/${FILTERNAME}
|
||||
}
|
||||
|
||||
aftersync() {
|
||||
# we may remove the dump here...
|
||||
log -s -t "calling user aftersync"
|
||||
}
|
||||
|
||||
# For Emacs, shell-script-mode:
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# End:
|
Reference in New Issue
Block a user