Skip to content

Instantly share code, notes, and snippets.

@sAws
Last active July 24, 2019 10:09
Show Gist options
  • Save sAws/9fb65dc046a2e4dad69b81d55ad7b425 to your computer and use it in GitHub Desktop.
Save sAws/9fb65dc046a2e4dad69b81d55ad7b425 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
set -e
# Копируются файлы moodle из заданных директорий
# Делается бэкап БД Postgresql
# Всё это дело суётся в tar и сжимается gzip
# Всё что старше 1 дня рекурсивно удаляется (удалятся также директории и файлы, которые названы не в формате "ггггммдд")
declare -r DATE="$(date +%Y%m%d)"
declare -r DIR_BACKUP="/root/backup/${DATE}"
declare -r DIR_PG_BACKUP="/var/lib/postgresql/backup"
declare -r DIR_MOODLE="/var/www/html/moodle"
declare -r DIR_MOODLEDATA="/var/www/html/moodledata"
declare -r MOODLE_TAR="moodle_${DATE}.tar"
declare -r MOODLE_GZIP="moodle_${DATE}.tar.gz"
declare -r PG_BACKUP="db_nbd_moodle_${DATE}"
declare -r PG_USER="postgres"
declare -r PG_REQUEST="
[ ! -d "${DIR_PG_BACKUP}" ] && mkdir -p "${DIR_PG_BACKUP}"
if [ ! -f "${PG_BACKUP}" ]; then
pg_dump -b -Z 9 -d nbd_moodle > "${DIR_PG_BACKUP}/${PG_BACKUP}"
fi
"
[ ! -d "${DIR_BACKUP}" ] && mkdir -p "${DIR_BACKUP}"
if [ -d "${DIR_MOODLE}" ] && [ ! -f "${DIR_BACKUP}/${MOODLE_TAR}" ] && [ ! -f "${DIR_BACKUP}/${MOODLE_GZIP}" ]; then
tar -cf "${DIR_BACKUP}/${MOODLE_TAR}" "${DIR_MOODLE}" "${DIR_MOODLEDATA}"
gzip "${DIR_BACKUP}/${MOODLE_TAR}"
fi
if [ ! -f "${DIR_PG_BACKUP}/${PG_BACKUP}" ] && [ ! -f "${DIR_BACKUP}/${PG_BACKUP}.tar" ] && [ ! -f "${DIR_BACKUP}/${PG_BACKUP}.tar.gz" ]; then
su -l "${PG_USER}" -c "${PG_REQUEST}"
fi
if [ -f "${DIR_PG_BACKUP}/${PG_BACKUP}" ] && [ ! -f "${DIR_BACKUP}/${PG_BACKUP}" ] && [ ! -f "${DIR_BACKUP}/${PG_BACKUP}.tar" ] && [ ! -f "${DIR_BACKUP}/${PG_BACKUP}.tar.gz" ]; then
tar --remove-files -cf "${DIR_BACKUP}/${PG_BACKUP}.tar" "${DIR_PG_BACKUP}/${PG_BACKUP}"
gzip "${DIR_BACKUP}/${PG_BACKUP}.tar"
fi
for var in /root/backup/*; do
if (( ${var##*/} <= $(date +%Y%m%d -d "yesterday") )); then
rm -rf $var
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment