Skip to content

Instantly share code, notes, and snippets.

@alexws54tk
Last active May 20, 2020 15:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexws54tk/038f2d0f947ea62aaf64391cbfb725be to your computer and use it in GitHub Desktop.
Save alexws54tk/038f2d0f947ea62aaf64391cbfb725be to your computer and use it in GitHub Desktop.
Backup Sites DBs and Sites files
# Add to /etc/crontab
% cat /etc/crontab
#min hr dom mon dow user command
40 23 * * * <user> /path/to/backup-db-se.sh
% cat backup-db-se.sh
#!/bin/bash
VERSION="20190111" # vaersion of script file
NOW=$(date +"%Y-%m-%d")
# xz, bzip2, gzip
ARCHPROG=xz
# xz, bz2, gz
ARCHEXT="xz"
# dir to backup
BDIR="/path/to/backups"
DEBUG=0
if [ $# > 0 ]; then
case $1 in
"-V" | "--version" )
# print version
echo "Script version: $VERSION"
exit 0
;;
"-v" | "--verbose" )
# print debug messages
DEBUG=1
;;
*)
#
;;
esac
fi
if [ ! -d ${BDIR}/${NOW} ]; then
mkdir -p ${BDIR}/${NOW}
fi
DIR="${BDIR}/${NOW}"
# user & password
USER=backupdb
PASS=backupdb
# databases to backup
DBS="moodle mysql "
# Or all databases in separate files
# DBS="$(mysql -u ${USER} -p${PASS} -Bse 'show databases')"
for db in ${DBS}; do
ND=$(date +"%H-%M-%S")
FILEFR="${NOW}-sql-${db}-${ND}.sql"
FILETO="${DIR}/${FILEFR}.${ARCHEXT}"
if [ ${DEBUG} -ne 0 ]; then
echo "BackUp ${db}\t to ${FILETO}"
mysqldump -u ${USER} -p${PASS} ${db} | ${ARCHPROG} -6 -v > ${FILETO} # | pv -cN ${ARCHPROG}
echo "complite"
else
mysqldump -u ${USER} -p${PASS} ${db} | ${ARCHPROG} -6 > ${FILETO} # | pv -cN ${ARCHPROG}
fi
done
# Backup site files
cd /var/www
# Sites to backup
FLS="moodle site_2 site_3" #
for fl in $FLS; do
ND=$(date +"%H-%M-%S")
FLN="${DIR}/${NOW}-${fl}-${ND}.tar.${ARCHEXT}"
if [ ${DEBUG} -ne 0 ]; then
echo -e "BackUp ${fl}\t to ${FLN}"
tar --exclude-vcs --exclude-backups -c -f - ${fl} | ${ARCHPROG} -6 -v > ${FLN}
echo "done"
else
tar --exclude-vcs --exclude-backups -c -f - ${fl} | ${ARCHPROG} -6 > ${FLN}
fi
done
###
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment