Тока щас заметил как вы используете СКИП.
Потрясающе!
В консоли не новичок но такие вкусности приходят токо с опытом!
Потрясающе!
ЗЫ. Но тем не менее ! - заколдовано но не наработает!
Добавлено: Все понял спасибо!
Буду рыть!
Добавлено: Даже в таком виде при небольшой доработке он может пригодиться многим админам кому по роду своей деятельности приходиться бэкапить что либо!
Чем он отлдичается от ранее предложеный на этом форуме вариантов? Тем что он В ЛЮБОМ СЛУЧАЕ сохранит последнии Н копий! Даже если сервер не будет работать полгода а потом включиться и забывший админ запустит этот скрипт - СТАРЫЕ бэкапы не потруться! В приведеных выше примерах можно указывать сколько ДНЕЙ хранить... Но позвольте мне например 28 дней много (дампы огромные). Надо 6! А представьте на новогодние каникулы сервак потушился на 10 дней? Да мало ли что... Если бы я воспользовался другим примером то после отработки - у меня был бы токо НОВЫЙ дамп. А все предыдущие стерлись
.
Это было предисловик.
Запутался совсем. Может кто посмотрит батник...
rem @echo off // отключил для проверки
SetLocal
rem enabledelayedexpansion // отключил по совету Elroir
@Title Export Script
set s_exp_start=Export starting... // Просто надписи в лог какие буду использовать...
set s_exp_fin=Export finished...
set s_arc_start=Archiving starting...
set s_arc_fin=Archiving finished...
set glog=D:\General_File.log // здесь указать свой ЛОГфайл весь вывод туда валю...
set arc_path=c:\progra~1\winrar\ // путь к рар.ехе - но если установить ниже set debug_1=>-1 то путь не потребуется...
set ora_path=c:\oracle\ora92\bin\ //путь к утилите ехр.ехе но если установить ниже set debug_0=>-1 то путь не потребуется...
set dmp_path=d:\ //путь куда будут валиться файлы экспорта
set log_path=d:\ //путь куда будут валиться ЛОГИ экспорта
set rar_path=d:\ ////путь куда будут складываться заархивированые файлы ЭКСПОРТА и ЛОГ файлы
set conn_exp=scott/tiger@server //строка подключения но нам она не важна мы проверяем в тестовом режиме! все ДЕБАГ параметры НЕ ОТРИЦАТЕЛЬНЫ!
set VDATE=%DATE:~6,4%_%DATE:~3,2%_%DATE:~0,2%
set dmp=%dmp_path%fe_ngk_%vdate%.dmp //сгенерированый ежедневно имя фала экспорта
set log=%log_path%lfe_ngk_%vdate%.txt //сгенерированый ежедневно имя файла ЛОГА экспорта
set rar=%rar_path%%vdate%.rar //сгенерированый ежедневно имя архива!
set Arc_Mask=%rar_path%*.rar //по этой маске буду искать все файлы архивные и удалять потом старейшие
set rarlog=%log_path%arc.lox // по этому файлу буду определять заархивировались ДАМП и ЛОГ файлы удачно или нет. Если он есть то произошла какая то ошибка! ЕррорЛевел для архиватора не действует вроде.
::!!!
set Arc_Mask=%rar_path%*.sql //для проверки ищу любые файы в данный момент sql
::!!!
set rar_par=m -ep -y -m1 -md4096 -idp -ilog%rarlog% //параметры архиватора
set Min_copy=6 // сколько минимально надо оставлять архивных файлов
::!!!
set Min_copy=0 // для теста установил - чтобы ни одного! все старые удалять
::!!!
set debug_0=0 //если <0 то работать в нормальном режиме,0-тестовый режим и типа первая утилита exp.exe отработала без ошибок. >0 - работа завершилась с какой то ошибкой
set debug_1=0 ////если <0 то работать в нормальном режиме,0-тестовый режим и типа fhархиватор отработал без ошибок. >0 - работа завершилась с какой то ошибкой
echo ==================== %DATE% %TIME:~0,-3% ==================== >>%glog%
echo exp=%ora_path% >>%glog%
echo dump=%dmp% >>%glog%
echo log=%log% >>%glog%
echo rar=%rar% >>%glog%
echo Arc_Mask=%Arc_Mask% >>%glog%
echo debug_0=%debug_0% >>%glog%
echo debug_1=%debug_1% >>%glog%
::Export
::Тут в переменную exp_var кидаю errorlevel или debug_0 в зависимости от режима
::в тестовом режиме сам генерю файл дампа и лога без использовании утилиты экспорта.
:: не работает строка echo %s_exp_fin% at %TIME:~0,-3% with Errorlevel=%exp_var% >>%glog% в логе ErrorLevel= пустому значению
echo Start Export - %TIME:~0,-3% >>%glog%
rem set exp_var=
if %debug_0% LSS 0 (
%ora_path%\exp ^
%conn_exp% full=Y buffer=1280000 consistent=Y compress=N ^
file=%dmp% log=%log%
set exp_var=%ERRORLEVEL%
) else (set exp_var=%debug_0%)&&(echo Debug_0=%exp_var% log file. >%log%)
if %debug_0%==0 (echo Debug_0 dump file. >%dmp%)
echo %s_exp_fin% at %TIME:~0,-3% with Errorlevel=%exp_var% >>%glog%
exit
pause
::Archive
if %exp_var%==0 (
echo _______________________________________________________ %s_exp_fin% OK >>%glog%
del "%rarlog%" >nul 2>nul
echo %s_arc_start% at %TIME:~0,-3% >>%glog%
if %debug_1% LSS 0 (%rar_path%\rar "%rar_par%" "%rar%" "%dmp%" "%log%") else (^
if %debug_1% gtr 0 (echo Debug Error in archiv=%debug_1% >%rarlog%^
) else (
Echo Debug Mode. Arc archived files mode. DON'T DEL Files "%log%" and "%dmp%"
del /P "%log%"
del /P "%dmp%"
)
)
if EXIST "%rarlog%" (type %rarlog% >>%glog%)&(^
echo __________________________________ %s_arc_fin% INCORRECT at %TIME:~0,-3%>>%glog%
) else (echo _________________________________________ %s_arc_fin% OK at %TIME:~0,-3%>>%glog%^
)&(set c=0
pause
:: Delete old
if %Min_copy%==0 (set var1=) else (set var1= skip=%Min_copy%)
For /f "delims=$%var1%" %%i in ('dir /B /TC /A-D /O-D %Arc_Mask%') Do (del /P d:\%%i)
)
) else (echo _________________________________________ %s_exp_fin% INCORRECT at %TIME:~0,-3% >>%glog%)
endlocal
exit
For /f "delims=$" %%i in ('dir /B /TC /A-D /O-D %Arc_Mask%') Do (set /a c+=1)&(^
if !c! GTR %Min_copy% echo del %rar_path%%i)
rem if !c! GTR %Min_copy% (call
arce %%i))
arce
rem set tmp=%1
rem echo pushd
pause
if %debug_2% lss 0 (del %rar_path%%1 >>%glog%) else (echo del %rar_path%%1 >>%glog%)
rem echo popd
exit /b