Project

General

Profile

Redmineバックアップスクリプト

  • 日次実行するバックアップスクリプト
  • 「/usr/local/redmine」をバックアップする(変数で指定可能)

スクリプト

スケジュール

  • cronで設定する
    # crontab -e
    -----------------------------
    0 0 * * *     sh /usr/local/redmine_backup.sh > /dev/null 2>&1
    

実行スクリプト

*ファイルを作成し、下記を編集する
  • バックアップ先
  • 削除する日付
  • SQLのユーザパスワード
  • スクリプト本体
    # vi /usr/local/redmine_backup.sh
    -----------------------------
    #!/bin/bash
    
    PATH=/usr/local/sbin:/usr/bin:/bin
    
    # バックアップ対象
    TARGET_DIR=/usr/local/redmine
    TARGET="log files config" 
    SQL=redmine_dump.sql
    
    # バックアップ先
    BACKUP_DIR=/backup/
    
    # バックアップファイル名
    ARCHIVE_NAME=redmine_backup
    
    # 今日の日付を取得する
    DATE=`/bin/date '+%Y%m%d'`
    
    # 削除する日付を取得する
    DELETE_DATE=`/bin/date -d '3 day ago' +%Y%m%d`
    
    # バックアップ先のチェック
    if [ ! -d "${BACKUP_DIR}" ]; then
      mkdir ${BACKUP_DIR}
    fi
    
    # バックアップ対象のディレクトリへ移動
    cd ${TARGET_DIR}
    
    # バックアップ(SQLのユーザ/パスを指定)
    mysqldump -u ユーザ名 -pパスワード redmine > ${SQL}
    tar czf ${ARCHIVE_NAME}.tar.gz ${T1} ${TARGET} ${SQL}
    rm -f ${SQL}
    
    # バックアップ先へ移動、日付を付加
    mv ${ARCHIVE_NAME}.tar.gz ${BACKUP_DIR}${ARCHIVE_NAME}_${DATE}.tar.gz
    
    # 過去のバックアップを削除
    if [ -f "${BACKUP_DIR}${ARCHIVE_NAME}_${DELETE_DATE}.tar.gz" ]; then
        rm -rf ${BACKUP_DIR}${ARCHIVE_NAME}_${DELETE_DATE}.tar.gz
    fi