Yahoo!グループ
ログイン
IDでもっと便利に[ 新規取得 ]



こんにちは、 ゲストさん Yahoo! JAPAN ID取得 - ログイン 
Yahoo!グループ [ 参加 ]
トップ > Firebird-jp-general > 掲示板
グループメニュー
  メインページ  
→ 掲示板  
  ブックマーク  
 
 
 グループメンバー専用 
  ブリーフケース  
  フォトアルバム  
  データベース  
  投票  
  グループメンバー  
  カレンダー  
  グループをPR  

ヘルプ
 ・ グループ 使い方ガイド
 ・ グループ ヘルプ

モバイル版(ベータ)
モバイル版Yahoo!グループ(ベータ版)にアクセス!
URLを
ケータイに送信

旧Yahoo! eグループをお使いのみなさんへ。

 掲示板 掲示板ヘルプ
メッセージ検索:
返信 | 折り返しの解除 |
4619 件中 1505 件目を表示 前の一覧 | 次の一覧  [ 親メッセージ ]   メッセージ一覧
No.
投稿者:  Shigeki Hosaka <shosaka@o...>
Date:  2005年2月10日(木) 午前9時04分
タイトル:  Re: [Firebird-jp-general] IBConsoleでのバックアップについて



保坂と申します。

>林です。
>
>宮副さんの回答が正解のように思いますが・・・。
>sambaやnfsでマウントしたボリュームにバックアップファイルを作成することは
>可能なので、DBサーバにバックアップサーバの当該ボリュームをマウントして、
>そこへバックアップさせるという手もあります。
>私は、ローカルにバックアップを作成してから、cronで転送という手続きをして
>います。

主にLinux上でFirebirdを運用しております。
この際バックアップファイルはサーバ間で持ち合う用にしています。
(リモートのTargetサーバを指定してgbakでローカルにバックアップ
ファイルを作成)
自分が利用しているシェルを添付いたしますので宜しければご利用下さい。
Linuxは利用されていないようですが^^;

●使い方
日単位で実行するようcronに登録すると、$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










  このメッセージに対する返信 投稿者 ニックネーム 日付 サイズ
1506 Re: IBConsoleでのバックアップについて 林 務 tomneko_p 2005年2月10日(木)  7 KB
1507 Re: IBConsoleでのバックアップについて Shue Miula. shuemiula 2005年2月10日(木)  2 KB

No.
返信 | 折り返しの解除 |
4619 件中 1505 件目を表示 前の一覧 | 次の一覧  [ 親メッセージ ]   メッセージ一覧


プライバシーポリシー - 利用規約 - ガイドライン - ヘルプ
  Copyright (C) 2012 Yahoo Japan Corporation. All Rights Reserved.