Коротко — причина ваших проблем в том, что обычные копирующие скрипты сталкиваются с заблокированными/изменяющимися файлами. Надёжное решение — делать копию не «вживую», а с помощью снимка тома (VSS, Volume Shadow Copy). Ниже — список рабочих вариантов + практические рекомендации и примеры.
Варианты ПО
- Бесплатно и простo
- Veeam Agent for Windows (есть бесплатный агент) — делает file‑level backup с использованием VSS, можно писать на сетевой шаре.
- UrBackup (open‑source клиент/сервер) — Windows‑клиент умеет пользоваться VSS.
- Robocopy + DiskShadow / ShadowSpawn / HoboCopy — минималистично, без централизованного сервера: вы создаёте VSS‑снимок и копируете из него robocopy. Очень лёгкое и гибкое решение для одной папки.
- Недорого, коммерчески
- Iperius Backup (или Iperius / Iperius Backup) — как вы писали, использует VSS и недорог.
- Macrium Reflect (Home/Workstation) — поддерживает VSS и file backup.
- SyncBackSE/Pro — поддерживает Shadow Copy (в платных версиях).
- Тяжёлые/корпоративные (вы упомянули избегать)
- Acronis, ShadowProtect, Veeam Backup & Replication (полнофункц.), но вы их исключили.
Практика (рекомендации)
- Всегда использовать VSS (Volume Shadow Copy). Копирование «вживую» даёт битые/неконсистентные файлы.
- Скрипт/задача должна запускаться под учётной записью с административными привилегиями (чтобы создавать тени) или под SYSTEM.
- Проверяйте восстановление — не верьте просто успешному логу копирования.
- Если это база данных/Exchange/SQL/Outlook PST — лучше использовать приложение‑консистентные VSS‑writer’ы или штатные средства бэкапа СУБД.
- Сохраняйте ACL/атрибуты при копировании (robocopy /COPYALL или /COPY:DATSOU).
Примеры решений и команд
1) DiskShadow + Robocopy (Windows встроенный DiskShadow)
- Создаёте файл snapshot.dsh:
set context persistent nowriters
add volume C: alias MySnap
create
expose %MySnap% X:
exit
- Запускаете:
diskshadow /s snapshot.dsh
robocopy X:\путь \\fileserver\Backup\ИмяПользователя /MIR /Z /COPYALL /R:3 /W:5 /LOG:C:\logs\backup.log
Затем удаляете снимок:
diskshadow.exe /s: (скрипт с командой delete shadows volume=C:)
(Уточнение: синтаксис diskshadow в деталях смотрите в документации Microsoft; приведён общий порядок: create -> expose -> копирование -> delete shadows.)
2) ShadowSpawn (очень удобно: делает VSS, запускает вашу команду прямо «в» снапшоте)
- Пример:
ShadowSpawn.exe -s C:\ -c "robocopy C:\Папка \\fileserver\Backup\Имя /MIR /COPYALL /Z /R:3 /W:5"
- ShadowSpawn сам создаст и уберёт тень, не нужно вручную манипулировать DiskShadow.
3) Hobocopy (маленькая утилита, использует VSS)
- hobocopy C:\Папка \\fileserver\Backup\Имя /v
(Подробности в readme hobocopy.)
4) Robocopy с режимом backup (/B)
- Если скрипт запущен под пользователем с правами SeBackupPrivilege/SeRestorePrivilege (обычно SYSTEM или администратор с правами), можно использовать:
robocopy C:\Папка \\fileserver\Backup\Имя /MIR /B /COPYALL
- Но /B не даст вам приложенческую консистентность — лучше VSS.
Рекомендация для доменной среды (самый простой и надёжный путь)
- Создайте доменную учётную запись‑сервис (с правами «Log on as a batch job» и правами на сетевую шару).
- Сделайте Scheduled Task на клиенте (или через GPO/PSExec разверните задачу), которая запускает ShadowSpawn (или diskshadow+robocopy) ежедневно в удобное время, под этой учётной записью или SYSTEM.
- Логи записывать централизованно и периодически проверять. Обязательно тестировать восстановление.
Что ещё имеет смысл учитывать
- Протокол CIFS/SMB: лучше если целевой сетевой ресурс — сервер/NAS с достаточной скоростью и правами на сохранение атрибутов.
- Если нужно версияция — храните полные копии с датой или используйте backup‑решение, которое делает инкременты.
- Для больших объёмов/частых изменений подумайте про дедупликацию/сжатие на приёмной стороне.
Если хотите, могу:
- Подготовить готовый рабочий скрипт (diskshadow + robocopy) под вашу конкретную папку и шару.
- Посоветовать точные параметры robocopy для сохранения всех атрибутов и прав.
- Подготовить пример задания Task Scheduler (XML) для развёртывания через GPO.
Напишите: Windows версия клиентов, путь исходной папки, куда копировать (тип сервера/NAS), и хотите ли версионирование — дам конкретный скрипт.