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

Показать сообщение отдельно

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

fascinating rhythm


Moderator


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

Профиль | Отправить 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