рд╡рд┐рдВрдбреЛрдЬ рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╛рдпрд░рдмрд░реНрдб / рдЗрдВрдЯрд░рдмреЗрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдмреИрдХрдЕрдк рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд╕реНрд╡рдЪрд╛рд▓рди

рдЫрд╡рд┐
рдиреАрдЪреЗ рджреА рдЧрдИ рд╕рд╛рдордЧреНрд░реА рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╢рд╛рд╕рдХ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдмреИрдХрдЕрдк рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдиреЗ рдХреЗ рдорд╣рддреНрд╡ рдХреЛ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдиреАрдЪреЗ рдореИрдВ рдлрд╛рдпрд░рдмрд░реНрдб рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдмреИрдХрдЕрдк рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд╕рдВрдЧрдарди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрдорд╛рдВрдб рдмреИрдЯ-рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреВрдВрдЧрд╛, рдореИрдВ рдЗрд╕рдХреЗ рдкреНрд░рдореБрдЦ рдЕрдВрд╢реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред рдпрд╣ рдЗрдВрдЯрд░рдмреЗрд╕ рдпрд╛ рдпрд╛рдлрд╝рд┐рд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреБрдХреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдмреИрдХрдЕрдк рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЙрд▓ рдХреЗ рдиреНрдпреВрдирддрдо рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде, рдЗрд╕реЗ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдбреАрдмреАрдПрдордПрд╕ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдХреБрдЫ рд▓рд┐рдВрдХ рджреЗрддрд╛ рд╣реВрдВ, рдЬрд┐рд╕ рдкрд░ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
firebirdsql.org: рдлрд╛рдпрд░рдмрд░реНрдб рдХрд╛ gbak рдмреИрдХрдЕрдк рдФрд░ рд░рд┐рд╕реНрдЯреЛрд░ рдЯреВрд▓
ibase.ru: GBAK, рдлрд╛рдпрд░рдмрд░реНрдб рдФрд░ рдЗрдВрдЯрд░рдмреЗрд╕ рдпреВрдЯрд┐рд▓рд┐рдЯреА

рдереЛрдбрд╝рд╛ рд╢рдмреНрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:

рддреЛ, рдХреНрдпрд╛ рдЧрддрд┐рд╡рд┐рдзрд┐рдпрд╛рдБ рдбреЗрдЯрд╛рдмреЗрд╕ рдмреИрдХрдЕрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрдирд╛рддреА рд╣реИрдВ, рдЕрдЧрд░ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЕрдкреНрд░реЛрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рди рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде gbak.exe рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ? рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореБрдЦреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдХрд░реВрдВрдЧрд╛:
  1. рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдЧрдВрддрд╡реНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЗрд╕реЗ рдмрдирд╛рдПрдВ (рд╕рднреА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдирд╣реАрдВ рдмрдирд╛рдПрдВрдЧреЗ рдпрджрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓реЗ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЕрднреА рддрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ)ред
  2. рд╕рд░реНрд╡рд░ рдХреЗ рдкреИрдХреЗрдЬ рд╕реЗ рдорд╛рдирдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдмреИрдХрдЕрдк рд╣рдЯрд╛рдирд╛ред
  3. рдмреИрдХрдЕрдк рдХрд╛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдмрд╣рд╛рд▓ (рдЕрдлрд╕реЛрд╕, рдХрднреА-рдХрднреА рдРрд╕реЗ рдорд╛рдорд▓реЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рд╕рд░реНрд╡рд░ рдиреЗ рдмреИрдХрдЕрдк рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ, рд▓реЗрдХрд┐рди рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдЗрд╕реЗ рдирдП рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ )ред
  4. рдЕрднрд┐рд▓реЗрдЦреАрдп рджреНрд╡рд╛рд░рд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдмреИрдХрдЕрдк рдлрд╝рд╛рдЗрд▓ рд╕рдВрдкреАрдбрд╝рдиред
  5. рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ / рдпрд╛ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬреЗ рд╡рд╛рд▓реА рдЬрдЧрд╣ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдмреИрдХрдЕрдк рдХрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд┐рдпрдВрддреНрд░рдгред
  6. рдИрдореЗрд▓, NET SEND рдкрд░рд┐рд╡рд╣рди рдпрд╛ рдЕрдиреНрдп рд╕рд╛рдзрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд┐рдЫрд▓реЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реБрдИ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВред рд╕рдВрдЪрдпреА рд╡рд┐рдлрд▓рддрд╛ рд▓реЙрдЧ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИред

рд╣рдорд╛рд░реА рд▓рд┐рдкрд┐, рдмреЗрд╢рдХ, рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХрд░ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рдФрд░ рднреА рдХрд░ рд╕рдХрддреА рд╣реИ:

рдкреНрд░рд╡реЗрд╢ рдореЗрдВ рджреЗрд░реА рд╣реБрдИ; рд╕реНрдкреЙрдЗрд▓рд░ рдХреЗ рддрд╣рдд рдореИрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб рд▓рд╛рддрд╛ рд╣реВрдВред
source fb_backup.bat
@CLS @ECHO OFF ECHO #=============================================================================# ECHO # # ECHO # Firebird/InterBase database backup, test restore, zip and rotate script # ECHO # Ver 3.2.8 (26.01.2013) # ECHO # # ECHO # Author: arni (email:arnisoft at rambler dot ru) # ECHO # # ECHO # Format: # ECHO # FB_BACKUP [host[/port]:][path]db_file_or_alias result_dir # ECHO # [/count:backup_count] [/space:backup_space_limit] [/gc] # ECHO # [/restore] [/compress:level] [/password:SYSDBA_password] # ECHO # [other_files_to_compress [...]] # ECHO # # ECHO # Input params: # ECHO # [host[/port]:][path] : local or network, full-specified path or alias # ECHO # db_file_or_alias to the source database # ECHO # result_dir : result backup collecting directory # ECHO # /count:backup_count : backup file number to keep (30 by default) # ECHO # /space:backup_space_limit : total backup size in bytes (not use by default) # ECHO # you can use suffixes K, M or G. # ECHO # /gc : need to collect garbage in DB (OFF by default) # ECHO # /restore : need to do test restore (OFF by default) # ECHO # /compress:level : compress ratio for RAR (2 by default): # ECHO # 0: not compress, 1: fastest, 2: fast, # ECHO # 3: normal, 4: good, 5: best # ECHO # /password:SYSDBA_password : optional SYSDBA password for remote server # ECHO # (by default uses one from the source code) # ECHO # other_files_to_compress : list of files that must be add to archive # ECHO # # ECHO #=============================================================================# REM ==== Server ==================================================================== SET gbak="C:\Programs\FB25\bin\gbak.exe" SET ISC_USER=SYSDBA SET ISC_PASSWORD_LOCAL=masterkey SET ISC_PASSWORD_REMOTE= REM ==== Backup/restore preferences ================================================ SET temp_backup_dir=%TEMP% SET temp_restore_dir=%TEMP% SET backup_count=30 SET backup_space_limit=0 SET backup_ext=fbk SET garbage_collection=-g SET restore=0 REM ==== RAR ======================================================================= SET rar="C:\Program Files\WinRAR\rar.exe" SET rar_options=a -y -ep -idcd SET rar_password= SET rar_compress_ratio=2 REM ==== Mailer (see "Blat" at http://sourceforge.net/projects/blat) =============== SET blat="C:\Programs\Blat307\blat.exe" SET smtp_server=smtp.mailserver.ru SET mail_sender=foo@mailserver.ru SET mail_login=foo SET mail_password=1234 SET mail_receiver= SET mail_subject=Fail while database b/r REM ==== Other preferences ========================================================= SET include_logs_to_archive=1 SET net_send_receiver= SET error_log= REM ==== Define database location ================================================== SET full_db_specification=%~1 ECHO full_db_specification = %full_db_specification% REM Devide DB spec to network and local parts FOR /f "DELIMS=: TOKENS=1*" %%i IN ("%full_db_specification%") DO ( SET network=%%i SET local=%%j ) REM Test if spec. is alias with no network part IF "%local%" == "" ( SET network= SET local=%full_db_specification% ) REM Test if spec. is full specified file with no network part FOR /f "DELIMS=\ TOKENS=*" %%i IN ("%local%") DO IF "%local%" == "\%%i" ( SET network= SET local=%full_db_specification% ) ECHO network_specification = %network% IF "%network%" GTR "" ( REM Extract port from network spec (if exists) FOR /f "DELIMS=/ TOKENS=1*" %%i IN ("%network%") DO ( SET host=%%i SET port=%%j IF "%%j" GTR "" ( ECHO network_host = %%i ECHO network_port = %%j ) ) ) REM Test if DB is local or remote SET service_mgr_host=localhost SET is_local_db=1 IF "%network%" GTR "" IF "%host%" NEQ "127.0.0.1" IF /i "%host%" NEQ "localhost" SET is_local_db=0 IF %is_local_db% == 1 IF "%network%" GTR "" SET service_mgr_host=%network% ECHO local_db_specification = %local% IF "%local%" == "" ( SET fail=Param #1 {DB specification} missing! GOTO finish ) REM Extract file (or alias) from local part of spec. FOR /f %%i IN ("%local%") DO ( SET local_path=%%~dpi SET local_file_or_alias=%%~nxi ) IF "%local%" NEQ "%local_file_or_alias%" ( ECHO local_path = %local_path% REM Check DB file exists for local, not aliased specification IF %is_local_db% == 1 IF NOT EXIST "%local%" ( SET fail=Local DB file %local% not found! GOTO finish ) ) ECHO local_db_file_or_alias = %local_file_or_alias% REM ==== Define result directory =================================================== SET result_dir=%~2 ECHO result_dir = %result_dir% IF "%result_dir%" == "" ( SET fail=Param #2 {backup collecting directory} missing! GOTO finish ) REM Cut the result dir if it is in path-style (ends with separator) IF "%result_dir:~-1%" == "\" SET result_dir=%result_dir:~0,-1% REM Try to create the result directory if it is not exists yet IF NOT EXIST "%result_dir%" ( MD "%result_dir%" IF NOT EXIST "%result_dir%" ( SET fail=Cannot create backup collecting directory! GOTO finish ) ) REM Test if it is local or remote directory (elementary, may get wrong answer) SET is_local_result_dir=1 IF "%result_dir:~0,2%" == "\\" SET is_local_result_dir=0 REM ==== Use other command line options ============================================ :loop_options SHIFT SET next_param=%~2 IF "%next_param%" == "" GOTO print_options SET prefix=%next_param:~0,1% IF "%prefix%" == "/" SET next_param=%next_param:~1% IF "%prefix%" == "-" SET next_param=%next_param:~1% IF "%next_param%" GTR "" ( FOR /f "DELIMS=: TOKENS=1*" %%i IN ("%next_param%") DO ( SET value=%%j IF /i "%%i" == "count" IF "%%j" GTR "" GOTO count IF /i "%%i" == "space" IF "%%j" GTR "" GOTO space IF /i "%%i" == "gc" GOTO gc IF /i "%%i" == "restore" GOTO restore IF /i "%%i" == "compress" IF "%%j" GTR "" GOTO compress IF /i "%%i" == "password" IF "%%j" GTR "" GOTO password IF EXIST "%next_param%" GOTO add_file_to_compress IF "%prefix%" GTR "/" GOTO add_file_to_compress ECHO unknown param found: %next_param% GOTO loop_options ) ) ELSE ( ECHO empty param found! GOTO loop_options ) REM ==== Define file count in the result dir ======================================= :count SET /a backup_count=0+%value% GOTO loop_options REM ==== Define allowed backup space limit ========================================= :space SET suffix=%value:~-1% IF "%suffix%" GTR "9" ( SET value=%value:~0,-1% IF /i "%suffix%" == "K" ( SET file_size_shift=0 SET /a value*=1000 ) IF /i "%suffix%" == "M" ( SET file_size_shift=3 SET /a value*=1000 ) IF /i "%suffix%" == "G" ( SET file_size_shift=6 SET /a value*=1000 ) ) SET /a backup_space_limit=0+%value% GOTO loop_options REM ==== Define need of garbage collection ========================================= :gc SET garbage_collection= IF "%value%" == "0" SET garbage_collection=-g IF /i "%value%" == "N" SET garbage_collection=-g IF /i "%value%" == "NO" SET garbage_collection=-g IF /i "%value%" == "OFF" SET garbage_collection=-g GOTO loop_options REM ==== Define need of test restore =============================================== :restore SET restore=1 IF "%value%" == "0" SET restore=0 IF /i "%value%" == "N" SET restore=0 IF /i "%value%" == "NO" SET restore=0 IF /i "%value%" == "OFF" SET restore=0 GOTO loop_options REM ==== Define need of backup compression and compress ratio ====================== :compress IF "%value%" GEQ "0" IF "%value%" LEQ "5" SET rar_compress_ratio=%value% GOTO loop_options REM ==== Define SYSDBA password (in addition or for replace source code given) ===== :password if "%ISC_PASSWORD_LOCAL%" GTR "" if "%ISC_PASSWORD_REMOTE%" GTR "" ( SET ISC_PASSWORD_LOCAL=%value% SET ISC_PASSWORD_REMOTE=%value% ) if "%ISC_PASSWORD_LOCAL%" == "" SET ISC_PASSWORD_LOCAL=%value% if "%ISC_PASSWORD_REMOTE%" == "" SET ISC_PASSWORD_REMOTE=%value% GOTO loop_options REM ==== Define file list to compress (in addition to backup and maybe logs) ======= :add_file_to_compress IF "%backup_files%" == "" ( SET backup_files="%next_param%" ) ELSE ( SET backup_files=%backup_files% "%next_param%" ) GOTO loop_options REM ==== Print predefined or recognized in command line options ==================== :print_options IF %backup_count% GTR 0 ( ECHO backup_count = %backup_count% ) ELSE ( ECHO backup_count = OFF ) IF "%file_size_shift%" == "" SET file_size_shift=0 IF %backup_space_limit% GTR 0 ( IF %file_size_shift% == 6 ( ECHO backup_space_limit = %backup_space_limit% Mb ) ELSE IF %file_size_shift% == 3 ( ECHO backup_space_limit = %backup_space_limit% Kb ) ELSE ECHO backup_space_limit = %backup_space_limit% bytes ) ELSE ( ECHO backup_space_limit = OFF ) IF "%garbage_collection%" == "-g" ( ECHO garbage_collection_flag = OFF ) ELSE ( ECHO garbage_collection_flag = ON ) IF %restore% == 0 ( ECHO test_restore_flag = OFF ) ELSE ( ECHO test_restore_flag = ON ) IF %rar_compress_ratio% == 0 ( ECHO backup_compressing = OFF ) ELSE ( ECHO backup_compressing = ON, RAR-ratio=%rar_compress_ratio% ) REM ==== Define backup file and backup log ========================================= SET datetime=%date:~-2%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2% SET finish_file=%result_dir%\%local_file_or_alias%.%datetime: =0%.%backup_ext% SET direct_backup=0 IF %rar_compress_ratio% == 0 ( IF %is_local_result_dir% == 1 SET direct_backup=1 IF %restore% == 0 SET direct_backup=1 ) IF %direct_backup% == 1 ( SET backup_file=%finish_file% ) ELSE ( SET backup_file=%temp_backup_dir%\%local_file_or_alias%.%backup_ext% IF NOT EXIST "%temp_backup_dir%" ( MD "%temp_backup_dir%" IF NOT EXIST "%temp_backup_dir%" ( SET fail=Cannot create backup directory! GOTO finish ) ) ) ECHO backup_file = %backup_file% SET backup_log=%result_dir%\%local_file_or_alias%.backup.log ECHO backup_log = %backup_log% REM ==== Define restore file and restore log ======================================= SET restore_file=%temp_restore_dir%\%local_file_or_alias%.testrest IF %restore% GTR 0 ( IF NOT EXIST "%temp_restore_dir%" ( MD "%temp_restore_dir%" IF NOT EXIST "%temp_restore_dir%" ( ECHO temp_restore_dir = %temp_restore_dir% SET fail=Cannot create restore directory! GOTO finish ) ) ECHO restore_file = %restore_file% SET restore_log=%result_dir%\%local_file_or_alias%.restore.log ) IF "%restore_log%" GTR "" ( ECHO restore_log = %restore_log% ) else ( SET restore_log=just_a_stub ) REM ==== Define compresed file ===================================================== SET compressed_file=%finish_file%.rar IF %rar_compress_ratio% GTR 0 ( ECHO compressed_file = %compressed_file% SET finish_file=%compressed_file% ) REM ==== Delete not actual files (over defined count) ============================== SET /a over=%backup_count%-1 IF %backup_count% == 1 ( ECHO deleting_old_files = %result_dir%\%local_file_or_alias%.*.%backup_ext%* DEL "%result_dir%\%local_file_or_alias%.*.%backup_ext%*" /q ) ELSE IF %backup_count% GTR 1 ( FOR /f "SKIP=%over%" %%f IN ('DIR "%result_dir%\%local_file_or_alias%.*.%backup_ext%*" /a:-D /b /o:-N 2^>NUL') DO ( IF EXIST "%result_dir%\%%f" ( ECHO deleting_old_file = %result_dir%\%%f DEL "%result_dir%\%%f" /q ) ) ) REM ==== Perform backup ============================================================ IF EXIST "%backup_log%" DEL "%backup_log%" /q ECHO backup_start = %date% %time:~0,8% SET is_local_backup=0 IF %is_local_db% == 1 ( IF %is_local_result_dir% == 1 SET is_local_backup=1 IF %direct_backup% == 0 SET is_local_backup=1 SET ISC_PASSWORD=%ISC_PASSWORD_LOCAL% ) ELSE ( SET ISC_PASSWORD=%ISC_PASSWORD_REMOTE% ) IF "%rar_password%" == "" SET rar_password=%ISC_PASSWORD% IF %is_local_backup% == 1 ( ECHO %gbak% -b %garbage_collection% -se %service_mgr_host%:service_mgr %local% "%backup_file%" -v -y "%backup_log%" %gbak% -b %garbage_collection% -se %service_mgr_host%:service_mgr %local% "%backup_file%" -v >"%backup_log%" 2>&1 ) ELSE ( ECHO %gbak% -b %garbage_collection% "%full_db_specification%" "%backup_file%" -v -y "%backup_log%" %gbak% -b %garbage_collection% "%full_db_specification%" "%backup_file%" -v >"%backup_log%" 2>&1 ) IF %ERRORLEVEL% GTR 0 ( IF EXIST "%backup_log%" ( SET fail=Backup fail! See %backup_log% for details. ) ELSE ( SET fail=Backup fail! ) GOTO finish ) IF NOT EXIST "%backup_log%" ( SET fail=Backup fail! GOTO finish ) REM ==== Perform test restore ====================================================== IF %restore% GTR 0 ( IF EXIST "%restore_log%" DEL "%restore_log%" /q IF "%ISC_PASSWORD_LOCAL%" GTR "" ( SET ISC_PASSWORD=%ISC_PASSWORD_LOCAL% ) ELSE ( SET ISC_PASSWORD=%ISC_PASSWORD_REMOTE% ) ECHO restore_start = %date% %time:~0,8% ECHO %gbak% -rep -se %service_mgr_host%:service_mgr "%backup_file%" "%restore_file%" -v -y "%restore_log%" %gbak% -rep -se %service_mgr_host%:service_mgr "%backup_file%" "%restore_file%" -v >"%restore_log%" 2>&1 IF %ERRORLEVEL% GTR 0 ( IF EXIST "%restore_log%" ( SET fail=Test restore fail! See %restore_log% for details. ) ELSE ( SET fail=Test restore fail! ) GOTO finish ) IF NOT EXIST "%restore_log%" ( SET fail=Test restore fail! GOTO finish ) ) REM ==== Perform RAR-compression or copy backup into destination dir =============== IF "%rar_password%" GTR "" SET rar_password=-p%rar_password% SET rar_options=%rar_options% -m%rar_compress_ratio% SET backup_files="%backup_file%" %backup_files% IF %include_logs_to_archive% == 1 ( IF %restore% GTR 0 ( SET backup_files=%backup_files% "%backup_log%" "%restore_log%" ) ELSE ( SET backup_files=%backup_files% "%backup_log%" ) ) IF %rar_compress_ratio% GTR 0 ( ECHO compressing_start = %date% %time:~0,8% ECHO %rar% %rar_options% "%compressed_file%" %backup_files% %rar% %rar_options% %rar_password% "%compressed_file%" %backup_files% IF %ERRORLEVEL% GTR 0 ( SET fail=Compression fail! GOTO finish ) ) ELSE IF %direct_backup% == 0 ( ECHO copying_start = %date% %time:~0,8% ECHO COPY "%backup_file%" "%finish_file%" COPY "%backup_file%" "%finish_file%" ) REM ==== Delete not actual files (over defined space) ============================== IF %backup_space_limit% GTR 0 ( SETLOCAL EnableDelayedExpansion IF %ERRORLEVEL% GTR 0 ( ECHO You must enable var delayed expansion by CMD.EXE /V:ON or at registry key ECHO Software\Microsoft\Command Processor\DelayedExpansion: HKLM or HKCU GOTO finish ) FOR /f %%f IN ('DIR "%result_dir%\%local_file_or_alias%.*.%backup_ext%*" /a:-D /b /o:-N') DO ( FOR %%i in ("%result_dir%\%%f") DO ( SET size=%%~zi IF %file_size_shift% == 3 SET size=!size:~0,-3! IF %file_size_shift% == 6 SET size=!size:~0,-6! IF "!size!" == "" SET size=0 IF "!total_space!" == "" ( SET /a total_space=!size! ) ELSE ( IF !total_space! LEQ %backup_space_limit% SET /a total_space+=!size! IF !total_space! GTR %backup_space_limit% ( ECHO deleting_overquota_file = %result_dir%\%%f DEL "%result_dir%\%%f" /q ) ) ) ) ) REM ==== Report when fail or exit ================================================== :finish IF "%fail%" == "" ( ECHO Finish = %date% %time:~0,8% GOTO exit ) ECHO #=============================================================================# ECHO # %fail% ECHO #=============================================================================# SET fail=%fail%, DB: %full_db_specification%, Dest: %result_dir% IF "%net_send_receiver%" GTR "" ( ECHO NET SEND %net_send_receiver% "%fail%" NET SEND %net_send_receiver% "%fail%" ) IF "%blat%" GTR "" IF "%smtp_server%" GTR "" IF "%mail_sender%" GTR "" IF "%mail_login%" GTR "" IF "%mail_receiver%" GTR "" ( ECHO %blat% -to "%mail_receiver%" -subject "%mail_subject%" -body "%fail%" -server %smtp_server% -f "%mail_sender%" -u "%mail_login%" -pw "*******" %blat% -to "%mail_receiver%" -subject "%mail_subject%" -body "%fail%" -server %smtp_server% -f "%mail_sender%" -u "%mail_login%" -pw "%mail_password%" ) SET time_ex=%time: =0% IF "%error_log%" GTR "" ( ECHO %date% %time_ex:~0,8% %fail% >> "%error_log%" ) EXIT /b 1 :exit 

рдореИрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рд░рд▓ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдХрд░ рдЙрддреНрдкрдиреНрди рд▓реЙрдЧ рднреА рджреВрдВрдЧрд╛: рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреБрдВрдЬреА рдирд╣реАрдВ, рд╕рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░, рдХреЗрд╡рд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрддрд╛ рдФрд░ рдЧрдВрддрд╡реНрдп рд╕реНрдерд╛рди рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ
fb_backup.bat localhost: p: \ MSO \ DB \ MS_ORDERS.FDB \\ 192.168.1.1 \ disk_a1 \ Exchange> fb_backup.log
 #=============================================================================# # # # Firebird/InterBase database backup, test restore, zip and rotate script # # Ver 3.2.7 (11.11.2012) # # # # Author: arni (email:arnisoft at rambler dot ru) # # # # Format: # # FB_BACKUP [host[/port]:][path]db_file_or_alias result_dir # # [/count:backup_count] [/space:backup_space_limit] [/gc] # # [/restore] [/compress:level] [/password:SYSDBA_password] # # [other_files_to_compress [...]] # # # # Input params: # # [host[/port]:][path] : local or network, full-specified path or alias # # db_file_or_alias to the source database # # result_dir : result backup collecting directory # # /count:backup_count : backup file number to keep (30 by default) # # /space:backup_space_limit : total backup size in bytes (not use by default) # # you can use suffixes K, M or G. # # /gc : need to collect garbage in DB (OFF by default) # # /restore : need to do test restore (OFF by default) # # /compress:level : compress ratio for RAR (2 by default): # # 0: not compress, 1: fastest, 2: fast, # # 3: normal, 4: good, 5: best # # /password:SYSDBA_password : optional SYSDBA password for remote server # # (by default uses one from the source code) # # other_files_to_compress : list of files that must be add to archive # # # #=============================================================================# full_db_specification = localhost:p:\MSO\DB\MS_ORDERS.FDB network_specification = localhost local_db_specification = p:\MSO\DB\MS_ORDERS.FDB local_path = p:\MSO\DB\ local_db_file_or_alias = MS_ORDERS.FDB result_dir = \\192.168.1.1\disk_a1\ backup_count = 30 backup_space_limit = OFF garbage_collection_flag = OFF test_restore_flag = OFF backup_compressing = ON, RAR-ratio=2 backup_file = C:\WINDOWS\TEMP\MS_ORDERS.FDB.fbk backup_log = \\192.168.1.1\disk_a1\\MS_ORDERS.FDB.backup.log compressed_file = \\192.168.1.1\disk_a1\\MS_ORDERS.FDB.121111_1621.fbk.rar backup_start = 11.11.2012 16:21:48 "C:\Programs\FB25\bin\gbak.exe" -b -g -se localhost:service_mgr p:\MSO\DB\MS_ORDERS.FDB "C:\WINDOWS\TEMP\MS_ORDERS.FDB.fbk" -v -y "\\192.168.1.1\disk_a1\\MS_ORDERS.FDB.backup.log" compressing_start = 11.11.2012 16:21:51 "C:\Program Files\WinRAR\rar.exe" a -y -ep -idcd -m2 "\\192.168.1.1\disk_a1\\MS_ORDERS.FDB.121111_1621.fbk.rar" "C:\WINDOWS\TEMP\MS_ORDERS.FDB.fbk" "\\192.168.1.1\disk_a1\\MS_ORDERS.FDB.backup.log"   \\192.168.1.1\disk_a1\\MS_ORDERS.FDB.121111_1621.fbk.rar  C:\WINDOWS\TEMP\MS_ORDERS.FDB.fbk 6% 12% 18% 24% 30% 36% 42% 48% 54% 60% 66% 72% 78% 84% 86% OK  \\192.168.1.1\disk_a1\\MS_ORDERS.FDB.backup.log 92% 98%100% OK Finish = 11.11.2012 16:21:51 

рдЖрдЗрдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ:
рд╣реИрдбрд░ рднрд╛рдЧ
рд╣реЗрдбрд░ рдореЗрдВ рдСрдерд░рд╢рд┐рдк, рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдмрд╛рдд рдХреЙрд▓ рдлреЙрд░реНрдореЗрдЯ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИ: рдХреМрди рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдмреБрдирд┐рдпрд╛рджреА рд╣реИрдВ, рдЬреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╡реИрдХрд▓реНрдкрд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд┐рд╕реА рднреА рдХреНрд░рдо рдореЗрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреБрдВрдЬреА рдХреЗ рдорд╛рдирдХ рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░реНрд╡рд╡рд░реНрддреА рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ: рдПрдХ рдЖрдЧреЗ рд╕реНрд▓реИрд╢ [/], рдпрд╛ рдПрдХ рдбреИрд╢ [-]ред
 @CLS @ECHO OFF ECHO #=============================================================================# ECHO # # ECHO # Firebird/InterBase database backup, test restore, zip and rotate script # ECHO # Ver 3.2.8 (26.01.2013) # ECHO # # ECHO # Author: arni (email:arnisoft at rambler dot ru) # ECHO # # ECHO # Format: # ECHO # FB_BACKUP [host[/port]:][path]db_file_or_alias result_dir # ECHO # [/count:backup_count] [/space:backup_space_limit] [/gc] # ECHO # [/restore] [/compress:level] [/password:SYSDBA_password] # ECHO # [other_files_to_compress [...]] # ECHO # # ECHO # Input params: # ECHO # [host[/port]:][path] : local or network, full-specified path or alias # ECHO # db_file_or_alias to the source database # ECHO # result_dir : result backup collecting directory # ECHO # /count:backup_count : backup file number to keep (30 by default) # ECHO # /space:backup_space_limit : total backup size in bytes (not use by default) # ECHO # you can use suffixes K, M or G. # ECHO # /gc : need to collect garbage in DB (OFF by default) # ECHO # /restore : need to do test restore (OFF by default) # ECHO # /compress:level : compress ratio for RAR (2 by default): # ECHO # 0: not compress, 1: fastest, 2: fast, # ECHO # 3: normal, 4: good, 5: best # ECHO # /password:SYSDBA_password : optional SYSDBA password for remote server # ECHO # (by default uses one from the source code) # ECHO # other_files_to_compress : list of files that must be add to archive # ECHO # # ECHO #=============================================================================# 

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг
рдпрд╣рд╛рдБ рд╣рдо рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ 5 рдмреНрд▓реЙрдХ рджреЗрдЦрддреЗ рд╣реИрдВ:
  • рд╕рд░реНрд╡рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕;
  • рдмреА / рдЖрд░ рдорд╛рдкрджрдВрдбреЛрдВ;
  • рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕;
  • рдореЗрд▓рд░ рд╡рд┐рдХрд▓реНрдк;
  • рдЕрдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ;
 REM ==== Server ==================================================================== SET gbak="C:\Programs\FB25\bin\gbak.exe" SET ISC_USER=SYSDBA SET ISC_PASSWORD_LOCAL=masterkey SET ISC_PASSWORD_REMOTE= REM ==== Backup/restore preferences ================================================ SET temp_backup_dir=%TEMP% SET temp_restore_dir=%TEMP% SET backup_count=30 SET backup_space_limit=0 SET backup_ext=fbk SET garbage_collection=-g SET restore=0 REM ==== RAR ======================================================================= SET rar="C:\Program Files\WinRAR\rar.exe" SET rar_options=a -y -ep -idcd SET rar_password= SET rar_compress_ratio=2 REM ==== Mailer (see "Blat" at http://sourceforge.net/projects/blat) =============== SET blat="C:\Programs\Blat307\blat.exe" SET smtp_server=smtp.mailserver.ru SET mail_sender=foo@mailserver.ru SET mail_login=foo SET mail_password=1234 SET mail_receiver= SET mail_subject=Fail while database b/r REM ==== Other preferences ========================================================= SET include_logs_to_archive=1 SET net_send_receiver= SET error_log= 
рдЬрд╣рд╛рдВ:
  • gbak - рд╕рд░реНрд╡рд░ рдмрдВрдбрд▓ рд╕реЗ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдорд╛рд░реНрдЧ;
  • ISC_USER - рд╡рд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд┐рд╕рдХреА рдУрд░ рд╕реЗ b / r рд╣реЛрдЧрд╛;
  • ISC_PASSWORD_LOCAL - рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдЪрдпрдирд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдкрд╛рд╕рд╡рд░реНрдб;
  • ISC_PASSWORD_REMOTE - рд░рд┐рдореЛрдЯ рдорд╢реАрди рдкрд░ рдЪрдпрдирд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдкрд╛рд╕рд╡рд░реНрдб (рдкреИрд░рд╛рдореАрдЯрд░ / рдкрд╛рд╕рд╡рд░реНрдб рдкрд╛рд╕ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ: xxxxxxxx);
  • temp_backup_dir - рдЧрдВрддрд╡реНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмреИрдХрдЕрдк рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛; рдПрдХ рднреМрддрд┐рдХ рдбрд┐рд╕реНрдХ рдЪреБрдирдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдЬреЛ рдореВрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ;
  • temp_restore_dir - рд╡рд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрд╣рд╛рдБ рдкрд░реАрдХреНрд╖рдг рдкреБрдирд░реНрд╕реНрдерд╛рдкрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛; рдПрдХ рднреМрддрд┐рдХ рдбрд┐рд╕реНрдХ рдЪреБрдирдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдЬреЛ рдореВрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рдмреИрдХрдЕрдк рдлрд╝рд╛рдЗрд▓ рдХрд╣рд╛рдБ рд╣реИ, рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА;
  • backup_ext - рдмреИрдХрдЕрдк рдХреЗ рд╕рд╛рде рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди;
  • рдХрдЪрд░рд╛_рдХрд░рдг - gbak.exe рдХреБрдВрдЬреА, рдЬреЛ рдмреИрдХрдЕрдк рдХреЗ рджреМрд░рд╛рди рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ (рдпрд╣ / gc рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ);
  • рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ - рдкрд░реАрдХреНрд╖рдг рд╡рд╕реВрд▓реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЭрдВрдбрд╛ (рдпрд╣ / рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ);
  • rar_options - RAR рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреБрдВрдЬрд┐рдпрд╛рдБ: "a" - рд╕реЗрдХ; "-y" - рд╕рд╡рд╛рд▓ рдордд рдкреВрдЫреЛ; "-рдк" - рдмрд╛рд╣рд░ рдХреЗ рд░рд╛рд╕реНрддреЗ; "-idcd" - рдХреЙрдкреАрд░рд╛рдЗрдЯ рдФрд░ рддрддреНрдкрд░рддрд╛ рдХреЗ рдирд┐рд╢рд╛рди рдХреЗ рд╕рд╛рде рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд▓рд┐рдЯ рди рдХрд░реЗрдВ;
  • rar_password - рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб (рдпрджрд┐ рдпрд╣ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдлрд╛рдпрд░рдмрд░реНрдб рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ);
  • rar_compress_ratio - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрдкреАрдбрд╝рди рдЕрдиреБрдкрд╛рдд (рдпрд╣ / рд╕реЗрдХ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ: рд╕реНрддрд░ рдкреИрд░рд╛рдореАрдЯрд░)
  • blat - рдореЗрд▓рд░ рдХреЗ рд▓рд┐рдП рдкрде blat.exe;
  • smtp_server - рдПрд╕рдПрдордЯреАрдкреА рд╕рд░реНрд╡рд░ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЗрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛;
  • mail_sender - рдкреНрд░реЗрд╖рдХ рдХрд╛ рдореЗрд▓рд┐рдВрдЧ рдкрддрд╛;
  • mail_login - рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░реЗрд╖рдХ рд▓реЙрдЧрд┐рди;
  • mail_password - рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░реЗрд╖рдХ рдкрд╛рд╕рд╡рд░реНрдб;
  • mail_receiver - рдореЗрд▓рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХрд╛ рдореЗрд▓рд┐рдВрдЧ рдПрдбреНрд░реЗрд╕;
  • mail_subject - рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдХреЗ рд╣реЗрдбрд░;
  • рд╢рд╛рдорд┐рд▓ рд╣реИрдВ_рд▓реЙрдЧреНрд╕_рдЯреЛ_рдЖрд░реНрдЪрд┐рд╡ - рдЖрд░реНрдХ рдХреЗ рдЕрдВрджрд░ рдмреА / рдЖрд░ рд▓реЙрдЧ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЭрдВрдбрд╛;
  • net_send_receiver - рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рд╣реЛрд╕реНрдЯ рдирд╛рдо рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП NET SEND рдкрд░рд┐рд╡рд╣рди рд╡рд┐рдлрд▓рддрд╛ рдЕрд▓рд░реНрдЯ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛;
  • error_log - рдЕрд╕рдлрд▓ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреА рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓;

рд╕реНрд░реЛрдд рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░рд┐рднрд╛рд╖рд╛;
рдпрд╣рд╛рдБ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:
  • рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рдкрд╛рд░рд┐рдд рд╕реНрд░реЛрдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдкрдврд╝рдирд╛;
  • рд╣реЛрд╕реНрдЯ рдирд╛рдо, рдкреЛрд░реНрдЯ, рд╕реНрдерд╛рдиреАрдп рдкрде рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдпрд╛ рдЗрд╕рдХреЗ рдЙрдкрдирд╛рдо рдореЗрдВ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛;
  • рдХрдВрд╕реЛрд▓ рдкрд░ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдореБрджреНрд░рдг рднрд╛рдЧреЛрдВ;
  • рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдерд╛рдиреАрдп рдпрд╛ рджреВрд░рд╕реНрде рд╣реИ (рдпрд╣ рдмрд╛рдж рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрдЧрд╛, рдЬрдм рдХреНрд▓рд╛рд╕рд┐рдХ рдмреИрдХрдЕрдк рдпрд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреИрдХрдЕрдк рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░реЗрдВ);
 REM ==== Define database location ================================================== SET full_db_specification=%~1 ECHO full_db_specification = %full_db_specification% REM Devide DB spec to network and local parts FOR /f "DELIMS=: TOKENS=1*" %%i IN ("%full_db_specification%") DO ( SET network=%%i SET local=%%j ) REM Test if spec. is alias with no network part IF "%local%" == "" ( SET network= SET local=%full_db_specification% ) REM Test if spec. is full specified file with no network part FOR /f "DELIMS=\ TOKENS=*" %%i IN ("%local%") DO IF "%local%" == "\%%i" ( SET network= SET local=%full_db_specification% ) ECHO network_specification = %network% IF "%network%" GTR "" ( REM Extract port from network spec (if exists) FOR /f "DELIMS=/ TOKENS=1*" %%i IN ("%network%") DO ( SET host=%%i SET port=%%j IF "%%j" GTR "" ( ECHO network_host = %%i ECHO network_port = %%j ) ) ) REM Test if DB is local or remote SET service_mgr_host=localhost SET is_local_db=1 IF "%network%" GTR "" IF "%host%" NEQ "127.0.0.1" IF /i "%host%" NEQ "localhost" SET is_local_db=0 IF %is_local_db% == 1 IF "%network%" GTR "" SET service_mgr_host=%network% ECHO local_db_specification = %local% IF "%local%" == "" ( SET fail=Param #1 {DB specification} missing! GOTO finish ) REM Extract file (or alias) from local part of spec. FOR /f %%i IN ("%local%") DO ( SET local_path=%%~dpi SET local_file_or_alias=%%~nxi ) IF "%local%" NEQ "%local_file_or_alias%" ( ECHO local_path = %local_path% REM Check DB file exists for local, not aliased specification IF %is_local_db% == 1 IF NOT EXIST "%local%" ( SET fail=Local DB file %local% not found! GOTO finish ) ) ECHO local_db_file_or_alias = %local_file_or_alias% 

рдкрд░рд┐рдгрд╛рдореА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ (рдЬрд╣рд╛рдВ рдмреИрдХрдЕрдк рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ)
рдпрд╣рд╛рдБ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:
  • рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдкрд╛рд░рд┐рдд рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рдкрд░рд┐рдгрд╛рдореА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрдврд╝рдирд╛;
  • рдпрджрд┐ рдкрд░рд┐рдгрд╛рдореА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЧрд╛рдпрдм рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ;
  • рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕реНрдерд╛рди рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг: рд╕реНрдерд╛рдиреАрдп рдпрд╛ рджреВрд░рд╕реНрде (рдиреЗрдЯрд╡рд░реНрдХ) - рдЗрд╖реНрдЯрддрдо рдмреИрдХрдЕрдк рд░рдгрдиреАрддрд┐ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА;
 REM ==== Define result directory =================================================== SET result_dir=%~2 ECHO result_dir = %result_dir% IF "%result_dir%" == "" ( SET fail=Param #2 {backup collecting directory} missing! GOTO finish ) REM Cut the result dir if it is in path-style (ends with separator) IF "%result_dir:~-1%" == "\" SET result_dir=%result_dir:~0,-1% REM Try to create the result directory if it is not exists yet IF NOT EXIST "%result_dir%" ( MD "%result_dir%" IF NOT EXIST "%result_dir%" ( SET fail=Cannot create backup collecting directory! GOTO finish ) ) REM Test if it is local or remote directory (elementary, may get wrong answer) SET is_local_result_dir=1 IF "%result_dir:~0,2%" == "\\" SET is_local_result_dir=0 
рдЗрд╕ рдмреНрд▓реЙрдХ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛрдб рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╣реЛрдиреЗ рдкрд░ рд╡рд┐рдлрд▓рддрд╛ рдХрд╛ рд╕рд╛рд░ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмреНрд▓реЙрдХ рдореЗрдВред рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╣реИрдВрдбрд▓рд░ рд╕рднреА рдмрд╛рдж рдХреЗ рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЖрдЧреЗ рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдирдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред

рдмрд╛рдХреА рдЙрддреНрддреАрд░реНрдг рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрдврд╝рдирд╛
рдпрд╣рд╛рдБ рд╣рдо рдмреНрд▓реЙрдХ рджреЗрдЦрддреЗ рд╣реИрдВ:
  • рдЕрдЧрд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдкрдарди;
  • рдПрдХ рдирд╛рдо рдФрд░ рдореВрд▓реНрдп рдореЗрдВ рдПрдХ рдХреБрдВрдЬреА рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛;
  • рдкреНрд░рдореБрдЦ рдорд╛рдиреНрдпрддрд╛, рдЗрд╕рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг;
  • рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛;
  • рдкреНрд░рддрд┐рдпреЛрдВ рдХреА рдХреБрд▓ рдорд╛рддреНрд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛;
  • рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдЭрдВрдбреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди;
  • рдкрд░реАрдХреНрд╖рдг рд╡рд╕реВрд▓реА рдЭрдВрдбрд╛ рдкреНрд░рдмрдВрдзрди;
  • рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдкреАрдбрд╝рди рдЕрдиреБрдкрд╛рдд рдХреА рдкрд░рд┐рднрд╛рд╖рд╛;
  • рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП SYSDBA рдкрд╛рд╕рд╡рд░реНрдб рдХреА рдмрдЪрдд;
  • рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдкрдврд╝рдирд╛;
 REM ==== Use other command line options ============================================ :loop_options SHIFT SET next_param=%~2 IF "%next_param%" == "" GOTO print_options SET prefix=%next_param:~0,1% IF "%prefix%" == "/" SET next_param=%next_param:~1% IF "%prefix%" == "-" SET next_param=%next_param:~1% IF "%next_param%" GTR "" ( FOR /f "DELIMS=: TOKENS=1*" %%i IN ("%next_param%") DO ( SET value=%%j IF /i "%%i" == "count" IF "%%j" GTR "" GOTO count IF /i "%%i" == "space" IF "%%j" GTR "" GOTO space IF /i "%%i" == "gc" GOTO gc IF /i "%%i" == "restore" GOTO restore IF /i "%%i" == "compress" IF "%%j" GTR "" GOTO compress IF /i "%%i" == "password" IF "%%j" GTR "" GOTO password IF EXIST "%next_param%" GOTO add_file_to_compress IF "%prefix%" GTR "/" GOTO add_file_to_compress ECHO unknown param found: %next_param% GOTO loop_options ) ) ELSE ( ECHO empty param found! GOTO loop_options ) REM ==== Define file count in the result dir ======================================= :count SET /a backup_count=0+%value% GOTO loop_options REM ==== Define allowed backup space limit ========================================= :space SET suffix=%value:~-1% IF "%suffix%" GTR "9" ( SET value=%value:~0,-1% IF /i "%suffix%" == "K" ( SET file_size_shift=0 SET /a value*=1000 ) IF /i "%suffix%" == "M" ( SET file_size_shift=3 SET /a value*=1000 ) IF /i "%suffix%" == "G" ( SET file_size_shift=6 SET /a value*=1000 ) ) SET /a backup_space_limit=0+%value% GOTO loop_options REM ==== Define need of garbage collection ========================================= :gc SET garbage_collection= IF "%value%" == "0" SET garbage_collection=-g IF /i "%value%" == "N" SET garbage_collection=-g IF /i "%value%" == "NO" SET garbage_collection=-g IF /i "%value%" == "OFF" SET garbage_collection=-g GOTO loop_options REM ==== Define need of test restore =============================================== :restore SET restore=1 IF "%value%" == "0" SET restore=0 IF /i "%value%" == "N" SET restore=0 IF /i "%value%" == "NO" SET restore=0 IF /i "%value%" == "OFF" SET restore=0 GOTO loop_options REM ==== Define need of backup compression and compress ratio ====================== :compress IF "%value%" GEQ "0" IF "%value%" LEQ "5" SET rar_compress_ratio=%value% GOTO loop_options REM ==== Define SYSDBA password (in addition or for replace source code given) ===== :password if "%ISC_PASSWORD_LOCAL%" GTR "" if "%ISC_PASSWORD_REMOTE%" GTR "" ( SET ISC_PASSWORD_LOCAL=%value% SET ISC_PASSWORD_REMOTE=%value% ) if "%ISC_PASSWORD_LOCAL%" == "" SET ISC_PASSWORD_LOCAL=%value% if "%ISC_PASSWORD_REMOTE%" == "" SET ISC_PASSWORD_REMOTE=%value% GOTO loop_options REM ==== Define file list to compress (in addition to backup and maybe logs) ======= :add_file_to_compress IF "%backup_files%" == "" ( SET backup_files="%next_param%" ) ELSE ( SET backup_files=%backup_files% "%next_param%" ) GOTO loop_options 
рдиреЛрдЯ:
  • рдПрдХ рд░реЗрд╕реНрддрд░рд╛рдВ рдпрд╛ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдмреВрд▓рд┐рдпрди рдЭрдВрдбреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ: рдЧрд▓рдд = 0, рдПрди, рд╕рдВ, рдСрдл; рд╕рдЪ = 1, рд╡рд╛рдИ, рдпрд╕, рдСрдиред
  • рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХреА рдХреБрд▓ рдорд╛рддреНрд░рд╛ рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди рдХрдм рд╕реЗ рдЪреВрдБрдХрд┐ рдХрдорд╛рдВрдб рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдПрдБ 32-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХ рддрдХ рд╕реАрдорд┐рдд рд╣реЛрддреА рд╣реИрдВ, 1 GB рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рдорд╛рди рдкреНрд░рддреНрдпрдп рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ (K), рдореЗрдЧрд╛рдмрд╛рдЗрдЯ (M) рдпрд╛ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ (G) рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: / space: 1200K, / space: 280M, / space: 12Gред рдЗрд╕ рдмреНрд▓реЙрдХ рдореЗрдВ, рдЖрдк рдПрдХ рдХреЛрдб рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рднрдВрдбрд╛рд░рдг рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рдкреИрдорд╛рдиреЗ рдХреЛ рдХрд╛рдЯрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХрдорд╛рдВрдб рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ 32-рдмрд┐рдЯ рдЕрдВрдХрдЧрдгрд┐рдд рд╕реЗ рдЕрдзрд┐рдХ рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
  • рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдкрд╛рд╕рд╡рд░реНрдб рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рддреА рд╣реИ: рдпрджрд┐ рд╕реНрд░реЛрдд ISC_PASSWORD_LOCAL (рд╕реНрдерд╛рдиреАрдп) рдФрд░ рдЪрд░ ISC_PASSWORD_REMOTE (рджреВрд░рд╕реНрде) рдХреЗ рдорд╛рдиреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдореВрд▓реНрдп рдЗрди рджреЛрдиреЛрдВ рдЪрд░ рдХреЛ рдЦрддреНрдо рдХрд░ рджреЗрддрд╛ рд╣реИред рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ (рдпрджрд┐ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЪрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдореВрд▓реНрдп рдХреЗрд╡рд▓ рдЦрд╛рд▓реА рдЪрд░ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рднрд░рд╛ рд╣реБрдЖ рдЕрдкрдирд╛ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдореВрд▓реНрдп рдмрд░рдХрд░рд╛рд░ рд░рдЦрддрд╛ рд╣реИред
  • рд╕рдВрдкреАрдбрд╝рди (рдпрд╛ рдлрд╝рд╛рдЗрд▓ рдорд╛рд╕реНрдХ) рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╛рдЗрд▓реЗрдВ рдПрдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдХреБрдВрдЬреА рдкреНрд░рддреАрдХ [/] рдХреЗ рдмрд┐рдирд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ
рдпрд╣рд╛рдБ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:
  • рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди;
  • рдкреНрд░рддрд┐рдпрд╛рдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрд▓ рд╕реНрдерд╛рди рдХрд╛ рдЙрддреНрдкрд╛рджрди;
  • рдЖрдЙрдЯрдкреБрдЯ рдзреНрд╡рдЬ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣;
  • рдЭрдВрдбрд╛ рдЙрддреНрдкрд╛рджрди рдкрд░реАрдХреНрд╖рдг рд╡рд╕реВрд▓реА;
  • рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рдВрдХреЗрдд рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрдкреАрдбрд╝рди рдЕрдиреБрдкрд╛рдд рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖;
 REM ==== Print predefined or recognized in command line options ==================== :print_options IF %backup_count% GTR 0 ( ECHO backup_count = %backup_count% ) ELSE ( ECHO backup_count = OFF ) IF "%file_size_shift%" == "" SET file_size_shift=0 IF %backup_space_limit% GTR 0 ( IF %file_size_shift% == 6 ( ECHO backup_space_limit = %backup_space_limit% Mb ) ELSE IF %file_size_shift% == 3 ( ECHO backup_space_limit = %backup_space_limit% Kb ) ELSE ECHO backup_space_limit = %backup_space_limit% bytes ) ELSE ( ECHO backup_space_limit = OFF ) IF "%garbage_collection%" == "-g" ( ECHO garbage_collection_flag = OFF ) ELSE ( ECHO garbage_collection_flag = ON ) IF %restore% == 0 ( ECHO test_restore_flag = OFF ) ELSE ( ECHO test_restore_flag = ON ) IF %rar_compress_ratio% == 0 ( ECHO backup_compressing = OFF ) ELSE ( ECHO backup_compressing = ON, RAR-ratio=%rar_compress_ratio% ) 

рдХрд╛рдо рдлрд╝рд╛рдЗрд▓ рдкрд░рд┐рднрд╛рд╖рд╛
рдпрд╣рд╛рдБ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:
  • рдмреИрдХрдЕрдк рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЛ рд╣рдЯрд╛рдирд╛;
  • рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рд╣рдо рдЧрдВрддрд╡реНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдмреИрдХрдЕрдк рд▓реЗрдВрдЧреЗ, рдпрд╛ рдмрд╛рдж рдореЗрдВ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐, рд╕рдВрдкреАрдбрд╝рди, рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗред
  • рдмреИрдХрдЕрдк рдлрд╝рд╛рдЗрд▓ рдХреА рдкреВрд░реНрдг рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛;
  • рдмреИрдХрдЕрдк рд▓реЙрдЧ рдХреА рдкреВрд░реНрдг рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛;
  • рдореБрджреНрд░рдг рдХреА рдЧрдгрдирд╛ рдкреИрд░рд╛рдореАрдЯрд░;
  • рд░реЗрд╕реНрддрд░рд╛рдВ рдлрд╝рд╛рдЗрд▓ рдФрд░ рд░реЗрд╕реНрддрд░рд╛рдВ рд▓реЙрдЧ рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдФрд░ рдореБрджреНрд░рдг, рдЕрдЧрд░ рд░реЗрд╕реНрддрд░рд╛рдВ рдХрд╛ рдЭрдВрдбрд╛ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
  • рд╕рдВрдЧреНрд░рд╣ рдлрд╝рд╛рдЗрд▓ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдФрд░ рдореБрджреНрд░рдг, рдЕрдЧрд░ рд╕рдВрдкреАрдбрд╝рди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
 REM ==== Define backup file and backup log ========================================= SET datetime=%date:~-2%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2% SET finish_file=%result_dir%\%local_file_or_alias%.%datetime: =0%.%backup_ext% SET direct_backup=0 IF %rar_compress_ratio% == 0 ( IF %is_local_result_dir% == 1 SET direct_backup=1 IF %restore% == 0 SET direct_backup=1 ) IF %direct_backup% == 1 ( SET backup_file=%finish_file% ) ELSE ( SET backup_file=%temp_backup_dir%\%local_file_or_alias%.%backup_ext% IF NOT EXIST "%temp_backup_dir%" ( MD "%temp_backup_dir%" IF NOT EXIST "%temp_backup_dir%" ( SET fail=Cannot create backup directory! GOTO finish ) ) ) ECHO backup_file = %backup_file% SET backup_log=%result_dir%\%local_file_or_alias%.backup.log ECHO backup_log = %backup_log% REM ==== Define restore file and restore log ======================================= SET restore_file=%temp_restore_dir%\%local_file_or_alias%.testrest IF %restore% GTR 0 ( IF NOT EXIST "%temp_restore_dir%" ( MD "%temp_restore_dir%" IF NOT EXIST "%temp_restore_dir%" ( ECHO temp_restore_dir = %temp_restore_dir% SET fail=Cannot create restore directory! GOTO finish ) ) ECHO restore_file = %restore_file% SET restore_log=%result_dir%\%local_file_or_alias%.restore.log ) IF "%restore_log%" GTR "" ( ECHO restore_log = %restore_log% ) else ( SET restore_log=just_a_stub ) REM ==== Define compresed file ===================================================== SET compressed_file=%finish_file%.rar IF %rar_compress_ratio% GTR 0 ( ECHO compressed_file = %compressed_file% SET finish_file=%compressed_file% ) 

рдЧрдВрддрд╡реНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рддрд┐рдпрд╛рдВ рд╣рдЯрд╛рдПрдВ
 REM ==== Delete not actual files (over defined count) ============================== SET /a over=%backup_count%-1 IF %backup_count% == 1 ( ECHO deleting_old_files = %result_dir%\%local_file_or_alias%.*.%backup_ext%* DEL "%result_dir%\%local_file_or_alias%.*.%backup_ext%*" /q ) ELSE IF %backup_count% GTR 1 ( FOR /f "SKIP=%over%" %%f IN ('DIR "%result_dir%\%local_file_or_alias%.*.%backup_ext%*" /a:-D /b /o:-N 2^>NUL') DO ( IF EXIST "%result_dir%\%%f" ( ECHO deleting_old_file = %result_dir%\%%f DEL "%result_dir%\%%f" /q ) ) ) 

рдмреИрдХрдЕрдк рдирд┐рд╖реНрдкрд╛рджрди
рдпрд╣рд╛рдБ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:
  • рдкрд┐рдЫрд▓реЗ рдмреИрдХрдЕрдк рд▓реЙрдЧ рдХреЛ рд╣рдЯрд╛рдирд╛ (gbak.exe рдПрдХ рдкреБрд░рд╛рдиреА рд▓реЙрдЧ рдкрд░ рдареЛрдХрд░ рд▓рдЧрдиреЗ рдкрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рдПрдЧрд╛);
  • рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдерд╛рдиреАрдп рдпрд╛ рд░рд┐рдореЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реБрдП, рдкрд╛рд╕рд╡рд░реНрдб рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ;
  • рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕реНрдерд╛рди рдФрд░ рдмреИрдХрдЕрдк рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рд╕рдмрд╕реЗ рддреЗрдЬ рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреИрдХрдЕрдк, рдпрд╛ рдХреНрд▓рд╛рд╕рд┐рдХ рдмреИрдХрдЕрдк рдЕрдиреНрдпрдерд╛;
 REM ==== Perform backup ============================================================ IF EXIST "%backup_log%" DEL "%backup_log%" /q ECHO backup_start = %date% %time:~0,8% SET is_local_backup=0 IF %is_local_db% == 1 ( IF %is_local_result_dir% == 1 SET is_local_backup=1 IF %direct_backup% == 0 SET is_local_backup=1 SET ISC_PASSWORD=%ISC_PASSWORD_LOCAL% ) ELSE ( SET ISC_PASSWORD=%ISC_PASSWORD_REMOTE% ) IF "%rar_password%" == "" SET rar_password=%ISC_PASSWORD% IF %is_local_backup% == 1 ( ECHO %gbak% -b %garbage_collection% -se %service_mgr_host%:service_mgr %local% "%backup_file%" -v -y "%backup_log%" %gbak% -b %garbage_collection% -se %service_mgr_host%:service_mgr %local% "%backup_file%" -v >"%backup_log%" 2>&1 ) ELSE ( ECHO %gbak% -b %garbage_collection% "%full_db_specification%" "%backup_file%" -v -y "%backup_log%" %gbak% -b %garbage_collection% "%full_db_specification%" "%backup_file%" -v >"%backup_log%" 2>&1 ) IF %ERRORLEVEL% GTR 0 ( IF EXIST "%backup_log%" ( SET fail=Backup fail! See %backup_log% for details. ) ELSE ( SET fail=Backup fail! ) GOTO finish ) IF NOT EXIST "%backup_log%" ( SET fail=Backup fail! GOTO finish ) 

рдкрд░реАрдХреНрд╖рдг рд╡рд╕реВрд▓реА
рдпрд╣рд╛рдБ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:
  • рдкрд┐рдЫрд▓реЗ рд░реЗрд╕реНрддрд░рд╛рдВ рд▓реЙрдЧ рдХреЛ рд╣рдЯрд╛рдирд╛ (gbak.exe рдПрдХ рдкреБрд░рд╛рдиреА рд▓реЙрдЧ рдкрд░ рдареЛрдХрд░ рд▓рдЧрдиреЗ рдкрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рдПрдЧрд╛);
  • рд╡рд╕реВрд▓реА рдХрд░рдирд╛ (рд╣рдореЗрд╢рд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЗрд╕ рд╢рд╛рдЦрд╛ рдореЗрдВ рдмреИрдХрдЕрдк рдлрд╝рд╛рдЗрд▓ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рдмреЗрд╕ рджреЛрдиреЛрдВ рд╕реНрдерд╛рдиреАрдп рд╣реИрдВ);
 REM ==== Perform test restore ====================================================== IF %restore% GTR 0 ( IF EXIST "%restore_log%" DEL "%restore_log%" /q IF "%ISC_PASSWORD_LOCAL%" GTR "" ( SET ISC_PASSWORD=%ISC_PASSWORD_LOCAL% ) ELSE ( SET ISC_PASSWORD=%ISC_PASSWORD_REMOTE% ) ECHO restore_start = %date% %time:~0,8% ECHO %gbak% -rep -se %service_mgr_host%:service_mgr "%backup_file%" "%restore_file%" -v -y "%restore_log%" %gbak% -rep -se %service_mgr_host%:service_mgr "%backup_file%" "%restore_file%" -v >"%restore_log%" 2>&1 IF %ERRORLEVEL% GTR 0 ( IF EXIST "%restore_log%" ( SET fail=Test restore fail! See %restore_log% for details. ) ELSE ( SET fail=Test restore fail! ) GOTO finish ) IF NOT EXIST "%restore_log%" ( SET fail=Test restore fail! GOTO finish ) ) 
рдиреЛрдЯ:
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 2.0 рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрдВрдЯрд░рдмреЗрд╕, рдпрдлрд┐рд▓ рдпрд╛ рдлрд╛рдпрд░рдмрд░реНрдб рд╣реИ, рддреЛ рдЖрдкрдХреЛ .r рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдзреНрд╡рдЬ рдХреЛ .r рд╕реЗ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред

рд╕рдВрдЧреНрд░рд╣ рд╕рдВрдкреАрдбрд╝рди
рдпрд╣рд╛рдБ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:
  • рд╕рдВрдЧреНрд░рд╣ рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рд╕рдВрдкреАрдбрд╝рди рдЕрдиреБрдкрд╛рдд рд╕рд╣рд┐рдд рд╕рднреА rar рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣;
  • рд╕рдВрдкреАрдбрд╝рди рдХреЗ рд▓рд┐рдП рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣, рдЬрд┐рд╕рдореЗрдВ рдмреИрдХрдЕрдк, рд▓реЙрдЧ (рдпрджрд┐ рдкреЙрд▓рд┐рд╕реА рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдФрд░ рдЕрдиреНрдп рдлрд╛рдЗрд▓реЗрдВ (рдпрджрд┐ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд) рд╢рд╛рдорд┐рд▓ рд╣реИрдВ;
  • рдпрджрд┐ рд╕рдВрдкреАрдбрд╝рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕рдВрдкреАрдбрд╝рди рдХрд░реЗрдВ;
  • рдпрджрд┐ рд╕рдВрдкреАрдбрд╝рди рдЕрдХреНрд╖рдо рд╣реИ, рддреЛ рдмрд╕ рдмреИрдХрдЕрдк рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЧрдВрддрд╡реНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ (рдХреЗрд╡рд▓ рдЕрдЧрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдЗрд╕реЗ рд╢реБрд░реВ рдореЗрдВ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдерд╛);
 REM ==== Perform RAR-compression or copy backup into destination dir =============== IF "%rar_password%" GTR "" SET rar_password=-p%rar_password% SET rar_options=%rar_options% -m%rar_compress_ratio% SET backup_files="%backup_file%" %backup_files% IF %include_logs_to_archive% == 1 ( IF %restore% GTR 0 ( SET backup_files=%backup_files% "%backup_log%" "%restore_log%" ) ELSE ( SET backup_files=%backup_files% "%backup_log%" ) ) IF %rar_compress_ratio% GTR 0 ( ECHO compressing_start = %date% %time:~0,8% ECHO %rar% %rar_options% "%compressed_file%" %backup_files% %rar% %rar_options% %rar_password% "%compressed_file%" %backup_files% IF %ERRORLEVEL% GTR 0 ( SET fail=Compression fail! GOTO finish ) ) ELSE IF %direct_backup% == 0 ( ECHO copying_start = %date% %time:~0,8% ECHO COPY "%backup_file%" "%finish_file%" COPY "%backup_file%" "%finish_file%" ) 
рдиреЛрдЯ:
рдХрдИ рдЪрд░реНрдЪрд╛рдУрдВ рдореЗрдВ, рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рдЬрд╣рд╛рдВ рдмреИрдХрдЕрдк рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреА рд╕рдВрдкреАрдбрд╝рди рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, gbak.exe рдФрд░ rar.exe рдХреЛ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдкрд╣рд▓реЗ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╕реАрдзреЗ рджреВрд╕рд░реЗ рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдореА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИ: рдпрджрд┐ gbak.exe рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рддреЛ рдЕрдВрдд рдореЗрдВ рдПрдХ рд╢реВрдиреНрдп (рд╕рдлрд▓) рд░рд┐рдЯрд░реНрди рдХреЛрдб рд╡реИрд╕реЗ рднреА рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ rar.exe рдиреЗ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдФрд░ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдЙрди crumbs рдХреЛ рдмрдЪрд╛рдпрд╛, рдЬреЛ gbak.exe рдХреЗ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рдпрд╛рдиреА рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рди рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдЖрдкрдХреА рдмреИрдХрдЕрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддрдм рддрдХ рд╡рд┐рдлрд▓ рд░рд╣реЗрдЧреА рдЬрдм рддрдХ рдЖрдк рдПрдХ рдЯреВрдЯреЗ рд╣реБрдП рдмреИрдХрдЕрдк рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдЧрд▓рддреА рд╕реЗ рдкрд░рд┐рдгрд╛рдореА рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдкреЗрдиреА рдЖрдХрд╛рд░ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред

рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдбрд┐рд╕реНрдХ рдХреЛрдЯрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣рдЯрд╛рдПрдБ
рдпрд╣рд╛рдБ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:
  • рд╢реЗрд▓ рдореЗрдВ рдЪрд░ рдХреЗ рд╡рд┐рд▓рдВрдмрд┐рдд рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ (рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ рдФрд░ рдмреНрд▓реЙрдХ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ), рдЬреЛ рдХреБрд▓ рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ;
  • рд╕рдмрд╕реЗ рдкреБрд░рд╛рдиреЗ рд╕реЗ рд╕рдмрд╕реЗ рдкреБрд░рд╛рдиреЗ рдореЗрдВ рд╕рдВрдЪрд┐рдд рдмреИрдХрдЕрдк рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ, рдФрд░ рдЙрдирдХреА рдХреБрд▓ рдорд╛рддреНрд░рд╛ рдХреА рдЧрд┐рдирддреАред рдЬрдм рд╕реАрдорд╛ рдкрд╛рд░ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддрдм рддрдХ рдмрдЪреА рд╣реБрдИ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред , 32- ( ), .
 REM ==== Delete not actual files (over defined space) ============================== IF %backup_space_limit% GTR 0 ( SETLOCAL EnableDelayedExpansion IF %ERRORLEVEL% GTR 0 ( ECHO You must enable var delayed expansion by CMD.EXE /V:ON or at registry key ECHO Software\Microsoft\Command Processor\DelayedExpansion: HKLM or HKCU GOTO finish ) FOR /f %%f IN ('DIR "%result_dir%\%local_file_or_alias%.*.%backup_ext%*" /a:-D /b /o:-N') DO ( FOR %%i in ("%result_dir%\%%f") DO ( SET size=%%~zi IF %file_size_shift% == 3 SET size=!size:~0,-3! IF %file_size_shift% == 6 SET size=!size:~0,-6! IF "!size!" == "" SET size=0 IF "!total_space!" == "" ( SET /a total_space=!size! ) ELSE ( IF !total_space! LEQ %backup_space_limit% SET /a total_space+=!size! IF !total_space! GTR %backup_space_limit% ( ECHO deleting_overquota_file = %result_dir%\%%f DEL "%result_dir%\%%f" /q ) ) ) ) ) 

рдЕрдВрддрд┐рдо рднрд╛рдЧ
:
  • , : , , ;
  • NET SEND, ;
  • (, , , ), ;
  • - , ;
  • тАФ , ( тАФ ), ;
 REM ==== Report when fail or exit ================================================== :finish IF "%fail%" == "" ( ECHO Finish = %date% %time:~0,8% GOTO exit ) ECHO #=============================================================================# ECHO # %fail% ECHO #=============================================================================# SET fail=%fail%, DB: %full_db_specification%, Dest: %result_dir% IF "%net_send_receiver%" GTR "" ( ECHO NET SEND %net_send_receiver% "%fail%" NET SEND %net_send_receiver% "%fail%" ) IF "%blat%" GTR "" IF "%smtp_server%" GTR "" IF "%mail_sender%" GTR "" IF "%mail_login%" GTR "" IF "%mail_receiver%" GTR "" ( ECHO %blat% -to "%mail_receiver%" -subject "%mail_subject%" -body "%fail%" -server %smtp_server% -f "%mail_sender%" -u "%mail_login%" -pw "*******" %blat% -to "%mail_receiver%" -subject "%mail_subject%" -body "%fail%" -server %smtp_server% -f "%mail_sender%" -u "%mail_login%" -pw "%mail_password%" ) SET time_ex=%time: =0% IF "%error_log%" GTR "" ( ECHO %date% %time_ex:~0,8% %fail% >> "%error_log%" ) EXIT /b 1 :exit 

рдореИрдВ рдХреБрдЫ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рджреВрдВрдЧрд╛ рдЬреЛ рд╣рдорд╛рд░реЗ рджреИрдирд┐рдХ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ "рд░рд╛рдд рдХрд╛ рдмреИрдХрдЕрдк" рдФрд░ "рджрд┐рди рдХрд╛ рдмреИрдХрдЕрдк" рдХрд╣реВрдВрдЧрд╛ред
рд░рд╛рдд рдореЗрдВ, рдХреЛрдИ рднреА рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рд▓рдЧрднрдЧ рдХреЛрдИ рднреА рдирд╣реАрдВ рд╣реИред рд╕рд░реНрд╡рд░ рд╕рдВрд╕рд╛рдзрди рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдкреВрд░реНрдг рдмреА / рдЖрд░ рдЪрдХреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдЕрд░реНрдерд╛рддреН:
- рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдмреИрдХрдЕрдк;
- рдкрд░реАрдХреНрд╖рдг рд╡рд╕реВрд▓реА;
- рдмреИрдХрдЕрдк рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕рдВрдкреАрдбрд╝рди, рдФрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрдкреАрдбрд╝рди;
рдпрд╣рд╛рдБ "рд░рд╛рдд рдХрд╛ рдмреИрдХрдЕрдк" рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
 fb_backup.bat localhost:Orma4 d:\Bak /count:99 /space:500G /compress:5 /restore /gc d:\Orma.exe >C:\Orma4.log 2>&1 

рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ "рджрд┐рди рдХрд╛ рдмреИрдХрдЕрдк" рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЬрд▓реНрджреА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рддрдирд╛ рдХрд┐ рд╕рд░реНрд╡рд░ рдХреЛ рддрдирд╛рд╡рдкреВрд░реНрдг рдХрд░рдирд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рд╡рд┐рдзрд┐ рд╕реЗ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ рдмреИрдХрдЕрдк рдлрд╝рд╛рдЗрд▓:
 fb_backup.bat localhost:Orma4 d:\Bak /count:99 /space:500G /compress:1 >C:\Orma4.log 2>&1 

рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡рд░ рдкрд░ рдмреИрдХрдЕрдк рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ (рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ "рдПрдХ рдЯреЛрдХрд░реА рдореЗрдВ рд╕рднреА рдЕрдВрдбреЗ рд╕реНрдЯреЛрд░ рдирд╣реАрдВ рдХрд░реЗрдВ)ред" рдпрд╣ рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЗ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рд╕реЗрдЯ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИ: рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдХрд╕рдХрд░ рдХрд╛рдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдЖрдорддреМрд░ рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рддреЗрдЬрд╝реА рд╕реЗ рдкреАрд╕рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрд╕рдВрднрд╡ рд╣реЛ, рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдп рдСрдкрд░реЗрд╢рди (рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣, рдкрд░реАрдХреНрд╖рдг рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рдЖрджрд┐) рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╡реЗ рдкрд╣рд▓реЗ рд╣реА рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрд╡рд░ рдкрд░ "рд░рд╛рдд рдХрд╛ рдмреИрдХрдЕрдк" рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ:
 fb_backup.bat localhost:Orma4 \\ifs\E$\backup\FirebirdDB /count:99 /space:300G /compress:5 >C:\Orma4.log 2>&1 

рдЬреЛ рд▓реЛрдЧ рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХреЗ рдЕрдВрдд рдХрд╛ рдорддрд▓рдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЙрдЯрдкреБрдЯ (рд╕реНрдЯрдбрдЖрдЙрдЯ) рдХреЛ рдПрдХ рдлрд╛рдЗрд▓ рдореЗрдВ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рдирд╛ рдФрд░ рдЙрд╕реА рдлрд╛рдЗрд▓ рдореЗрдВ рдПрд░рд░ рдЖрдЙрдЯрдкреБрдЯ (рд╕реНрдЯрдбрд░) рднреЗрдЬрдирд╛ рд╣реИред
  >C:\Orma4.log 2>&1 


рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ред


Source: https://habr.com/ru/post/In158575/


All Articles