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

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

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

Что и куда резервируем (краткий чек-лист)

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

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

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

Get-WindowsFeature Windows-Server-Backup
Add-WindowsFeature Windows-Server-Backup -IncludeAllSubFeature
Встановлюємо компонент Windows Server Backup

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

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

Готуємо цільову папку і права

Важно: штатный мастер 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="\\\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

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

wbadmin delete backup -keepVersions:10 -quiet

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

Вариант через графический интерфейс

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

Планувальник
Планувальник 1
Планувальник 2
Планувальник 3
Планувальник 4

Вариант через 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).

Включаємо VSS-знімки

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

Список знімків

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

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 %), проверьте расписание создания/удаления теней.
Menu