* It depends on cron on Linux
Generation backup of the database of Firebird
* This articlewas drawn up on the basis of the contribution inof Hosaka's release ML.
When Firebird is used mainly on Linux, the job backup file has made the business to have between the server. As a method, the Target server of remote is appointed, the job backup file is drawn up with local gbak which can send this script.
Description below is example of the shell script which does generation backup.
- How to use
That it executes at the day unit, when it registers to cron, the generation who is appointed to $BACKUP_DAYS in local $BAK_DIR (date) it draws up & retains the backup of amount.
* When echo is modified in logger command, being to be able to record the execution log to /var/log/messages, perhaps furthermore it is good.
Kod: Tümünü seç
#! /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
http://babelfish.altavista.com/babelfis ... 7e892a90bb