Posted at

Redmineなど汎用的に使えるバックアップ処理(shellscript+cron+rsync)

More than 5 years have passed since last update.


redmineバックアップ処理

毎回設定が面倒なので、

結構汎用的に使える?そして、簡単に実装できる?

クーロン+シェルを利用したバックアップ処理を書いてみました。

※ ロギングやエラー処理は適宜入れてみてください。


redmine_backup.sh

#!/bin/bash

# Redmine Backup

# 定義
# バックアップ先フォルダ
TO_BK_DIR=/backup/to

# 現在日付(バックアップファイル名に使用)
NOW=`date +%Y%m%d%H`

# DBバックアップ
mysqldump -u DB_USER -pDB_PASS DB_NAME | gzip > $TO_BK_DIR/redmine/redmine_db_$NOW.sql.gz

# アップロードファイルバックアップ
gzip -rc /REDMINE_ROOT/files > $TO_BK_DIR/redmine_upload_$NOW.tgz

# 世代管理(更新日が7日以前のものは削除)
find $TO_BK_DIR/ -mtime +7 -type f -exec rm -f {} \;

# バックアップサーバと同期
rsync -avz --delete -e ssh $TO_BK_DIR/ username@remote_server:$TO_BK_DIR/


クーロンの設定はこんな感じ(日次午前4時起動)

0 4 * * * redmine_backup.sh >/dev/null 2>&1

sshとrsyncでパスワード無し認証のやり方などは、ここ参照