アカウント
| ■ Linux上でcronによる 主にLinux上でFirebirdを運用する場合、バックアップファイルはサーバ間で持ち合う用にしています。方法としては、リモートのTargetサーバを指定し、このスクリプトを走らせるローカルのgbakでバックアップファイルを作成します。 下記は世代バックアップを行うシェルスクリプトの例です。 ● 使い方 日単位で実行するようcronに登録すると、ローカルの $BAK_DIR に $BACKUP_DAYS に指定した世代(日付)分のバックアップを作成・保存します。 ※echoをloggerコマンドに変更すると /var/log/messages に実行ログを記録出来るので更に良いかもしれません。 #!/bin/sh #TARGET HOST. IP Addrss or localhost. HOST="localhost" #DIRECTORY OF BACKUP FILES. BAK_DIR="/home/backup" #TARGET DB FILE. FDB_FILE="/firebird/firebird.fdb" #BACKUP DB FILE NAME. FBK_FILE="firebird.fbk" #GBAK PATH. GBAK="/opt/firebird/bin/gbak" #SYSDBA USER. ISC_USER="SYSDBA" #SYSDBA PASSWORD. ISC_PASSWD="masterkey" #BACKUP FILE WRAPPING DAYS. BACKUP_DAYS=3 #DATE DATE_PATH=`which date` #TODAY TODAY=`$DATE_PATH -I` #ROTATE DAY. ROTATE_DAY=`$DATE_PATH -I -d ${BACKUP_DAYS}days+ago` #BACKUP FILE NAME OF TODAY. FBK_FILE_TODAY="${FBK_FILE}.[${HOST}].${TODAY}" #ROTATE FILE NAME. ROTATE_FILE="${FBK_FILE}.[${HOST}].${ROTATE_DAY}" #COMMAND COMMAND="$GBAK -B -user $ISC_USER -pass $ISC_PASSWD ${HOST}:$FDB_FILE ${BAK_DIR}/${FBK_FILE_TODAY}" #SWEEP SPAN. SWEEP_SPAN=`expr 30 - ${BACKUP_DAYS}` if [ ! -d $BAK_DIR ] then echo "INFO: mkdir ${BAK_DIR}." mkdir $BAK_DIR fi if [ ! -f ${BAK_DIR}/$FBK_FILE_TODAY ] then echo "INFO: Starting gbak. -> $COMMAND." $COMMAND STATUS=$? else echo "INFO: Backup is not excuted. Backup file -> ${BAK_DIR}/${FBK_FILE_TODAY} allready exists." exit 1 fi if [ $STATUS -eq 0 ] then echo "INFO: Backup is completed." if [ -f ${BAK_DIR}/${ROTATE_FILE} ] then echo "INFO: Removing old backup file. -> ${BAK_DIR}/${ROTATE_FILE}" rm -rf ${BAK_DIR}/${ROTATE_FILE} fi else echo "ERROR: Backup is failed. please check -> $COMMAND." if [ -f ${BAK_DIR}/${FBK_FILE_TODAY} ] then echo "INFO: Removing failed backup file. -> ${BAK_DIR}/${FBK_FILE_TODAY}" rm -rf ${BAK_DIR}/$FBK_FILE_TODAY fi fi #SWEEP FUNCTION. sweepFile () { CHECK_COUNTER=0 while [ ${CHECK_COUNTER} -lt ${SWEEP_SPAN} ] do CURRENT_AMOUNT=`ls -l ${BAK_DIR}/${FBK_FILE}.[${HOST}].* | wc -l` VALUE=`expr ${BACKUP_DAYS} + ${CHECK_COUNTER}` SWEEP_DAY=`$DATE_PATH -I -d ${VALUE}days+ago` SWEEP_FILE="${FBK_FILE}.[${HOST}].${SWEEP_DAY}" if [ ${CURRENT_AMOUNT} -gt ${BACKUP_DAYS} ] then echo "INFO: Checking old backup file. -> ${BAK_DIR}/${SWEEP_FILE}" if [ -f ${BAK_DIR}/${SWEEP_FILE} ] then echo "INFO: Old backup file is finded." echo "INFO: Sweeping old backup file. -> ${BAK_DIR}/${SWEEP_FILE}" rm -rf ${BAK_DIR}/${SWEEP_FILE} SWEEP_STATUS=$? if [ $SWEEP_STATUS -eq 0 ] then echo "INFO: Sweep is completed." else echo "ERROR: Sweep is failed. Pleas check -> rm -rf ${BAK_DIR}/${SWEEP_FILE}." exit 1 fi fi fi CHECK_COUNTER=`expr ${CHECK_COUNTER} + 1` done } #AMOUNT OF BACKUP FILE. AMOUNT=`ls -l ${BAK_DIR}/${FBK_FILE}.[${HOST}].* | wc -l` #CHECK OLD FILES THAT OVER $BACKUP_DAYS AGO. if [ $AMOUNT -gt ${BACKUP_DAYS} ] then echo "ERROR: The amount of backup files offensehe occured. Sweep is started." sweepFile fi |
2010年10月にFirebird2.5がリリースされました。SuperClassicエンジンの実装により、よりパワフルに、よりスケーラブルになりました。(2012/11/6) | |||||||||||||||||||||||||||||||||||||||||||