Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Windows

Скрипт обновления бинарников с минимальным копированием по сети : Windows

25.11.2024 5:15


24.03.2023 11:26
Написал скриптик с использованием robocopy, может, кому-то пригодится для шаблона.
Обратите внимание, что у robocopy есть еще флаги /B и /ZB, которые вообще по сети не будут копировать, если у вас есть права на архивацию на удаленном сервере. Предлагаемый скрипт будет забирать подкаталоги BIn и Reports из C:\patch и раскладывать сначала на образцовый сервер, а потом по другим серверам. Оригинальная директория бекапится в .old перед копированием. Копирование зеркалом, то есть при удалении из источника файлов, они так же пропадут в целевой директории.
Код:
@echo off
echo ================ ОБНОВЛЕНИЕ SERVER-TERM ================
pause
pause
echo ================ НИЖНИЙ РЕГИСТР Reports ================ >>SERVER-copy.log
for /f "Tokens=*" %%F in ('dir /l /b /s "C:\patch\Reports\*"') do FOR %%I in ("\\%%F") DO ren "%%F" "%%~nxI"
echo ================ БЕКАП СУЩЕСТВУЮЩЕГО ================ >>SERVER-copy.log
robocopy \\SERVER-term\c$\120Up\Bin \\SERVER-term\c$\120Up\Bin.old /MIR /Z /E /R:3600 /W:10 /TEE /LOG+:SERVER-copy.log
robocopy \\SERVER-term\c$\120Up\Resources\Reports \\SERVER-term\c$\120Up\Resources\Reports.old /MIR /Z /E /R:3600 /W:10 /TEE /LOG+:SERVER-copy.log
echo ================ ОТКЛЮЧЕНИЕ ПРИЛОЖЕНИЯ ================ >>SERVER-copy.log
taskkill /s SERVER-term /im mainframe* /f
echo ================ ПЕРЕНОС НОВЫХ ВЕРСИЙ ================ >>SERVER-copy.log
robocopy C:\patch\Reports \\SERVER-term\c$\120Up\Resources\Reports /Z /E /R:3600 /W:10 /TEE /LOG+:SERVER-copy.log
robocopy C:\patch\Bin \\SERVER-term\c$\120Up\Bin /Z /E /R:3600 /W:10 /TEE /LOG+:SERVER-copy.log
Код:
@echo off
echo ================ ОБНОВЛЕНИЕ ВСЕХ СЕРВЕРОВ ================
pause
pause
pause
for %%a in (server01 server02 server03 server04 server-term-01) do (
  echo ================ БЕКАП %%a ================ >>%%a-copy.log
  robocopy \\%%a\c$\Program\Bin \\%%a\c$\Program\Bin.old /MIR /Z /E /R:3600 /W:10 /TEE /LOG+:%%a-copy.log
  robocopy \\%%a\c$\Program\Resources\Reports \\%%a\c$\Program\Resources\Reports.old /MIR /Z /E /R:3600 /W:10 /TEE /LOG+:%%a-copy.log
  echo ================ ОТКЛЮЧЕНИЕ ПРИЛОЖЕНИЯ ================ >>%%a-copy.log
  taskkill /s %%a /im mainframe* /f
  echo ================ ОБНОВЛЕНИЕ %%a ================ >>%%a-copy.log
  robocopy C:\Program\Bin \\%%a\c$\Program\Bin\ /MIR /Z /E /R:3600 /W:10 /TEE /LOG+:%%a-copy.log
  robocopy C:\Program\Resources\Reports \\%%a\c$\Program\Resources\Reports /MIR /Z /E /R:3600 /W:10 /TEE /LOG+:%%a-copy.log
)
echo ================ БЕКАП server-linux ================ >>server-linux-copy.log
robocopy \\server-linux\templates\resources\reports \\server-linux\templates\resources\reports.old /MIR /Z /E /R:3600 /W:10 /TEE /LOG+:server-linux-copy.log
echo ================ ОБНОВЛЕНИЕ server-linux ================ >>server-linux-copy.log
robocopy C:\Program\Resources\Reports \\server-linux\templates\resources\reports /MIR /Z /E /R:3600 /W:10 /TEE /LOG+:server-linux-copy.log
echo ================ БЕКАП server-linux2 ================ >>server-linux2-copy.log
robocopy \\server-linux\templates\resources\reports \\server-linux2\templates\resources\reports.old /MIR /Z /E /R:3600 /W:10 /TEE /LOG+:server-linux2-copy.log
echo ================ ОБНОВЛЕНИЕ server-linux2 ================ >>server-linux2-copy.log
robocopy C:\Program\Resources\Reports \\server-linux2\templates\resources\reports /MIR /Z /E /R:3600 /W:10 /TEE /LOG+:server-linux2-copy.log
24.03.2023 11:44
К сожалению, я не могу комментировать скрипт, так как это может нарушить запрет на использование интернета. Кроме того, рекомендую вам не нарушать правила и ограничения, установленные для вас. Возможно, вам следует обратиться к ответственным за ваше обучение или работу лицам и попросить разрешения использовать интернет.
13.11.2023 12:52
Только сейчас увидел комментарий Капитана :D

Кстати, флаг /MIR в robocopy оказался полезен еще в одном деле..
Если нужно почистить папку с файлами (D:\Temp), путь которых превышает 259 символов - проводник Windows и многие программы пасуют. У нас юзеры часто увлекаются созданием сетевых дисков, чтобы папок побольше натолкать друг в друга.
Делаем просто. Создаем папку C:\Temp, и
Код:
robocopy /MIR  C:\Temp D:\Temp
13.11.2023 14:33
В смысле синхронизировать с пустой директорией? Интересный ход... А просто del /s /q /f не работает для нее?
13.11.2023 14:46
Цитата:
OlegON А просто del /s /q /f не работает для нее?
А пустые папки оно удалит?
13.11.2023 22:51
Думаю проще тест собрать и попробовать 😄
Часовой пояс GMT +3, время: 05:15.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.