Показать полную графическую версию : [решено] Доработка и проверка скрипта архивирования
igor.kinma
24-01-2018, 13:16
Добрый день уважаемые форумчане. Прошу Вашей помощи в проверке и доработке файла .bat так как сам я не очень силен в этой области, но что то нашел в интернете что то подправил сам. И так задача:
Есть 2 сервера:
1 хранятся Бд SQL и 1C. Путь D:\Programs\1C и резервные копии БД SQL D:\MSSQL\MSSQL\Backup\21_00. Есть промежуточные папка D:\ARHIV\ARHIV_1C и D:\ARHIV\ARHIV_BD
2 сервер на котором должны храниться копии сервера 1. Путь \\Server-domain\d$\ARHIV\ARHIV_BD и \\Server-domain\d$\ARHIV\ARHIV_1C .
Нужно сделать так что бы каждый день на сервере 1 делались архивы 1С и BD и копировались на сервер 2. При этом архивы на сервере 1 должны храниться не более 7 дней. Сделал такой исполняемый файл и сохранил его как start.bat:
D:
cd D:\Programs\1C
rar a -agYYYY.MM.DD -m5 -r -x D:\ARHIV\ARHIV_1C\backup_.rar *.*
cd D:\MSSQL\MSSQL\Backup\21_00
rar a -agYYYY.MM.DD -m5 -r -x D:\ARHIV\ARHIV_BD\backup_.rar *.*
copy /Y D:\ARHIV\ARHIV_1C\*.rar \\Server-domain\d$\ARHIV\ARHIV_1C\*.rar
copy /Y D:\ARHIV\ARHIV_BD\*.rar \\Server-domain\d$\ARHIV\ARHIV_BD\*.rar
Forfiles /P D:\ARHIV\ARHIV_1C /S /M *.* /D -7 /C "cmd /c del /Q @path"
Forfiles /P D:\ARHIV\ARHIV_BD /S /M *.* /D -7 /C "cmd /c del /Q @path"
Скажите все ли тут так? можно ли что то облегчить? И как к моей задаче сделать Log файл. Заранее всем спасибо за советы и участие в теме!
P.S. Знаю что команды forfiles и copy можно заменить командой robocopy, но как понять не могу. Хотя возможно я ошибаюсь что их можно заменить...
igor.kinma
25-01-2018, 09:32
Друзья давайте по активнее. Правда нужна помощь.
сам я не очень силен в этой области »
заплатите тому кто силён, потому как сейчас почти всё не так
Резервное копирование делают на случай сбоев в работе. Ваш "скрипт" никак не учитывает возможные сбои.
igor.kinma
25-01-2018, 11:44
Busla спасибо за помощь.
megaloman
25-01-2018, 15:13
igor.kinma, давайте по активнее. »
@Echo Off
Set "Arc="%ProgramFiles%\WinRar\Rar.exe""
FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "Tdate=%%d"
Set "DArc=%TDate:~0,4%.%TDate:~4,2%.%TDate:~6,2%
Call :Backup "Z:\Programs\1C" "Z:\ARHIV\ARHIV_1C" "Backup_%DArc%.rar" "Z:\Server-domain\d$\ARHIV\ARHIV_1C" "Z:\ARHIV\ARHIV_1C\%DArc%.log"
Call :Backup "Z:\MSSQL\MSSQL\Backup\21_00" "Z:\ARHIV\ARHIV_BD" "Backup_%DArc%.rar" "Z:\Server-domain\d$\ARHIV\ARHIV_BD" "Z:\ARHIV\ARHIV_BD\%DArc%.log"
GoTo :Eof
:Backup
>>%5 (
Echo ++++++
Echo ++++++ %Date% %Time% %1
>nul %Arc% a -m3 -r -ep1 "%~2\%~3" "%~1\*.*"
If Not Exist "%~2\%~3" (
Echo !!!!!! Archive not created "%~2\%~3"
) Else (
Echo ++++++ Files In Archives "%~2\%~3"
Echo:
%Arc% lb "%~2\%~3"
Echo:
Echo ++++++ Copy arhives from %2 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 "%~2\*%~x5" /B /A:-D /O:-D /T:C`) DO Del /S "%~2\%%f"
)
)
GoTo :Eof
Укажите Ваши пути в скрипте, там где Call :Backup ..... !!
Я не знаю объёма Ваших баз, ИМХО, ключ -m5 плох: не даёт существенного выигрыша в объеме, но зато при больших базах тратится громадное время. Я сделал -m3, но Вашу свободу никто не смеет ограничивать.архивы на сервере 1 должны храниться не более 7 дней » Я сделал, чтобы хранились последние 7 архивов, ИМХО, это безопаснее.Сделал такой исполняемый файл и сохранил его как start.bat: » Не делайте такого, не называйте Ваши батники именами CMD-команд, можно вляпаться в неприятности.так как сам я не очень силен в этой области » Дерзайте! Под лежачий камень ...
igor.kinma
06-02-2018, 14:08
Яволь, майн генераль! :) »
Уважаемый megaloman большое спасибо за скрипт все работает как надо. Но я не учел одно большое но когда описывал свою задачу!
Помогите пожалуйста неумному в доработке Вашего скрипта или создании дополнительного:
Базы данных 1С должны архивироваться каждый день в D:\ARHIV\1C и иметь вид Backup(1C)_дата.rar
Базы данных SQL должны архивироваться каждый день в D:\ARHIV\BD с заменой архива. Почему именно с заменой? На SQL сервере настроено резервное копирование БД каждый день в 21:00 с пн по пт. с удалением файлов старше 6 дней.
Тоесть я полагаю что данный архив должен называться Backup(SQL)_update.rar и каждый день в него должны добавляться недостающие файлы, а в пятницу после очередного пополнения, он должен быть переименован в Backup(SQL)_дата.rar. Таким образом он будет содержать в себе файлы SQL баз с пн по пт. (всего 5 файлов)
Ну и соответственно все это дело должно каждый день копироваться на сервер 1. по следующему принципу:
Архив 1C каждый день с названием Backup(1C)_дата.rar
Архив SQL баз каждый день с названием Backup(SQL)_update.rar, а в пятницу Backup(SQL)_дата.rar и после копирования, если оно удачно удалить файл Backup(SQL)_update.rar
И так же должно сохраниться условие хранение 7 архивов.
P.S Если для всего этого необходимо несколько файлов .bat то ни чего страшного главное что бы все это работало. Заранее Вам огромное спасибо.
igor.kinma
06-02-2018, 14:25
Немного подумав на ум приходит 3 .bat файла.
@Echo Off
Set "Arc="%ProgramFiles%\WinRar\Rar.exe""
FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "Tdate=%%d"
Set "DArc=%TDate:~0,4%.%TDate:~4,2%.%TDate:~6,2%
Call :Backup "D:\Programs\1C" "D:\ARHIV\1C" "Backup(1С)_%DArc%.rar" "\\Server-domain\d$\ARHIV\1C" "D:\ARHIV\LOG\1C_%DArc%.log"
GoTo :Eof
:Backup
>>%5 (
Echo ++++++
Echo ++++++ %Date% %Time% %1
>nul %Arc% a -m3 -r -ep1 "%~2\%~3" "%~1\*.*"
If Not Exist "%~2\%~3" (
Echo !!!!!! Archive not created "%~2\%~3"
) Else (
Echo ++++++ Files In Archives "%~2\%~3"
Echo:
%Arc% lb "%~2\%~3"
Echo:
Echo ++++++ Copy arhives from %2 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 "%~2\*%~x5" /B /A:-D /O:-D /T:C`) DO Del /S "%~2\%%f"
)
)
GoTo :Eof
@Echo Off
Set "Arc="%ProgramFiles%\WinRar\Rar.exe""
FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "Tdate=%%d"
Set "DArc=%TDate:~0,4%.%TDate:~4,2%.%TDate:~6,2%
Call :Backup "D:\MSSQL\MSSQL\Backup\21_00" "D:\ARHIV\BD" "Backup(SQL)_update.rar" "\\Server-domain\d$\ARHIV\BD" "D:\ARHIV\LOG\SQL_%DArc%.log"
GoTo :Eof
:Backup
>>%5 (
Echo ++++++
Echo ++++++ %Date% %Time% %1
>nul %Arc% u -m3 -r -ep1 "%~2\%~3" "%~1\*.*"
If Not Exist "%~2\%~3" (
Echo !!!!!! Archive not created "%~2\%~3"
) Else (
Echo ++++++ Files In Archives "%~2\%~3"
Echo:
%Arc% lb "%~2\%~3"
Echo:
Echo ++++++ Copy arhives from %2 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 "%~2\*%~x5" /B /A:-D /O:-D /T:C`) DO Del /S "%~2\%%f"
)
)
GoTo :Eof
Далее нужен 3 скрипт который будет переименовывать архив Backup(SQL)_update.rar в Backup(SQL)_дата.rar, копировать его на сервер и удалять от туда Backup(SQL)_update.rar
@Echo Off
FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "Tdate=%%d"
Set "DArc=%TDate:~0,4%.%TDate:~4,2%.%TDate:~6,2%
RENAME D:\ARHIV\BD\Backup(SQL)_update.rar Backup(SQL)_%DArc%.rar
xcopy D:\ARHIV\BD\*.rar \\Server-domain\d$\ARHIV\BD /H /Y /C
erase \\Server-domain\d$\ARHIV\BD\Backup(SQL)_update.rar
megaloman
07-02-2018, 13:08
@Echo Off
Set "Arc="%ProgramFiles%\WinRar\Rar.exe""
FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "Tdate=%%d"
Set "DArc=%TDate:~0,4%.%TDate:~4,2%.%TDate:~6,2%
Call :DayOfWeek "DOW"
Call :Backup "Z:\Programs\1C" "Z:\ARHIV\ARHIV_1C" "Backup(1C)_%DArc%.rar" "Z:\Server-domain\d$\ARHIV\ARHIV_1C" "Z:\ARHIV\ARHIV_1C\%DArc%.log"
If "%DOW%"=="5" (
>>"Z:\ARHIV\ARHIV_BD\%DArc%.log" (
Echo ++++++
Echo ++++++ %Date% %Time% "Z:\MSSQL\MSSQL\Backup\21_00"
Echo ++++++ Ren "Z:\ARHIV\ARHIV_BD\Backup(SQL)_update.rar" "Backup(SQL)_%DArc%.rar"
Ren "Z:\ARHIV\ARHIV_BD\Backup(SQL)_update.rar" "Backup(SQL)_%DArc%.rar" 2>&1
)
Call :Backup "Z:\MSSQL\MSSQL\Backup\21_00" "Z:\ARHIV\ARHIV_BD" "Backup(SQL)_%DArc%.rar" "Z:\Server-domain\d$\ARHIV\ARHIV_BD" "Z:\ARHIV\ARHIV_BD\%DArc%.log"
) Else (
Call :Backup "Z:\MSSQL\MSSQL\Backup\21_00" "Z:\ARHIV\ARHIV_BD" "Backup(SQL)_update.rar" "Z:\Server-domain\d$\ARHIV\ARHIV_BD" "Z:\ARHIV\ARHIV_BD\%DArc%.log"
)
rem 1 2 3 4 5
GoTo :Eof
:Backup
>>%5 (
Echo ++++++
Echo ++++++ %Date% %Time% %1
>nul %Arc% u -m3 -r -ep1 "%~2\%~3" "%~1\*.*"
If Not Exist "%~2\%~3" (
Echo !!!!!! Archive not created "%~2\%~3"
) Else (
Echo ++++++ Files In Archives "%~2\%~3"
Echo:
%Arc% lb "%~2\%~3"
Echo:
Echo ++++++ Copy arhives from %2 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
:DayOfWeek
rem Выдаёт номер дня недели в переменную имя которой указано в вызове в кавычках
Set /A YYYY=%date:~6,4%, MM=1%date:~3,2%-100, DD=1%date:~0,2%-100
Set /A %~1=((%YYYY%-1901)*365 + (%YYYY%-1901)/4 + %DD% + (!(%YYYY% %% 4))*(!((%MM%-3)^&16))+(%MM%-1)*30+2*(!((%MM%-7)^&16))-1+((65611044^>^>(2*%MM%))^&3))%%7+1
GoTo :Eof
Архив SQL баз каждый день с названием Backup(SQL)_update.rar, а в пятницу Backup(SQL)_дата.rar и после копирования, если оно удачно удалить файл Backup(SQL)_update.rar »
Это не выгодно. Я переименовал в пятницу архив Backup(SQL)_update.rar в Backup(SQL)_дата.rar и затем пополнил этот архив (команда u в rar).
Так, как описали Вы, архиватор заново будет архивировать все файлы, накопившиеся за неделю - лишние траты времени и места.
И вообще, я заменил команду a в RAR на u, чтобы не тратить время на переархивирование старых файлов в Backup(SQL)_update.rar.
Определение дня недели не помню где подсмотрел
igor.kinma
07-02-2018, 15:43
megaloman, Огромное Вам человеческое спасибо!Запустил Ваш скрипт в планировщик с пн по пт в 21:30. Будем тестировать.
Но есть один вопрос. Копирование на \Server-domain\ идет всех файлов из папок Z:\ARHIV\ARHIV_BD и Z:\ARHIV\ARHIV_1C или только последних которые создались?
megaloman
07-02-2018, 16:07
igor.kinma, 1C архивируется, а затем и копируется всё заново. Если не устраивает, то надо наманер как для баз SQL именовать архив без привязки к дате, обновлять его (при этом будут переархивированы обновлённые файлы и добавлены новые, а затем уже копировать этот файл с признаком даты в имени. Естественно, при этом в архиве будут все файлы. Вы не объяснили, что архивируется и можно ли после архивирования исходные файлы удалить. Если это бэкапы - вполне можно. И даже нужно, иначе будем постоянно архивировать всё, включая бэкапы столетней давности. Всего-то в Rar добавить ключ. Тогда получим архивы только свежих файлов. А вот если это рабочие базы .... Увы.
С sql мне понятнее. Там бэкапы, да и то, после успешного архивирования я бы их удалял (соответствующий ключ в rar).
В Вашей первоначальной постановке архивируется всё. Иного Вы не озвучивали.
Если что-то не устраивает, постарайтесь четче сформулировать Ваши хотелки :) Может быть можно как-то привязываться к именам исходных файлов?
igor.kinma
07-02-2018, 16:22
megaloman, Хорошо я попробую сформулировать по конкретней как и что у меня устроено и что нужно, но чуть по позже ) Сейчас пока в кратце могу сказать что недавно словили шифровальщик и хапнули много горя( Вот теперь и хочу сделать достойную а главное автоматизированную систему архивации)
igor.kinma
07-02-2018, 17:18
megaloman, Сейчас постараюсь объяснить что и как устроено и что бы хотелось получить в результате.
Дано:
1-сервер на нем есть рабочая база 1С Путь D:\Programs\1C к этой папке дан общий доступ и SQL сервер с базами. с пн по пт в 21:00 делается бекап Баз (.bak) с удалением файлов старше 6 дней. Бекапы сохраняются в D:\MSSQL\MSSQL\Backup\21_00.
Так же на этом же сервере есть папки D:\ARHIV\1C и D:\ARHIV\BD (где должны лежать rar архивы)
2-сервер является резервным на нем должны храниться копии архивов. На нем так же есть папки D:\ARHIV\1C и D:\ARHIV\BD. Сетевой путь \\Server-domain\d$\ARHIV....
Что хочется:
Что бы с пн по пт в 21:30 создавался архив (.rar) D:\Programs\1C и D:\MSSQL\MSSQL\Backup\21_00 на сервере 1 и копировался на сервер 2.
- Архив 1С будет каждый раз новый что бы иметь возможность восстановить на любую дату
- Архив SQL должен обновляться с пн по чт, а в пятницу полный архив. или обновляться с пн по пт и переименовываться.
Когда наступает вечер пятницы 21:00 в папке D:\MSSQL\MSSQL\Backup\21_00 будут лежать копии баз за неделю. Следовательно её нужно заархивировать, присвоить дату и скопировать на 2 сервер, а промежуточный архив в папке D:\ARHIV\BD с пн по чт удалить на обои серверах, так как он уже не нужен. В итоге что мы должны получить утром в понедельник придя на работу
5 архивов 1С (.rar) каждый который с датой создания и которые размещены на сервер 1 и 2.
1 архив SQL баз (.rar) с пятничной датой который содержит в себе бекапы баз из папки D:\MSSQL\MSSQL\Backup\21_00 с пн по пт. и так же расположен на сервере 1 и 2.
Все начинается новая неделя и архивы на сервере 1 нам плодить не нужно так как они все есть на 2 сервере, но мы их не удаляем а перезаписываем по 1. (тоесть в 21:30 создается архив а старый за понедельник удаляется) и новый архив так же копируется на сервер 2 (но только новый т.к. копировать все нам не нужно они уже есть на сервере. Что же касается архива c Базами SQL так же создается новый но не удаляя пятничный. Пятничный архив должен удалиться уже на след. понедельник.
Вывод, цель и чего хотелось достичь: каждый понедельник у нас на сервере 1 всегда должен быть полноценный архив SQL и 1С за прошедшую неделю, а сервер 2 является просто сборщиком архивов, на случай падения сервера 1.
Что касаемо удаления:
D:\Programs\1C - рабочая база удалять нельзя.
D:\MSSQL\MSSQL\Backup\21_00 - бекабы сделанные SQL сервером. Удалять можно, но не желательно так как если придется восстанавливать базу скажем так на вчера ни чего из архива доставать не нужно. К тому же файлы старше 6 дней затираются сами.
Вот это как бы основная задача. Если что то я замудрил или как то можно упростить не во вред безопасности пишите.
megaloman
07-02-2018, 18:04
igor.kinma, Имхо, Вы получили что хотели. Единственное, я поленился удалять Backup(SQL)_update.rar на 2 сервере, так как в понедельник он всё равно перезапишется. А если хотите автоматизации, чтобы потом не думать, надо ограничивать число архивов на втором сервере - иначе забьёте весь диск.
igor.kinma
07-02-2018, 23:40
megaloman, я понимаю что это нагло с моей стороны но именно об этом я и хотел Вас попросить. а Именно сделать второй файл который я бы запустил в планировщик на сервере 2.
Дано:
Хочу на сервере 2 сделать папки: Неделя Месяц Год.
Задача:
Сделать Файл который будет отслеживать кол-во архивов и копировать нужные архивы в папки.
Тоесть архивы с сервера 1 должны копироваться на сервер 2 в папку неделя. В ней должны храниться все архивы за весь месяц. Затем в папку месяц должны копироваться архивы на 1, 15 и на конец месяца. А В папке неделя архивы должны перезаписываться.
Попробую пояснить в январе 31 день. Хотелось бы что бы в папке неделя хранился 31 архив а в папку месяц копировался архив на 01.01.2018, 15.01.2018 и 31.01.2018. Затем в Папке неделя архивы начали бы перезаписываться. на Февральские.
Тоесть на конец месяца в папке неделя должны быть февральские архивы а в папке месяц архивы на 01.02.2018, 15.02.2018, 28.02.2018
ну и т.д.
Скажите пожалуйста реально ли написать такой Файл?
megaloman, Запустил Ваш скрипт в Планировщик. (Немного подумав, на ум приходит доработка 1 командного файла) он отработал как положено в 21:30. Что получил:
Архив баз 1С создался и скопировался. а Архив SQL баз не создался и не скопировался ! Лог файл то же создался только на базы 1С, на SQL да же нет лог файла
На всякий случай скидываю поправленный файл. Может я что накосячил
Set "Arc="%ProgramFiles%\WinRar\Rar.exe""
FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "Tdate=%%d"
Set "DArc=%TDate:~0,4%.%TDate:~4,2%.%TDate:~6,2%
Call :DayOfWeek "DOW"
Call :Backup "D:\Programs\1C" "D:\ARHIV\1C" "Backup(1C)_%DArc%.rar" "\\Server-domain\d$\ARHIV\1C" "D:\ARHIV\log\1C_%DArc%.log"
If "%DOW%"=="5" (
>>"D:\ARHIV\log\SQL_%DArc%.log" (
Echo ++++++
Echo ++++++ %Date% %Time% "D:\MSSQL\MSSQL\Backup\21_00"
Echo ++++++ Ren "D:\ARHIV\BDSQL\Backup(SQL)_update.rar" "Backup(SQL)_%DArc%.rar"
Ren "D:\ARHIV\BDSQL\Backup(SQL)_update.rar" "Backup(SQL)_%DArc%.rar" 2>&1
)
Call :Backup "D:\MSSQL\MSSQL\Backup\21_00" "D:\ARHIV\BDSQL" "Backup(SQL)_%DArc%.rar" "\\Server-domain\d$\ARHIV\SQL" "D:\ARHIV\log\SQL_%DArc%.log"
) Else (
Call :Backup "D:\MSSQL\MSSQL\Backup\21_00" "D:\ARHIV\BDSQL" "Backup(SQL)_update.rar" "\\Server-domain\d$\ARHIV\SQL" "D:\ARHIV\log\SQL_%DArc%.log"
rem 1 2 3 4 5
GoTo :Eof
:Backup
>>%5 (
Echo ++++++
Echo ++++++ %Date% %Time% %1
>nul %Arc% u -m3 -r -ep1 "%~2\%~3" "%~1\*.*"
If Not Exist "%~2\%~3" (
Echo !!!!!! Archive not created "%~2\%~3"
) Else (
Echo ++++++ Files In Archives "%~2\%~3"
Echo:
%Arc% lb "%~2\%~3"
Echo:
Echo ++++++ Copy arhives from %2 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
:DayOfWeek
rem Выдаёт номер дня недели в переменную имя которой указано в вызове в кавычках
Set /A YYYY=%date:~6,4%, MM=1%date:~3,2%-100, DD=1%date:~0,2%-100
Set /A %~1=((%YYYY%-1901)*365 + (%YYYY%-1901)/4 + %DD% + (!(%YYYY% %% 4))*(!((%MM%-3)^&16))+(%MM%-1)*30+2*(!((%MM%-7)^&16))-1+((65611044^>^>(2*%MM%))^&3))%%7+1
GoTo :Eof
megaloman
08-02-2018, 09:46
igor.kinma, )
rem 1 2 3 4 5
GoTo :Eof
Давайте решать проблемы по мере их поступления. Я бы предложил запустить скрипт немедленно и убедиться в его нормальной работе, а уж потом ждать его отработки в планировщике.
igor.kinma
08-02-2018, 09:57
megaloman, Спасибо сейчас поправлю у себя и проверю. Правда сейчас люди работают в 1С и часть файлов не заархивируется, но для теста думаю сойдет.
Поправил, запустил, ждем...
megaloman
08-02-2018, 10:26
igor.kinma, Не знаю объём Ваших баз, но, по крайней мере, для отладки указал бы в RAR ключ -m1. Время радикально уменьшится.
А чтобы не дёргать 1C закомментировал бы строку
rem Call :Backup "D:\Programs\1C" ....
Наверное, если есть вероятность использования файлов во время архивирования, лучше добавить в RAR ключ -dh. Всегда есть вероятность, что какая-то тётушка забыла выйти из программы вечером. Какую при этом копию Вы получите, не знаю, не уверен, что сможете восстановить базу после этого.
>nul %Arc% u -m3 -r -ep1 -dh "%~2\%~3" "%~1\*.*" Ключ -DH — открывать совместно используемые файлы.
--------------------------------------------------------------------------------
Позволяет обрабатывать файлы, открытые для записи другими программами.
Это опасный ключ, так как он разрешает архивировать те файлы, которые в тот же момент могут быть изменены другой программой. Если при этом будет нарушена внутренняя структура заархивированного файла, то программа для его обработки после распаковки такого файла может его не открыть. Используйте этот ключ очень осторожно!Сделать Файл который будет отслеживать кол-во архивов и копировать нужные архивы в папки. » Копировать или перемещать?
igor.kinma
08-02-2018, 10:50
megaloman, Да объем баз действительно большой по этому пока и не отписываюсь о результатах, но уже заметил то ли проблему, то ли долгую работу.
1) Архив 1С создался и скопировался
2) Архив SQL баз создался но объем файла 0. Ждал 30 минут. Сейчас отменил задачу и удалил из папки D:\MSSQL\MSSQL\Backup\21_00 все файлы оставил только 1 для теста.
Вот скрин окна на каком месте все висит:151136
строка @Echo Off убрана для теста
P.S. Судя по всему имеет место быть зависание. прошло 10 минут а все так же и осталось вот скрин вместе с лог файлом 151138
megaloman
08-02-2018, 11:05
Архив SQL баз создался но объем файла 0 »ИМХО, не создался, а создаётся. Упаковщик не отработал еще. Какой объём бэкапов? Покажите лог, созданный скриптом. На скрине ничего не видно, так как нормальный вывод RAR направлен в nul.
igor.kinma
08-02-2018, 11:06
megaloman, Ура спустя 20 минут архив создался и скопировался. Но есть небольшой баг в лог файлах, а именно ломаный текст вот скидываю сами файлы.
1) 151139
2) 151140
Можно ли как то уменьшить лог и исправить текст?
P.S. полный объем архивируемых баз SQL - 40 Гб а 1С - 5 Гб
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC