*КУБ - повний комплекс хмарних послуг!

Автоматичне резервне копіювання на 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%), перевірте розклад створення/видалення тіней.