Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Доработка и проверка скрипта архивирования

Ответить
Настройки темы
CMD/BAT - [решено] Доработка и проверка скрипта архивирования

Пользователь


Сообщения: 95
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: igor.kinma
Дата: 24-01-2018
Описание: Последняя строчка P.S.
Добрый день уважаемые форумчане. Прошу Вашей помощи в проверке и доработке файла .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, но как понять не могу. Хотя возможно я ошибаюсь что их можно заменить...

Отправлено: 13:16, 24-01-2018

 

Пользователь


Сообщения: 95
Благодарности: 0

Профиль | Отправить PM | Цитировать


megaloman, Увы но к сожалению есть, но только во вложенных папках.

Наверное из за этого. Дело все в том что каждый бекап БД создается в папке с названием БД

1) База kin2017 хранится в D:\MSSQL\MSSQL\Backup\21_00\kin2017
2) База kin2018 Хранится в D:\MSSQL\MSSQL\Backup\21_00\kin2018

и т.д.

P.S. Так устроен SQL. Он для каждой БД создает вложенную папку с её названием

Отправлено: 23:55, 11-02-2018 | #31



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 95
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Вы не озвучивали!! »
Извините пожалуйста думал это не критично. Вроде такая мелочь а надо было учесть (

Отправлено: 23:58, 11-02-2018 | #32


Ветеран


Contributor


Сообщения: 2706
Благодарности: 1684

Профиль | Отправить PM | Цитировать


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

Цитата igor.kinma:
Так устроен SQL. Он для каждой БД создает вложенную папку с её названием »
Такого не упомню ... Версия MS SQL? Предложенное решение вполне при такой постановке логично

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 12-02-2018 в 00:58.


Отправлено: 00:47, 12-02-2018 | #33


Пользователь


Сообщения: 95
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Последний раз редактировалось igor.kinma, 23-09-2018 в 12:26.


Отправлено: 11:50, 12-02-2018 | #34


Ветеран


Contributor


Сообщения: 2706
Благодарности: 1684

Профиль | Отправить PM | Цитировать


igor.kinma, 1. 1C. Народ работает, поэтому часть файлов заблокировано и полноценный архив не создан. ИМХО, это правильно, не надо неполноценный архив хранить, не надо тешить себя иллюзией, что полноценная копия есть.
Цитата igor.kinma:
\\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 раз быстрее, так как будет архивироваться только по одному бэкапу в каждой папке.

Итак, ИМХО, полёт нормальный.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 12-02-2018 в 13:03.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:54, 12-02-2018 | #35


Пользователь


Сообщения: 95
Благодарности: 0

Профиль | Отправить PM | Цитировать


megaloman, Большое спасибо. Запущу этот скрипт в Планировщик в 21:30 и понаблюдаю за работой. Если можно объясните пожалуйста что будет храниться в папках Days, Month и Year. И файлы из папки D:\MSSQL\MSSQL\Backup\21_00\...\SQLbak буду сами удаляться ?

Отправлено: 13:08, 12-02-2018 | #36


Ветеран


Contributor


Сообщения: 2706
Благодарности: 1684

Профиль | Отправить PM | Цитировать


что будет храниться в папках Days, Month и Year. И файлы из папки D:\MSSQL\MSSQL\Backup\21_00\...\SQLbak буду сами удаляться

Для каждой задачи своя процедура :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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 14:07, 12-02-2018 | #37


Пользователь


Сообщения: 95
Благодарности: 0

Профиль | Отправить PM | Цитировать


И так Уважаемый 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

Отправлено: 10:58, 21-02-2018 | #38



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Доработка и проверка скрипта архивирования

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доработка скрипта на Bash parrabol Программирование в *nix 4 31-10-2016 14:45
Java - маленькая доработка скрипта СТАТИСТИКА Kos2an Программирование и базы данных 0 04-10-2013 23:06
VBS/WSH/JS - доработка скрипта ZeVSalt Программирование и базы данных 3 23-09-2011 22:33
Проверка параметров запуска скрипта morgan1991 AutoIt 2 03-03-2009 00:43




 
Переход