-
-
Save sorah/d4390126e249e7762580 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
WORKDIR=/home/USER/workdir | |
TMP_DIR=/home/USER/tmp | |
FAILED_LOG_DIR=/home/USER/failed_logs/ | |
LOG_DIR=/home/USER/logs/ | |
PASSPHRASE_FILE=/home/USER/.xtrabackup-passphrase | |
MYSQL_PASSWORD='...' | |
TIMESTAMP="$(date '+%Y-%m-%d_%H%M%S')" | |
LOG_FILE=${LOG_DIR}${TIMESTAMP}.log | |
BACKUP_ARCHIVE="/home/USER/archives/${TIMESTAMP}.tar.bz2" | |
PROGRESS_ARCHIVE="${BACKUP_ARCHIVE}.progress" | |
set -e | |
echo "---- Preparing backup" | |
set -x | |
sudo -u USER rm -rf "${TMP_DIR}/tmpdir" | |
sudo -u USER mkdir "${TMP_DIR}/tmpdir" | |
sudo chgrp mysql "${TMP_DIR}/tmpdir" | |
sudo chmod 770 "${TMP_DIR}/tmpdir" | |
sudo -u USER bash -c 'rm -rf '"${LOG_DIR}"'*' | |
sudo -u USER touch "${LOG_FILE}" | |
sudo chown "$(id -u)" "${LOG_FILE}" | |
sudo chmod 640 "${LOG_FILE}" | |
sudo -u USER touch ${PROGRESS_ARCHIVE} | |
sudo -u USER chmod 600 ${PROGRESS_ARCHIVE} | |
set +x | |
echo "---- innobackupex" | |
sudo -u mysql innobackupex \ | |
--ibbackup=/usr/bin/xtrabackup_55 \ | |
--user=USER --password="${MYSQL_PASSWORD}" \ | |
--slave-info \ | |
--tmpdir="${TMP_DIR}/tmpdir" \ | |
--stream=tar \ | |
"${WORKDIR}" 2>$LOG_FILE | sudo -u USER bash -c "bzip2 - > ${PROGRESS_ARCHIVE}" | |
set +e | |
tail -n5 "${LOG_FILE}" | grep -q 'innobackupex: completed OK!' | |
okay=$? | |
set -e | |
sudo chown USER:USER "${LOG_FILE}" | |
if [ "_${okay}" = "_0" ]; then | |
echo "Succeeded." | |
sudo -u USER mv "${PROGRESS_ARCHIVE}" "${BACKUP_ARCHIVE}" | |
else | |
sudo -u USER cp "${LOG_FILE}" "${FAILED_LOG_DIR}" | |
sudo -u USER rm "${PROGRESS_ARCHIVE}" | |
echo "Failed." | |
exit 1 | |
fi | |
set -x | |
echo "---- encrypt" | |
sudo -u USER touch "${BACKUP_ARCHIVE}.enc" | |
sudo -u USER chmod 600 "${BACKUP_ARCHIVE}.enc" | |
sudo -u USER openssl enc -aes-256-cbc \ | |
-a \ | |
-pass file:"${PASSPHRASE_FILE}" -salt \ | |
-in "${BACKUP_ARCHIVE}" -out "${BACKUP_ARCHIVE}.enc" | |
echo "---- cleanup" | |
sudo -u USER rm "${BACKUP_ARCHIVE}" | |
sudo -u USER rm -rf "${TMP_DIR}/tmpdir" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment