firebird auto backup (cron job-on linux)

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

firebird auto backup (cron job-on linux)

Mesaj gönderen mege »

firebirdi linux üzerinde kullananlar için.

* 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
kaynak site japonya firebird kullanıcıları sitesinden, babelfish ile ilgilizce linki
http://babelfish.altavista.com/babelfis ... 7e892a90bb
.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
Terminator
Üye
Mesajlar: 313
Kayıt: 13 Ara 2005 01:45
Konum: İzmir, ama Aydın Efesi!

Mesaj gönderen Terminator »

Bu cron meretinin haala bi GUI si yok mu ya? windows sheduler gibi?
hadi 15 sene önce elle yazıyoduk text dosyasına VI ile.
bu karadar karmaşık shellerle, syntaxla ilerlemesi mümkün değil *nixin.
Firebird Foundation Member #208
http://www.firebirdsql.org
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Mesaj gönderen Ali Erdoğan »

Terminator yazdı:Bu cron meretinin haala bi GUI si yok mu ya? windows sheduler gibi?
Adını hatırlamıyorum ama KDE de böyle birşey olması lazım.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Terminator yazdı:Bu cron meretinin haala bi GUI si yok mu ya? windows sheduler gibi?
hadi 15 sene önce elle yazıyoduk text dosyasına VI ile.
bu karadar karmaşık shellerle, syntaxla ilerlemesi mümkün değil *nixin.
Hocam fazla görsellik *nix i bozar :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Terminator yazdı:Bu cron meretinin haala bi GUI si yok mu ya? windows sheduler gibi?
hadi 15 sene önce elle yazıyoduk text dosyasına VI ile.
bu karadar karmaşık shellerle, syntaxla ilerlemesi mümkün değil *nixin.
Gui olmaz mı? İstemediğin kadar var. Çeşit çeşit. :)
Cevapla