Вопрос касается выполнения бэкапа и последующей проверки копии (путём восстановления). Вот что в логе:
2017-01-29 03:19:37 starting backup 1
2017-01-29 04:11:46 INFDATA.DAT 1 Backup OK
2017-01-29 04:11:51 INFINITYUSERS.DAT 1 Backup OK
2017-01-29 04:26:16 INFCRMDATA.DAT 1 Backup OK
2017-01-29 04:27:47 ADDRESS.DAT 1 Backup OK
2017-01-29 05:53:45 INFDATA.DAT 1 Recovery test OK
2017-01-29 05:53:54 INFINITYUSERS.DAT 1 Recovery test OK
2017-01-29 05:55:07 INFCRMDATA.DAT 1 Recovery test OK
2017-01-29 05:55:55 ADDRESS.DAT 1 Recovery test OK
Странность в том, что INFDATA.DAT около 8 гигов, INFCRMDATA.DAT около 2 гигов. Если первый обрабатывается правдоподобно долго (около 50 минут), то вот второй 15 минут (ну это ещё ладно, примерно похоже). А восстановление: первый 1,5 часа, второй 1 минуту.
Машина обыкновенная десктопная, выполняющая роль сервера, на котором 4 базы, и подключаются 1-2 оператора. ОС winxp (не я это всё ставил, но иногда приходится сопровождать, уж как есть), диск C и D - на одном физическом диске (что-то вроде ST500DMxxx). Даже если INFCRMDATA.DAT восстанавливается без задержек со стороны процессора, то средняя скорость чтения и записи будет 33МБ/с. Не может ли это быть результатом какого-нибудь файлового кэша? Есть один нюанс - тот самый INFCRMDATA.DAT недавно восстанавливался из резервной копии, сделанной gbak, и был подложен взамен битого. Остальные файлы ни разу так не подменялись.
Бэкап и проверку выполняет скрипт:
@echo off
SetLocal EnableExtensions
set db1="C:\Program Files\IntelTelecom\Infinity Contact-center\Servers\ServerBD\Data\INFDATA.DAT"
set db2="C:\Program Files\IntelTelecom\Infinity Contact-center\Servers\ServerUsers\Data\INFINITYUSERS.DAT"
set db3="C:\Program Files\IntelTelecom\Infinity Contact-center\Servers\ServerCRMSBL\Data\INFCRMDATA.DAT"
set db4="C:\Program Files\IntelTelecom\Infinity Contact-center\Servers\ServerCRMSBL\Data\ADDRESS.DAT"
SET gbak="C:\Program Files\Firebird\Firebird_1_5\bin\gbak.exe"
SET curl="D:\inf_backup\script\curl.exe"
SET backup_dir=D:\inf_backup\
set DW=%1
if exist "%backup_dir%INFDATA%DW%.log" del /F /Q "%backup_dir%INFDATA%DW%.log"
if exist "%backup_dir%INFINITYUSERS%DW%.log" del /F /Q "%backup_dir%INFINITYUSERS%DW%.log"
if exist "%backup_dir%INFCRMDATA%DW%.log" del /F /Q "%backup_dir%INFCRMDATA%DW%.log"
if exist "%backup_dir%ADDRESS%DW%.log" del /F /Q "%backup_dir%ADDRESS%DW%.log"
if exist "%backup_dir%INFDATA%DW%.BAK" del /F /Q "%backup_dir%INFDATA%DW%.BAK"
if exist "%backup_dir%INFINITYUSERS%DW%.BAK" del /F /Q "%backup_dir%INFINITYUSERS%DW%.BAK"
if exist "%backup_dir%INFCRMDATA%DW%.BAK" del /F /Q "%backup_dir%INFCRMDATA%DW%.BAK"
if exist "%backup_dir%ADDRESS%DW%.BAK" del /F /Q "%backup_dir%ADDRESS%DW%.BAK"
echo starting backup...
%curl% "http://******/index.php?start=1&dow=%DW%" >NUL 2>NUL
%gbak% -v -b -g %db1% "%backup_dir%INFDATA%DW%.BAK" -USER "sysdba" -PASS "masterke" -y "%backup_dir%INFDATA%DW%.log"
%curl% "http://******/index.php?fname=INFDATA.DAT&dow=%DW%&b=%ERRORLEVEL%" >NUL 2>NUL
%gbak% -v -b -g %db2% "%backup_dir%INFINITYUSERS%DW%.BAK" -USER "sysdba" -PASS "masterke" -y "%backup_dir%INFINITYUSERS%DW%.log"
%curl% "http://******/index.php?fname=INFINITYUSERS.DAT&dow=%DW%&b=%ERRORLEVEL%" >NUL 2>NUL
%gbak% -v -b -g %db3% "%backup_dir%INFCRMDATA%DW%.BAK" -USER "sysdba" -PASS "masterke" -y "%backup_dir%INFCRMDATA%DW%.log"
%curl% "http://******/index.php?fname=INFCRMDATA.DAT&dow=%DW%&b=%ERRORLEVEL%" >NUL 2>NUL
%gbak% -v -b -g %db4% "%backup_dir%ADDRESS%DW%.BAK" -USER "sysdba" -PASS "masterke" -y "%backup_dir%ADDRESS%DW%.log"
%curl% "http://******/index.php?fname=ADDRESS.DAT&dow=%DW%&b=%ERRORLEVEL%" >NUL 2>NUL
echo starting restore...
if exist "%backup_dir%INFDATA%DW%.DAT" del /F /Q "%backup_dir%INFDATA%DW%.DAT"
if exist "%backup_dir%INFINITYUSERS%DW%.DAT" del /F /Q "%backup_dir%INFINITYUSERS%DW%.DAT"
if exist "%backup_dir%INFCRMDATA%DW%.DAT" del /F /Q "%backup_dir%INFCRMDATA%DW%.DAT"
if exist "%backup_dir%ADDRESS%DW%.DAT" del /F /Q "%backup_dir%ADDRESS%DW%.DAT"
if exist "%backup_dir%INFDATA%DW%r.log" del /F /Q "%backup_dir%INFDATA%DW%r.log"
if exist "%backup_dir%INFINITYUSERS%DW%r.log" del /F /Q "%backup_dir%INFINITYUSERS%DW%r.log"
if exist "%backup_dir%INFCRMDATA%DW%r.log" del /F /Q "%backup_dir%INFCRMDATA%DW%r.log"
if exist "%backup_dir%ADDRESS%DW%r.log" del /F /Q "%backup_dir%ADDRESS%DW%r.log"
%gbak% -c "%backup_dir%INFDATA%DW%.BAK" "%backup_dir%INFDATA%DW%.DAT" -USER "sysdba" -PASS "masterke" -v -y "%backup_dir%INFDATA%DW%r.log"
%curl% "http://******/index.php?fname=INFDATA.DAT&dow=%DW%&r=%ERRORLEVEL%" >NUL 2>NUL
%gbak% -c "%backup_dir%INFINITYUSERS%DW%.BAK" "%backup_dir%INFINITYUSERS%DW%.DAT" -USER "sysdba" -PASS "masterke" -v -y "%backup_dir%INFINITYUSERS%DW%r.log"
%curl% "http://******/index.php?fname=INFINITYUSERS.DAT&dow=%DW%&r=%ERRORLEVEL%" >NUL 2>NUL
%gbak% -c "%backup_dir%INFCRMDATA%DW%.BAK" "%backup_dir%INFCRMDATA%DW%.DAT" -USER "sysdba" -PASS "masterke" -v -y "%backup_dir%INFCRMDATA%DW%r.log"
%curl% "http://******/index.php?fname=INFCRMDATA.DAT&dow=%DW%&r=%ERRORLEVEL%" >NUL 2>NUL
%gbak% -c "%backup_dir%ADDRESS%DW%.BAK" "%backup_dir%ADDRESS%DW%.DAT" -USER "sysdba" -PASS "masterke" -v -y "%backup_dir%ADDRESS%DW%r.log"
%curl% "http://******/index.php?fname=ADDRESS.DAT&dow=%DW%&r=%ERRORLEVEL%" >NUL 2>NUL
:exit_arch
if exist "%backup_dir%INFDATA%DW%.BAK" del /F /Q "%backup_dir%INFDATA%DW%.BAK"
if exist "%backup_dir%INFINITYUSERS%DW%.BAK" del /F /Q "%backup_dir%INFINITYUSERS%DW%.BAK"
if exist "%backup_dir%INFCRMDATA%DW%.BAK" del /F /Q "%backup_dir%INFCRMDATA%DW%.BAK"
if exist "%backup_dir%ADDRESS%DW%.BAK" del /F /Q "%backup_dir%ADDRESS%DW%.BAK"
:script_exit
exit