Показать полную графическую версию : [решено] Доработка и проверка скрипта архивирования
igor.kinma
08-02-2018, 11:21
Копировать или перемещать? »
А тут в принципе роли не играет если переместить то они все равно останутся но в месячной папке, а если скопировать то они все равно перезапишутся (удаляться) в случаи когда месяц 30 или 28 дней. 31 день должен будет удалиться.
Скорее всего проще сделать перемещение.
megaloman
08-02-2018, 11:40
Но есть небольшой баг в лог файлах, а именно ломаный текст »Описанный баг - не баг, а фича. Это не баг. Надо смотреть лог-файл в редакторе\вьювере в 866 кодировке (DOS)(я работаю в FAR-менеджере, его редактор позволяет, есть куча редакторов, в которых можно выбрать кодировку), а Вы смотрите в, например, блокноте (1251).
И вообще, минимум неприятностей при работе с cmd-файлами - сохранять их в 866 кодировке. Повторюсь, с батниками я работаю в FAR - для этих целей удобнее всего. RAR выдаёт кириллицу в 866 кодировке.
Уменьшить лог - пожалуйста, можно убрать выдачу содержимого архива.
:Backup
>>%5 (
Echo ++++++
Echo ++++++ %Date% %Time% %1
)
%Arc% u -m3 -r -ep1 -dh "%~2\%~3" "%~1\*.*"
>>%5 (
If Not Exist "%~2\%~3" (
Echo !!!!!! Archive not created "%~2\%~3"
) Else (
rem Echo ++++++ Files In Archives "%~2\%~3"
rem Echo:
rem %Arc% lb "%~2\%~3"
Echo:
Echo ++++++ Copy arhives "%~2\%~3" to %4
Echo:
Xcopy /D /Y /F "%~2\*.rar" "%~4\"
Echo:
Echo ++++++ Delete arhives from %2
Echo:
FOR /F "usebackq skip=7 delims=*" %%f IN (`2^>nul Dir "%~2\*%~x3" /B /A:-D /O:-D /T:C`) DO Del /S "%~2\%%f"
FOR /F "usebackq skip=7 delims=*" %%f IN (`2^>nul Dir "%~dp5*%~x5" /B /A:-D /O:-D /T:C`) DO Del /S "%~dp5%%f"
)
)
GoTo :Eof
igor.kinma
08-02-2018, 11:48
megaloman, Огромное Вам спасибо за потраченное время. Очень Вам признателен и бесконечно благодарен. Если будет время а главное желание может попробуете сделать файл для 2 сервера. Или может это все можно объединить в 1 файл? (думаю что нет)
igor.kinma
08-02-2018, 12:11
megaloman, Да конечно любой полет Вашей фантазии. Делайте как считаете нужным и правильным.
Просто изначально хотелось получить полноценный архив за неделю на сервере 1 и полноценный месячный архив на сервере 2 с возможностью восстановления на каждый месяц в течении года на 01 (начало месяца) 15 (середина месяца) и 30(31)(28-февраль) на конеч месяца. Ну и конечно основной архив на 31.12.2018 и т.д.
что касается ухода за базой конечно вы правы просто я так же не занимаюсь обслуживанием 1С а только ее архивированием. Ну Log файлы бородатой давности и правда не к чему)
megaloman
08-02-2018, 12:28
Если будет время а главное желание может попробуете сделать файл для 2 сервера. » Мне надо переосмыслить Вашу постановку. Мне она не очень нравится. Лучше бы сделать батник на 1 сервере и в одном батнике. Думаю, что можно и нужно.За базой ведь тоже надо ухаживать. Посмотрел распечатку содержимого архива 1С - там есть логи восьмилетней давности. Куча старых файлов .log (имхо, однозначно надо удалить, оставить штук 5 последних в каждой папке), .log.cfl (имхо, скорее всего тоже надо удалить, оставить штук 5 последних - я не спец по 1С) Это под силу тому же батнику, по сравнению с архивацией - ничтожное время
Заархивированные бэкапы SQL тоже надо удалять. Иначе получается эпидерсия. SQL у вас хранит 6 бэкапов. Условно 1,2,3,4,5,6 число. Вы их архивируете в архив update. В понедельник архива update уже нет. Зато получим новый бэкап за 7 число и 5 старых, то есть
2,3,4,5,6,7, которые попадут в update в понедельник, и, так как архивация будет работать всю неделю, в конце недели будут бэкапы 7,8,9,10,11, и в update поимеем заархивированные файлы
2,3,4,5,6,7,8,9,10,11
То есть архивы двукратно раздуты. Да у Вас с Вашим объёмом это кошмар.
Вывод: Надо делать архивы SQL ежедневно с датой. Заархивированное удалять.
igor.kinma
08-02-2018, 12:46
Вывод: Надо делать архивы SQL ежедневно с датой. Заархивированное удалять. »
Не проблема настрою в SQL 2 задания:
1) Бекапить в 21:00 в папку D:\MSSQL\MSSQL\Backup\21_00 с удалением файлов старше 6 дней. (для себя, что бы можно было восстановить недельный бекап не разворачивая архив)
2) Бекапить в 21:30 в папку D:\MSSQL\MSSQL\Backup\Today c удалением файлов старше 1 дня. (для архивирования)
Сам скрипт архивирования буду запускать в 22:00
igor.kinma
09-02-2018, 22:40
megaloman, Добрый вечер. Простите не знаю как по имени. Наступила пятница и Ваш скрипт отработал, но не совсем так как надо:
1) на сервер 2 осталось 2 архива Backup(SQL)_update.rar и Backup(SQL)_дата.rar
2) В архиве Backup(SQL)_дата.rar оказалось 6 файлов а не 5
megaloman
11-02-2018, 21:18
igor.kinma, Я не разбирался с этим скриптом, считаю, что это бесперспективно: изначально мне постановка не нравилась. @Echo Off
cls
Set "Arc="%ProgramFiles%\WinRar\Rar.exe""
Set "ArcExt=rar"
Set "C1_From=D:\Programs\1C"
Set "C1_Arc1=D:\ARHIV\1C"
Set "C1_Arc2=\\Server-domain\d$\ARHIV\1C"
Set "C1_Log=D:\ARHIV\Log"
Set "C1_Fat=D:\Fatal_Error_1C_Bak"
Set "C1_AKey=u -m3 -r -ep1 -dh"
Set "Sql_From=D:\MSSQL\MSSQL\Backup\21_00"
Set "Sql_Arc1=D:\ARHIV\SQL"
Set "Sql_Arc2=\\Server-domain\d$\ARHIV\Sql"
Set "Sql_Log=D:\ARHIV\Log"
Set "Sql_Fat=D:\Fatal_Error_SQL_Bak"
Set "Sql_AKey=u -m2 -ep1"
FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "Tdate=%%d"
Set "YYYY=%TDate:~0,4%"
Set "MM=%TDate:~4,2%"
Set "DD=%TDate:~6,2%"
Set "DArc=%YYYY%.%MM%.%DD%"
Call :Back_C1 "%C1_From%" "%C1_Arc1%" "%C1_Arc2%" "%C1_Log%" "%C1_AKey%"
Call :Back_SQL "%SQL_From%" "%SQL_Arc1%" "%SQL_Arc2%" "%SQL_Log%" "%Sql_AKey%"
REM Pause
GoTo :Eof
:Back_C1
rem Число хранимых архивов
Set /A NDays1=6
Set /A NMonth1=7
Set /A NDays2=14
Set /A NMonth2=10
rem Дата промежуточного бэкапа за месяц
Set /A Middle=15
Set "LogFile="%~4\%DArc%_1C_Backup.log""
Call :MakeDir %1 %2 %3 %4 "%C1_Fat%_%DArc%.log" %LogFile%
Set /A Back_Err=%ErrorLevel%
If %Back_Err%==2 Exit /B 2
If Not Exist "%~2\Month\%YYYY%.%MM%.??_1C_Backup.%ArcExt%" (Set /A LogMonth=1) Else (Set /A LogMonth=0)
If %LogMonth%==1 Call :MonthEnd "%~2\Days\20*1C*.%ArcExt%" "%~2\Month"
If Not Exist "%~2\Year\%YYYY%.??.??_1C_Backup.%ArcExt%" (Set /A LogYear=1) Else (Set /A LogYear=0)
If %LogYear%==1 Call :MonthEnd "%~2\Days\20*1C*.%ArcExt%" "%~2\Year"
Set "ArcName1=%~2\Update_1C_Backup.%ArcExt%"
Set "ArcName2=%~2\Days\%DArc%_1C_Backup.%ArcExt%"
If %LogMonth%==1 (
(Echo: &Echo **** Del "%ArcName1%") >>%LogFile%
Del "%ArcName1%" 2>nul
)
Call :MakeArc "%ArcName1%" "%~1\*.*" %5 %LogFile%
If Not %ErrorLevel%==0 Exit /B %ErrorLevel%
(Echo: &Echo **** Copy "%ArcName1%" ---^> "%ArcName2%") >>%LogFile%
Copy "%ArcName1%" "%ArcName2%" >>%LogFile% 2>&1 &&Echo ++++ copyed successful >>%LogFile%
Call :MonthMid "%~2\Month\%YYYY%.%MM%.??_1C*.%ArcExt%" "%ArcName2%" "%~2\Month" %Middle% %LogFile%
If %LogMonth%==1 Call :MonthEnd "%~2\Days\20*1C*.%ArcExt%" "%~2\Month"
If %LogYear%==1 Call :MonthEnd "%~2\Days\20*1C*.%ArcExt%" "%~2\Year"
Echo: >>%LogFile%
Call :Purgen "%~2\Days\20*1C*.%ArcExt%" %NDays1% %LogFile%
Call :Purgen "%~4\20*1C*.log" %NDays1% %LogFile%
Call :Purgen "%~2\Month\20*1C*.%ArcExt%" %NMonth1% %LogFile%
If %Back_Err%==0 (
(Echo: &Echo **** Xcopy /D /F "%~2\Days\20*1C*.%ArcExt%" ---^> "%~3\Days\") >>%LogFile%
Xcopy /D /F /Y "%~2\Days\20*1C*.%ArcExt%" "%~3\Days\" >>%LogFile% 2>&1
(Echo: &Echo **** Xcopy /D /F "%~2\Month\20*1C*.%ArcExt%" ---^> "%~3\Month\") >>%LogFile%
Xcopy /D /F /Y "%~2\Month\20*1C*.%ArcExt%" "%~3\Month\" >>%LogFile% 2>&1
(Echo: &Echo **** Xcopy /D /F "%~2\Year\20*1C*.%ArcExt%" ---^> "%~3\Year\") >>%LogFile%
Xcopy /D /F /Y "%~2\Year\20*1C*.%ArcExt%" "%~3\Year\" >>%LogFile% 2>&1
Call :Purgen "%~3\Days\20*1C*.%ArcExt%" %NDays2% %LogFile%
Call :Purgen "%~3\Month\20*1C*.%ArcExt%" %NMonth2% %LogFile%
)
GoTo :Eof
:Back_SQL
rem Число хранимых архивов
Set /A NDays1=6
Set /A NMonth1=7
Set /A NDays2=14
Set /A NMonth2=10
rem Число сохраняемых SQL бэкапов
Set /A NSQLbak=5
rem Дата промежуточного бэкапа за месяц
Set /A Middle=15
Set "LogFile="%~4\%DArc%_SQL_Backup.log""
Call :MakeDir %1 %2 %3 %4 "%SQL_Fat%_%DArc%.log" %LogFile%
Set /A Back_Err=%ErrorLevel%
If %Back_Err%==2 Exit /B 2
If Not Exist "%~2\Month\%YYYY%.%MM%.??_SQL_Backup.%ArcExt%" (Set /A LogMonth=1) Else (Set /A LogMonth=0)
If %LogMonth%==1 Call :MonthEnd "%~2\Days\20*SQL*.%ArcExt%" "%~2\Month"
If Not Exist "%~2\Year\%YYYY%.??.??_SQL_Backup.%ArcExt%" (Set /A LogYear=1) Else (Set /A LogYear=0)
If %LogYear%==1 Call :MonthEnd "%~2\Days\20*SQL*.%ArcExt%" "%~2\Year"
Set "ArcName1=%~2\%DArc%_SQL_Backup.%ArcExt%"
Set "ArcName2=%~2\Days\%DArc%_SQL_Backup.%ArcExt%"
Call :MakeArc "%~2\%DArc%_SQL_Backup.%ArcExt%" "%~1\*.*" %5 %LogFile%
If Not %ErrorLevel%==0 Exit /B %ErrorLevel%
Set "SQLbak=%~1\SQLbak"
Md "%SQLbak%" 2>nul
Set "CSQLbak=Move /Y "%~1\*.*" "%SQLbak%\""
(Echo: &Echo **** %CSQLbak%) >>%LogFile%
%CSQLbak% >>%LogFile% 2>&1 &&Echo ++++ movied successful >>%LogFile%
Call :Purgen "%SQLbak%\*.*" %NSQLbak% %LogFile%
(Echo: &Echo **** Move "%ArcName1%" ---^> "%ArcName2%") >>%LogFile%
Move /Y "%ArcName1%" "%ArcName2%" >>%LogFile% 2>&1 &&Echo ++++ movied successful >>%LogFile%
Call :MonthMid "%~2\Month\%YYYY%.%MM%.??_SQL*.%ArcExt%" "%ArcName2%" "%~2\Month" %Middle% %LogFile%
If %LogMonth%==1 Call :MonthEnd "%~2\Days\20*SQL*.%ArcExt%" "%~2\Month"
If %LogYear%==1 Call :MonthEnd "%~2\Days\20*SQL*.%ArcExt%" "%~2\Year"
(Echo: &Echo **** Xcopy /D /F "%~2\Days\20*SQL*.%ArcExt%" ---^> "%~3\Days\") >>%LogFile%
Xcopy /D /F /Y "%~2\Days\20*SQL*.%ArcExt%" "%~3\Days\" >>%LogFile% 2>&1
Echo: >>%LogFile%
Call :Purgen "%~2\Days\20*SQL*.%ArcExt%" %NDays1% %LogFile%
Call :Purgen "%~4\20*SQL*.log" %NDays1% %LogFile%
Call :Purgen "%~2\Month\20*SQL*.%ArcExt%" %NMonth1% %LogFile%
If %Back_Err%==0 (
(Echo: &Echo **** Xcopy /D /F "%~2\Days\20*SQL*.%ArcExt%" ---^> "%~3\Days\") >>%LogFile%
Xcopy /D /F /Y "%~2\Days\20*SQL*.%ArcExt%" "%~3\Days\" >>%LogFile% 2>&1
(Echo: &Echo **** Xcopy /D /F "%~2\Month\20*SQL*.%ArcExt%" ---^> "%~3\Month\") >>%LogFile%
Xcopy /D /F /Y "%~2\Month\20*SQL*.%ArcExt%" "%~3\Month\" >>%LogFile% 2>&1
(Echo: &Echo **** Xcopy /D /F "%~2\Year\20*SQL*.%ArcExt%" ---^> "%~3\Year\") >>%LogFile%
Xcopy /D /F /Y "%~2\Year\20*SQL*.%ArcExt%" "%~3\Year\" >>%LogFile% 2>&1
Call :Purgen "%~3\Days\20*SQL*.%ArcExt%" %NDays2% %LogFile%
Call :Purgen "%~3\Month\20*SQL*.%ArcExt%" %NMonth2% %LogFile%
)
GoTo :Eof
:MakeDir
2>nul (Md %2 &Md %3 &Md %4)
If Not Exist %4 (Call :MsgErr1 %4 %5 &Exit /B 2)
Call :TxtStart %1 %6 ||Exit /B 2
If Not Exist %1 (Call :MsgErr1 %1 %6 &Exit /B 2)
If Not Exist %2 (Call :MsgErr1 %2 %6 &Exit /B 2)
2>nul (Md "%~2\Days" &Md "%~2\Month" &Md "%~2\Year")
If Not Exist %3 (Call :MsgErr1 %3 %6 &Exit /B 1)
2>nul (Md "%~3\Days" &Md "%~3\Month" &Md "%~3\Year")
If Exist %1 If Exist %2 If Exist %3 If Exist %4 (Set /A %~5=0 &Set "%~6=" &Exit /B 0)
GoTo :Eof
:MsgErr1
Echo ---- folder %1 not accessible >>%2
GoTo :Eof
:Purgen
FOR /F "usebackq skip=%2 delims=" %%f IN (`2^>nul Dir %1 /B /A:-D /O:-D /T:C`) DO (Del "%~dp1%%f" >nul &&Echo ++++ Deleted "%~dp1%%f" >>%3)
GoTo :Eof
:MonthEnd
FOR /F "usebackq delims=" %%f IN (`2^>nul Dir %1 /B /A:-D /O:-D /T:C`) DO (
(Echo: &Echo **** Copy "%~dp1%%f" ---^> "%~2\") >>%LogFile%
Copy "%~dp1%%f" "%~2\" >>%LogFile% 2>&1 &&Echo ++++ copyed successful >>%LogFile%
GoTo :Eof
)
GoTo :Eof
:MonthMid
SetLocal
Set /A DtM=%4+100
Set /A DtT=1%DD%
If %DtT% LSS %DtM% GoTo :Eof
FOR /F "usebackq skip=1 delims=" %%f IN (`2^>nul Dir %1 /B /A:-D /O:-D /T:C`) DO GoTo :Eof
(Echo: &Echo **** Copy %2 ---^> "%~3\") >>%5
Copy %2 "%~3\" >>%5 2>&1 &&Echo ++++ copyed successful >>%5
EndLocal
GoTo :Eof
:MakeArc
%Arc% %~3 %1 %2 2>>%4
If Not %ErrorLevel%==0 (
(Echo: &Echo ---- backup %ArcExt% error=%ErrorLevel% %1) >>%4
) Else (
(Echo: &Echo **** archive available %1) >>%4
)
Exit /B %ErrorLevel%
:TxtStart
(Echo ++++ ++++ ++++ &Echo ++++ %Date% %Time% backuping %1) >>%2
If Not Exist %Arc% (Echo ---- %Arc% not found >>%2 &Exit /B 2)
Exit /B 0
Кратко о настройках на примере SQL (1C аналогично):
Откуда берём файлы для архивации Set "Sql_From=D:\MSSQL\MSSQL\Backup\21_00"
Куда помещаем архивы rar на 1 сервере Set "Sql_Arc1=D:\ARHIV\SQL"
Куда помещаем архивы rar на 2 сервере Set "Sql_Arc2=\\Server-domain\d$\ARHIV\Sql"
Куда помещаем логи Set "Sql_Log=D:\ARHIV\Log"
Куда помещаем лог если Sql_Log недоступен Set "Sql_Fat=D:\Fatal_Error_SQL_Bak"
Ключи для работы RAR Set "Sql_AKey=u -m2 -ep1"
При работе скрипта создадутся папки для хранения ежедневных, за каждый месяц 3 архива, за каждый год 2 архива.
D:\ARHIV\SQL\Days
D:\ARHIV\SQL\Month
D:\ARHIV\SQL\Year
Будет создана папка
D:\MSSQL\MSSQL\Backup\21_00\SQLbak\
Туда будут перемещаться созданные MS SQL бэкапы, чтобы они повторно не архивировались.
Число хранимых RAR-архивов на 1 и 2 сервере, SQL-бэкапов и день создания промежуточного архива за месяц
rem Число хранимых архивов (можете изменить)
Set /A NDays1=6
Set /A NMonth1=7
Set /A NDays2=14
Set /A NMonth2=10
rem Число сохраняемых SQL бэкапов
Set /A NSQLbak=5
rem Дата промежуточного бэкапа за месяц
Set /A Middle=15
Пробуйте. Сначала без планировщика.
Не советую менять папки и маски файлов - мне будет трудно разобраться.
У меня нет иллюзий, что я не делаю ошибок. У меня нет реальной системы. Отладку делал на искусственно созданной среде.
К пятнице никак не привязываюсь - не вижу смысла. Хранится достаточное число архивов, чтобы восстановить нужное состояние.
Папки руками не делайте - сами сделаются.
igor.kinma
11-02-2018, 23:40
megaloman, Решил не ждать до завтра запустил Ваш скрипт прямо сейчас. Время запуска 11.02.2018 (23:23). Итог:
Сервер 1:
Создались папки ( D:\ARHIV\1C\Days, D:\ARHIV\1C\Month, D:\ARHIV\1C\Year)
В них создались архивы:
1) D:\ARHIV\1C\Days\2018.02.11_1C_Backup
2) D:\ARHIV\1C\Month\2018.02.11_1C_Backup
3) D:\ARHIV\1C\Year\2018.02.11_1C_Backup
Создался архив: D:\ARHIV\1C\Update_1C_Backup
Создались папки (D:\ARHIV\SQL\Days, D:\ARHIV\SQL\Month, D:\ARHIV\SQL\Year)
Архивы ни какие не создались!
Папка: D:\MSSQL\MSSQL\Backup\21_00 В ней то же ни чего не создалось!
Сервер 2:
Создались папки ( \\Server-domain\d$\ARHIV\1C\Days, \\Server-domain\d$\ARHIV\1C\Month, \\Server-domain\d$\ARHIV\1C\Year)
В них создались архивы:
1) ...\1C\Days\2018.02.11_1C_Backup
2) ...\1C\Month\2018.02.11_1C_Backup
3) ...\1C\Year\2018.02.11_1C_Backup
Создались папки (...\SQL\Days, ...\SQL\Month, ...\SQL\Year)
Архивы ни какие не создались!
Высылаю лог файлы... 151208 , 151209
megaloman
11-02-2018, 23:51
igor.kinma, rar error=10 Нет файлов, удовлетворяющих указанной маске, и параметров.
В папке "D:\MSSQL\MSSQL\Backup\21_00" ничего нет
igor.kinma
11-02-2018, 23:55
megaloman, Увы но к сожалению есть, но только во вложенных папках.
Наверное из за этого. Дело все в том что каждый бекап БД создается в папке с названием БД
1) База kin2017 хранится в D:\MSSQL\MSSQL\Backup\21_00\kin2017
2) База kin2018 Хранится в D:\MSSQL\MSSQL\Backup\21_00\kin2018
и т.д.
P.S. Так устроен SQL. Он для каждой БД создает вложенную папку с её названием
igor.kinma
11-02-2018, 23:58
Вы не озвучивали!! »
Извините пожалуйста думал это не критично. Вроде такая мелочь а надо было учесть (
megaloman
12-02-2018, 00:47
igor.kinma, Замените красную строку в предыдущем коде FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%SQL_From%\*.*" /B /A:D`) DO (
Call :Back_SQL "%SQL_From%\%%d" "%SQL_Arc1%\%%d" "%SQL_Arc2%\%%d" "%SQL_Log%" "%Sql_AKey%"
)
Убейте пустые папки в D:\ARHIV\SQL\ и \\Server-domain ..... Days Month Year
Так устроен SQL. Он для каждой БД создает вложенную папку с её названием »
Такого не упомню ... Версия MS SQL? Предложенное решение вполне при такой постановке логично
igor.kinma
12-02-2018, 11:50
megaloman, Доброе утро. Заменил строчку, запустил скрипт. Итог:
Сервер 1:
Создалась папка D:\MSSQL\MSSQL\Backup\21_00\...\SQLbak
В не переместились все файлы из D:\MSSQL\MSSQL\Backup\21_00\...
Создались папки ( D:\ARHIV\1C\Days, D:\ARHIV\1C\Month, D:\ARHIV\1C\Year)
В них создались архивы:
1) D:\ARHIV\1C\Days\ (нет архива)
2) D:\ARHIV\1C\Month\(нет архива)
3) D:\ARHIV\1C\Year\(нет архива)
D:\ARHIV\1C\Update_1C_Backup.rar
Создались папки ( D:\ARHIV\SQL\...\Days, D:\ARHIV\SQL\...\Month, D:\ARHIV\SQL\...\Year)
В них создались архивы:
1) D:\ARHIV\SQL\...\Days\ (2018.02.12_SQL_Backup.rar)
2) D:\ARHIV\SQL\...\Month\(2018.02.12_SQL_Backup.rar)
3) D:\ARHIV\SQL\...\Year\(2018.02.12_SQL_Backup.rar)
4) D:\ARHIV\SQL\ (нет архива)
Сервер 2:
Создались папки ( \\Server-domain\d$\ARHIV\1C\Days, \\Server-domain\d$\ARHIV\1C\Month, \\Server-domain\d$\ARHIV\1C\Year)
В них создались архивы:
1) \\Server-domain\d$\ARHIV\1C\Days\Пусто
2) \\Server-domain\d$\ARHIV\1C\Month\Пусто
3) \\Server-domain\d$\ARHIV\1C\Year\Пусто
\\Server-domain\d$\ARHIV\1C то же пусто (тоесть Update_1C_Backup.rar не скопировался)
Создались папки ( \\Server-domain\d$\ARHIV\SQL\...\Days, \\Server-domain\d$\ARHIV\SQL\...\Month, \\Server-domain\d$\ARHIV\SQL\...\Year)
В них создались архивы:
1) \\Server-domain\d$\ARHIV\SQL\...\Days\ (2018.02.12_SQL_Backup.rar)
2) \\Server-domain\d$\ARHIV\SQ\...\Month\(2018.02.12_SQL_Backup.rar)
3) \\Server-domain\d$\ARHIV\SQ\...\Year\(2018.02.12_SQL_Backup.rar)
\\Server-domain\d$\ARHIV\SQL (пусто)
... Заменены названия папок содержащие названия БД (kin2017, kin2018 и т.д.)
Прикрепляю Лог: 151217, 151218
megaloman
12-02-2018, 12:54
igor.kinma, 1. 1C. Народ работает, поэтому часть файлов заблокировано и полноценный архив не создан. ИМХО, это правильно, не надо неполноценный архив хранить, не надо тешить себя иллюзией, что полноценная копия есть.\\Server-domain\d$\ARHIV\1C то же пусто (тоесть Update_1C_Backup.rar не скопировался) » Update_1C_Backup.rar под таким именем не копируется никогда и никуда. Если создаётся полноценный архив (RAR выдаёт код завершения %ErrorLevel%=0), тогда этот файл копируется в нужные папки с именем Дата_1С_.......
Если сегодня вечером Вы снова запустите скрипт и если никто не будет держать файлы (RAR сделает нормальный архив), то получите нормальный результат.
2. SQL. По логу скрипт отработал нормально. Бэкапы на обоих серверах разложились правильно. Единственное, естественно, что реально заархивировались вчерашние бэкапы (точнее, там сейчас в каждом Rar-файле 5 бэкапов за неделю) в архив с сегодняшней датой. Если Вы сегодня вечером намерены запустить скрипт для архивирования сегодняшних бэкапов, хотелось бы, чтобы эти архивы старых бэкапов не перезаписались. Поэтому, переименуйте все 2018.02.12_SQL_Backup.rar в, например, 2018.02.09_SQL_Backup.rar. Чтобы не делать это ручками, вот скрипт@Echo Off
cls
Set "Sql_Arc1=D:\ARHIV\SQL"
Set "Sql_Arc2=\\Server-domain\d$\ARHIV\Sql"
Set "Name1=2018.02.12_SQL_Backup.rar"
Set "Name2=2018.02.09_SQL_Backup.rar"
FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%Sql_Arc1%\%Name1%" /B /A:-D /S`) DO Ren "%%f" "%Name2%"
FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%Sql_Arc2%\%Name1%" /B /A:-D /S`) DO Ren "%%f" "%Name2%"
PauseКстати, в дальнейшем архивация будет работать для SQL в 5 раз быстрее, так как будет архивироваться только по одному бэкапу в каждой папке.
Итак, ИМХО, полёт нормальный.
igor.kinma
12-02-2018, 13:08
megaloman, Большое спасибо. Запущу этот скрипт в Планировщик в 21:30 и понаблюдаю за работой. Если можно объясните пожалуйста что будет храниться в папках Days, Month и Year. И файлы из папки D:\MSSQL\MSSQL\Backup\21_00\...\SQLbak буду сами удаляться ?
megaloman
12-02-2018, 14:07
Для каждой задачи своя процедура :Back_C1 :Back_SQL в которой есть некоторые настроечные параметры
Days Ежедневные архивы.
Число хранимых ежедневных архивов на 1 и втором серверах NDays1=6 и NDays2=14 Думайте сами сколько надо. Если надо, измените в соответствующей процедуре. Там есть пояснение.
Month Три архива за месяц: первый и последний рабочий день, и за первый рабочий день на дату Middle=15
Число хранимых архивов за месяц на 1 и втором серверах NMonth1=7 (больше двух мес) и NMonth2=10 (больше квартала)
Year Два архива в год, за первый и последний рабочие дни года. Автоматическое удаление старых архивов не предусмотрено.
Файлы из папки D:\MSSQL\MSSQL\Backup\21_00\...\SQLbak буду сами удаляться
Число сохраняемых SQL бэкапов NSQLbak=5
igor.kinma
21-02-2018, 10:58
И так Уважаемый megaloman, Ваш скрипт работает с 12.02.2018. Что Мы имеем на 21.02.2018
На сервере 1:
1c
1) \\SERVER\D$\ARHIV\1C\Days\ лежат архивы с 13.02.2018 по 20.02.2018
2) \\SERVER\D$\ARHIV\1C\Month\ лежат архивы 2018.02.15_1C_Backup.rar и 2018.02.20_1C_Backup.rar
3) \\SERVER\D$\ARHIV\1C\Year\ лежат архивы 2018.02.19_1C_Backup.rar и 2018.02.20_1C_Backup.rar
4) \\SERVER\D$\ARHIV\1C\ лежит архив Update_1C_Backup.rar
SQL
1)\\SERVER\D$\ARHIV\SQL\kin2017\Days\ лежат архивы с 13.02.2018 по 20.02.2018
2) \\SERVER\D$\ARHIV\SQL\kin2017\Month\ лежат архивы 2018.02.15_SQL_Backup.rar и 2018.02.20_SQL_Backup.rar
3) \\SERVER\D$\ARHIV\SQL\kin2017\Year\ лежат архивы 2018.02.19_SQL_Backup.rar и 2018.02.20_SQL_Backup.rar
Log
\\SERVER\D$\ARHIV\Log\ лежат логи с 2018.02.13 по 2018.02.20
На сервере 2:
1c
1) \\SERVER-DOMAIN\D$\ARHIV\1C\Days\ лежат архивы с 12.02.2018 по 20.02.2018
2) \\SERVER-DOMAIN\D$\ARHIV\1C\Month\ лежат архивы 2018.02.15_1C_Backup.rar и 2018.02.20_1C_Backup.rar
3) \\SERVER-DOMAIN\D$\ARHIV\1C\Year\ лежат архивы 2018.02.19_1C_Backup.rar и 2018.02.20_1C_Backup.rar
SQL
1)\\SERVER-DOMAIN\D$\ARHIV\SQL\kin2017\Days\ лежат архивы с 12.02.2018 по 20.02.2018
2) \\SERVER-DOMAIN\D$\ARHIV\SQL\kin2017\Month\ лежат архивы 2018.02.15_SQL_Backup.rar и 2018.02.20_SQL_Backup.rar
3) \\SERVER-DOMAIN\D$\ARHIV\SQL\kin2017\Year\ лежат архивы 2018.02.19_SQL_Backup.rar и 2018.02.20_SQL_Backup.rar
Вроде все хорошо но смущают архивы в папках Month и Year
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC