Skip to content

Instantly share code, notes, and snippets.

@evadeflow
Created March 23, 2017 13:18
Show Gist options
  • Save evadeflow/ca1d049ff27265d0cd1addd3fcef8ff8 to your computer and use it in GitHub Desktop.
Save evadeflow/ca1d049ff27265d0cd1addd3fcef8ff8 to your computer and use it in GitHub Desktop.
Daily cron script to back up a Bitnami Redmine instance
#! /bin/bash
set -euo pipefail
DAY=`date +"%Y%m%d"`
HOUR=`date +"%H%M"`
REDMINE_BACKUP_PATH=/mnt/i-drive/backups/redmine
REDMINE_HOME=/home/redmine/app
REDMINE_DB_NAME=bitnami_redmine
REDMINE_DB_USER=bitnami
REDMINE_DB_PASS=d45aX59a39
REDMINE_DB_BACKUP=$REDMINE_HOME/../backups/redmine_mysql_db.sql
REDMINE_BACKUP_NAME="redmine_"$DAY"_"$HOUR".tar.bz2"
REDMINE_BACKUP_LIVE_TIME=7
REDMINE_BACKUP_FILE_PATTERN=redmine_*.tar.bz2
# Ensure required directories exist
mkdir -p ${REDMINE_BACKUP_PATH}
mkdir -p ${REDMINE_HOME}/backups
echo "Backing up Redmine's MySQL database..."
${REDMINE_HOME}/redmine/mysql/bin/mysqldump --user=$REDMINE_DB_USER --password=$REDMINE_DB_PASS $REDMINE_DB_NAME > $REDMINE_DB_BACKUP
echo "($REDMINE_DB_BACKUP) done."
echo
echo "Backing up Redmine's app directory..."
tar -cjf $REDMINE_BACKUP_PATH/$REDMINE_BACKUP_NAME $REDMINE_HOME
echo "($REDMINE_BACKUP_PATH/$REDMINE_BACKUP_NAME) done."
echo "Purging outdated backups..."
for file in $(find $REDMINE_BACKUP_PATH/$REDMINE_BACKUP_FILE_PATTERN -mtime +$REDMINE_BACKUP_LIVE_TIME); do
rm $file
done
echo "done."
@evadeflow
Copy link
Author

evadeflow commented Mar 23, 2017

Note To Self: The i-drive mount was actually an NTFS share on a corporate network that had tons of free space (see fstab gist).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment