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

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

Ответить
Настройки темы
CMD/BAT - [решено] Перемещение файлов за предыдущую дату в папку с датой и именем сервера и их архивация

Новый участник


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

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


Доброго времени суток!
Помогите с написанием батника.

Имеются сервера Server 1, Server 2 ...,
И Server Backup

На Server 1, Server 2 ..., пишутся почасовые логи типа YYYY-MM-DD-NN.log (где YYYY - год; MM - месяц; DD - день; NN - число (время: 00; 01; 02; 03 ...23) ).

Т.к. данные файлы занимают много места (за 1 час в среднем 1,3 гБ) хотел создать задание по расписанию, чтобы раз в сутки (с наступлением след. дня) запускалось задние на перенос этих
файлов YYYY-MM-DD-NN.log (Думаю подойдет перенос всейх файлов за вчерашнюю дату) с Server 1, Server 2 ..., на Server Backup в папку с датой создания файлов YYYY-MM-DD+Имя Сервера (Server 1, Server 2 ...).
После создания папки и переноса с файлов необходимо произвести архивацию папки вместе с файлами с последующим удалением папки с файлами.

Заранее благодарен за помощь!

Отправлено: 23:27, 28-12-2020

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Powershell:
Код: Выделить весь код
$hosts = "server1","server2","server3"

Invoke-Command -computername $hosts -command {
$yesterday = ((get-date).AddDays(-1)).ToString("yyyy-MM-dd")
$files = dir C:\temp\test |? name -match "^$yesterday"
$files |Compress-Archive -DestinationPath "C:\temp\test2\$yesterday-$($env:computername).zip"
    if ($?) {$files |del}
}
Здесь с сервера бэкапа запускается удалённая команда на серверах, перечисленных в $hosts, и каждый сервер сам занимается архивацией, это работает гораздо быстрее.
Требования к выполнению - Powershell v4 и новее (иначе придётся использовать 7-zip вместо Compress-Archive), работающий удалённый доступ для Powershell (настраивается командой winrm -qc) и соответствующие права на каталог с архивами для пользователя, под которым будет запускаться скрипт.
В примере конечный каталог - это C:\temp\test2, его нужно заменить на сетевой путь к шаре на сервере бэкапа.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

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

Отправлено: 10:27, 29-12-2020 | #2



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

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


Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off
cls
	Set "AllComp="\\127.0.0.1\Test1" "\\LocalHost\Test2" "\\192.168.100.23\Test1\Every Day""
	Set "Backup=\\192.168.100.23\Test2\Rar For Every Day"
	
	For %%p In (%AllComp%) Do FOR /F "tokens=1 delims=\" %%s IN (%%p) DO Call :ArcPrc "%%~s" "%%~p"
pause
Exit /B

:ArcPrc
	FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "ToDay=%%d" &Call Set "ToDay=%%ToDay:~0,4%%-%%ToDay:~4,2%%-%%ToDay:~6,2%%"
       	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir /B /A:-D /O:N "%~2\20??-??-??-*.log"^|FINDSTR /B /I /V /R /C:"%ToDay%"`) DO (
		If Exist "%~2\%%~f" (
			Set "Name=%%f"
rem			Call "C:\Program Files\WinRAR\Rar.exe" a -df -m1 "%Backup%\%%Name:~0,10%%-%~1.rar" "%~2\%%Name:~0,10%%-*.log"
			Call "C:\Program Files\WinRAR\Rar.exe" a -df -m1 -ep "%Backup%\%%Name:~0,10%%-%~1.rar" "%~2\%%Name:~0,10%%-*.log"

	))
Exit /B
В переменной AllComp перечислены сетевые пути к логам на серверах, Backup - путь, где хранятся упакованные архивы для каждого дня каждого сервера. При наличии логов за несколько дней они будут архивироваться в файл каждого дня

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


Последний раз редактировалось megaloman, 01-01-2021 в 21:51.

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

Отправлено: 18:08, 29-12-2020 | #3


Новый участник


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

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


Уважаемые DJ Mogarych и Megaloman благодарю Вас за предложенные варианты решения моей задачи!
Цитата DJ Mogarych:
Код: »
Цитата megaloman:
Код: »
Оба варианта тестируются.
По
Цитата megaloman:
Код: »
В архиве создается весь путь прописанный AllComp, что немного не устраивает.
Если путь С:\Pogram Files\XXX\XXX\XXX\log, то чтобы добраться до логов в архиве нужно открыть полный путь к логам в архиве.

С Новым Годом Вас!
Здоровья и всех благ!

Отправлено: 20:45, 01-01-2021 | #4


Ветеран


Contributor


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

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


KamikadZZe, Не поленитесь почитать справку в winrar (справка-содержание-режим командной строки -ключи). Добавьте ключ -ep
Код: Выделить весь код
			Call "C:\Program Files\WinRAR\Rar.exe" a -df -m1 -ep "%Backup%\%%Name:~0,10%%-%~1.rar" "%~2\%%Name:~0,10%%-*.log"

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

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

Отправлено: 21:51, 01-01-2021 | #5


Новый участник


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

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


Цитата megaloman:
KamikadZZe, Не поленитесь почитать справку в winrar (справка-содержание-режим командной строки -ключи). Добавьте ключ -ep »
Спасибо! Буду теперь знать и учитывать в след задачах!

Благодарю за помощь всех кто откликнулся! Выручили, особенно перед НГ!

Отправлено: 18:58, 12-01-2021 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Перемещение файлов в папку со вчерашней датой Chingiz87 Скриптовые языки администрирования Windows 0 15-03-2015 15:53
Любой язык - Резервное копирование за предыдущую дату DeD MOPO3 Скриптовые языки администрирования Windows 8 05-09-2014 19:11
CMD/BAT - копирование файлов за текущую дату с сервера на сервер 6a6yko Скриптовые языки администрирования Windows 10 21-06-2011 13:00
CMD/BAT - [решено] Перемещение файлов, содержащих дату в названии. Майклс Скриптовые языки администрирования Windows 4 27-07-2010 15:34
CMD/BAT - [решено] Копирование с флешки в папку на компьютере файлов с текущей датой bazik83 Скриптовые языки администрирования Windows 6 19-05-2010 10:17




 
Переход