[Linux]RedmineのDBのバックアップを取る
添付ファイル以外のデータはすべてDBに入っている。
添付ファイルはRedmineインストールディレクトリのfiles以下にある。
(今回は/var/lib/redmine/files)
添付ファイルバックアップスクリプト(attach_file_backup.sh)
#!/bin/sh SRC=/var/lib/redmine BACKUP_DIR=/home/hoge/backup/redmine/daily_backup BACKUP_FILE=files cp -ar ${SRC}/${BACKUP_FILE} ${BACKUP_DIR} tar cvzf ${BACKUP_DIR}/${BACKUP_FILE}.tar.gz -C $BACKUP_DIR $BACKUP_FILE rm -r ${BACKUP_DIR}/${BACKUP_FILE}
DBバックアップスクリプト(db_backup.sh)
#!/bin/sh DAILY_BACKUP_DIR=/home/hoge/backup/redmine/daily_backup DUMP_FILE=db_redmine.dump DB_USER_NAME=hoge DB_PASSWORD=piyo mysqldump -u ${DB_USER_NAME} -p{DB_PASSWORD} db_redmine > ${DAILY_BACKUP_DIR}/${DUMP_FILE}
日次バックアップスクリプト(daily_backup.sh)
#!/bin/sh #このシェルのパスを取得 DIR=$(cd $(dirname $0); pwd) #echo $DIR #DBのバックアップ取得 ${DIR}/db_backup.sh #添付ファイルのバックアップ取得 ${DIR}/attach_file_backup.sh
月次バックアップスクリプト(monthly_backup.sh)
#!/bin/sh DAILY_BACKUP_DIR=/home/hoge/backup/redmine/daily_backup MONTHLY_BACKUP_DIR_BASE=/home/hoge/backup/redmine/monthly_backup MONTHLY_BACKUP_DIR=${MONTHLY_BACKUP_DIR_BASE}`date +\%y\%m\%d` #echo ${MONTHLY_BACKUP_DIR} mkdir ${MONTHLY_BACKUP_DIR} cp -ar ${DAILY_BACKUP_DIR} ${MONTHLY_BACKUP_DIR}
cronの設定
MAILTO='' #redmineのバックアップ(毎日午前3時) 0 3 * * * /home/hoge/backup/redmine/sh/daily_backup.sh #redmineのバックアップのコピー(毎月1日午前5時) 0 5 1 * * /home/hoge/backup/redmine/sh/monthly_backup.sh
DBのリストア
db_redmine_restoreに復元する例
drop database db_redmine_restore; create database db_redmine_restore default character set utf8; grant all on db_redmine_restore.* to user_redmine;
・シェル
#!/bin/sh #このシェルのパスを取得 DIR=$(cd $(dirname $0); pwd) DAILY_BACKUP_DIR=/home/hoge/backup/redmine/daily_backup DUMP_FILE=db_redmine.dump DB_ROOT_USER=root DB_ROOT_PASSWORD=fuga DB_USER=user_redmine DB_PASSWORD=piyo RESTORE_DB=db_redmine_restore mysql -u ${DB_ROOT_USER} -p${DB_ROOT_PASSWORD} < ${DIR}/create_db_restore.sql mysql -u ${DB_USER} -p${DB_PASSWORD} ${RESTORE_DB} < ${DAILY_BACKUP_DIR}/${DUMP_FILE}
リストア
添付ファイルの復旧後は、filesのオーナーをapacheに戻す。
sudo chown -R apache:apahce files
操作ユーザになっていると、ファイルアップロード時にpermission deniedが発生し、Internal Server Errorが表示される。