*КУБ– полный комплекс облачных услуг!

Автоматическое резервное копирование на Windows VPS

Автоматичне резервне копіювання на Windows VPS

Что и куда бэкапуем (быстрый чек-лист)

  • Объекты: тома/файлы, System State (реестр, загрузчик и т.д.), при наличии — данные приложений (например, MSSQL делает свои дампы).
  • Цель: отдельный диск VPS, NAS/файловый сервер по SMB, облачная шара. Для хранилища обязательно NTFS-права только для SYSTEM/администраторов.
  • Политика: ежедневно — инкремент/полный (в зависимости от цели), еженедельно — полный, срок хранения N версий (например 14–30).
  • Критерий готовности: бэкап проходит без ошибок, лог читается, тест-восстановление периодически выполнялось.

Устанавливаем компонент Windows Server Backup (WSB)

WSB — встроенный инструмент ОС, умеет System State, тома, файлы и запускается по расписанию.

				
					Get-WindowsFeature Windows-Server-Backup
Add-WindowsFeature Windows-Server-Backup -IncludeAllSubFeature
				
			
Windows Vps

Подготавливаем целевую папку и права

Для сетевого хранилища создайте отдельный каталог, предоставьте RW только SYSTEM, Domain Admins (или локальным администраторам) и, при необходимости, объектам компьютеров источников.

Windows Vps

Важно: штатный мастер wbadmin.msc при резервном копировании в сетевую папку сохраняет только одну «актуальную» копию. Для многих версий используем wbadmin.exe + собственную ротацию (ниже).

Скрипт wbadmin: ежедневное резервное копирование в папки с датой

Создаем папку вида \\backup-srv\winvps01$\YYYY-MM-DD и запускаем резервное копирование. Для System State используйте -systemState, для томов — -include:C:,D:.

				
					$Base=«\\backup-srv\winvps01$\» # замените на ваш слой/диск
$Date=Get-Date -Format «yyyy-MM-dd»
$Target=Join-Path $Base $Date
if (-not (Test-Path $Target)) { New-Item -ItemType Directory -Path $Target | Out-Null }

# Вариант А: System State
$cmd = «wbadmin start backup -backuptarget:$Target -systemState -noverify -vssCopy -quiet»

# Вариант Б: указанные тома (+критические)
# $cmd = «wbadmin start backup -backuptarget:”+$Target+“ -include:C:,D: -allCritical -quiet»

Invoke-Expression $cmd
				
			

Сценарий с папкой «по дате», запуском wbadmin и примерами логов

				
					Import-Module ServerManager

$string $date = get-date -f 'yyyy-MM-dd'
$path="\\<server>\col\backup\dcl\"
$TargetUNC = "$path$date"

$TestTargetUNC = Test-Path -Path $TargetUNC
if (!($TestTargetUNC)) {
    New-Item -Path $TargetUNC -ItemType directory
}

$WBadmin_cmd = "wbadmin.exe START BACKUP -backupTarget:$TargetUNC -systemState -noverify -vssCopy"

Invoke-Expression $WBadmin_cmd
				
			

Где смотреть логи: C:\Windows\Logs\WindowsServerBackup\*.log

На локально подключенном диске можно ограничивать количество версий штатно:

				
					wbadmin delete backup -keepVersions:10 -quiet
				
			

Планировщик: автоматический запуск скрипта

Вариант через GUI

taskschd.msc → Create Task… → лучше запускать от SYSTEM + Run with highest privileges → настроить триггеры и действие powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\PS\Backup.ps1.

Windows Vps
Windows Vps

Вариант через PowerShell

				
					$Trigger=New-ScheduledTaskTrigger -Daily -At 1:00am
$Action =New-ScheduledTaskAction -Execute "PowerShell.exe" `
  -Argument "-NoProfile -ExecutionPolicy Bypass -File C:\PS\Backup.ps1"
Register-ScheduledTask -TaskName "VPS-DailyBackup" -Trigger $Trigger `
  -User "NT AUTHORITY\SYSTEM" -Action $Action -RunLevel Highest -Force
				
			

Альтернатива «все-в-одном»:

				
					wbadmin enable backup -addtarget:E: -schedule:01:00 -include:C:,D: -quiet
				
			

Создает ежедневное расписание с помощью WSB. Синтаксис — в Microsoft Learn.

«Быстрые» версии для файлов: Robocopy (+ ежедневные папки)

Для каталога данных (сайты, выгрузка) удобно делать снимки-папки по дате:

				
					@echo off
set date_=%date:/=-%
set src=D:\Data
set dst=\\backup-srv\winvps01$\%date_%
mkdir "%dst%"
robocopy "%src%" "%dst%" /E /COPYALL /Z /J /R:3 /W:1 /LOG+:C:\Logs\robocopy.log
				
			

Включаем VSS-снимки (теневые копии) для «быстрого отката»

Теневые копии дают «предыдущие версии» и помогают быстро восстановить отдельные файлы без большого бэкапа. В домене VSS удобно включать политиками, а снимки создавать скриптом/планировщиком.

Включите службу Volume Shadow Copy (тип запуска Automatic).

Регулярно создавайте снимок (пример с vshadow.exe) и сохраняйте 10–20% диска под тени.
Список снимков: vssadmin list shadows → берем Shadow Copy ID.

Windows Vps

Монтируем конкретный снимок (только чтение) и копируем файлы:

				
					 vshadow -el={GUID},Z:
				
			

База по VSS и устройству теней — в Microsoft Learn.

Проверяем, мониторим, ротация

  • Тест восстановления: периодически монтируйте VHDX/папку с датой и восстанавливайте пару файлов «на стол». Для критических ролей используйте профильные процедуры (AD, MSSQL и т. д.).
  • Логи и коды возврата: WindowsServerBackup-логи, для Robocopy — коды возврата (маска).
  • Ротация: удаляйте старые папки по дате (PowerShell) и/или wbadmin delete backup -keepVersions:N.
  • Расписание wbadmin enable backup — настройки и синтаксис в справке Microsoft.

Частые проблемы и решения

  • Пишет, что на сетевой цели хранится только одна копия. Это ограничение мастера WSB; используйте wbadmin + папки-по-дате (как в скрипте выше).
  • Планировщик «висит» или запрашивает пароль. Запускайте от SYSTEM с Run with highest privileges; проверьте право Log on as a batch job и аргументы -ExecutionPolicy Bypass.
  • Нет места под VSS. Увеличьте квоту на томе (10–20%), проверьте расписание создания/удаления теней.