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, его нужно заменить на сетевой путь к шаре на сервере бэкапа.