Резервні копії та резервний майданчик

Резервні копії Windows Server: wbadmin, розклад і restic із VSS

Зміст статті

Для адміністратора, який тримає на виділеному сервері з Windows Server облікову систему, віддалені робочі столи або файли. У підсумку матимете образ системи для відновлення «на голе залізо», версії файлів і вивантажень баз за розкладом, а ще перевірите відновлення на практиці.

Що вміє Windows Server Backup і де його межі#

Windows Server Backup — вбудований компонент Windows Server 2016–2025 із графічною консоллю та утилітою командного рядка wbadmin. Він спирається на службу тіньового копіювання томів (VSS): на час копіювання Windows робить миттєвий знімок тому, тож відкриті файли потрапляють у копію в узгодженому стані, а користувачам не треба виходити із системи.

Що копіюємоПараметр wbadminЩо всередині
Копія «на голе залізо» (bare metal)-allCriticalУсі критичні томи, тобто ті, де містяться операційна система та її стан. З такої копії сервер відновлюють на порожні диски із середовища відновлення Windows (WinRE).
Стан системи-systemStateРеєстр, завантажувальні файли, а на контролері домену ще й Active Directory і SYSVOL. Даних користувачів тут немає.
Томи, папки, файли-include:D:\Shares,D:\DumpsРобочі дані: спільні папки, вивантаження баз.

Обмеження, про які варто знати до налаштування:

  • У мережевій папці зберігається лише остання версія. Нова копія того самого сервера в ту саму папку перезаписує попередню. Microsoft попереджає: якщо копіювання обірветься, можна лишитися взагалі без копії, — і радить класти копії в окремі підпапки. Кілька версій зберігається лише на локальному диску чи томі, але він розташований у тому самому сервері.
  • Розклад wbadmin enable backup — лише щоденний, у задані години. Диск, який ви вкажете як ціль розкладу, буде відформатовано.
  • Копії не шифруються, тож доступ до папки з ними треба обмежити.
  • Бази даних. MS SQL Server має власний VSS-компонент, тож його бази потрапляють у знімок узгодженими. PostgreSQL такого компонента не має: для нього знімок — те саме, що раптове вимкнення живлення. В обох випадках основою лишаються вивантаження засобами самої СУБД — див. «Резервні копії баз даних».

Звідси практична схема: образ системи робить wbadmin, версії файлів і вивантажень баз зберігає restic, а третю копію ви тримаєте поза сервером.

Що знадобиться#

  • Windows Server 2016 або новішої версії та обліковий запис із групи Administrators. Ліцензування в статті не розглядаємо.
  • Місце для копій поза дисками сервера. До серверів United Cloud входить місце для резервних копій на окремому сховищі, яке не залежить від сервера: 500 ГБ на лінійках Стандарт, Бізнес, Потужність і Ультра, 100 ГБ на Класик; на Лайт його немає, для Турбо дивіться картку сервера. Розширити сховище до 10 ТБ можна як платну опцію через підтримку. Самостійно копій воно не робить: копіювання налаштовуєте ви.
  • Значення в прикладах умовні: сервер SRV01, C: — система, D:\Shares — файли, D:\Dumps — вивантаження баз; HOST, NAME і PASSWORD — ім’я хоста, назва сховища (вона ж логін) і пароль із листа підтримки.
  • Команди wbadmin, schtasks та icacls виконуйте в командному рядку (cmd), запущеному від імені адміністратора: PowerShell розбиває списки через кому на окремі аргументи.

Як підключити сховище#

Сховище працює з NFS (лише версії 3), SMB (лише версії 2.0), FTP і FTPS. wbadmin пише тільки на локальний том або в спільну папку за UNC-шляхом, тож у Windows сховище підключають по SMB, а шлях до нього має вигляд \\HOST\NAME. Версію протоколу Windows узгоджує автоматично. FTP для wbadmin і restic не підходить, FTPS знадобиться хіба що для ручного перенесення файлів.

  1. Попросіть підтримку додати IP-адресу сервера до списку доступу сховища й надіслати параметри підключення. З інших адрес, зокрема з офісу, сховище недоступне. Пароль теж змінює підтримка.
  2. Перевірте доступ у командному рядку від імені адміністратора (зірочка — запит пароля):
    net use \\HOST\NAME /user:NAME *
    dir \\HOST\NAME
    Щоб сховище з’явилося в Провіднику як диск, виконайте в PowerShell New-PSDrive -Name B -PSProvider FileSystem -Root \\HOST\NAME -Credential NAME -Persist. Але в командах wbadmin і restic вказуйте повний шлях: мережеву ціль wbadmin приймає лише як UNC-шлях, а літера диска й підключення net use існують тільки у вашому сеансі.

З однієї IP-адреси до сховища може бути не більше трьох одночасних з’єднань, тож не запускайте кілька копіювань водночас.

Крок 1 Установіть компонент#

У PowerShell від імені адміністратора:

Install-WindowsFeature Windows-Server-Backup
Get-WindowsFeature Windows-Server-Backup

Друга команда має показати стан Installed.

Крок 2 Зробіть першу копію вручну#

wbadmin start backup -backupTarget:\\HOST\NAME -allCritical -systemState -vssCopy -user:NAME -password:PASSWORD -quiet
  • Копія з’явиться в папці WindowsImageBackup\SRV01 на сховищі. Параметри -user: і -password: передають логін і пароль сховища.
  • Параметр -vssCopy (типовий режим) не чіпає журналів застосунків. -vssFull вмикайте лише тоді, коли бази на цих томах не копіює жодна інша програма: інакше, попереджає Microsoft, можна зламати її ланцюжок інкрементних чи різницевих копій.

Крок 3 Налаштуйте розклад#

Щодня — wbadmin enable backup#

Увага. Якщо в -addtarget вказати не мережеву папку, а диск, Windows відформатує його, і всі дані на ньому зникнуть. Перед запуском перевірте ціль; диски та їхні ідентифікатори показує wbadmin get disks. Розклад скасовує wbadmin disable backup, але даних на відформатованому диску це не поверне.

Параметри -user і -password передають логін і пароль сховища. За документацією Microsoft, цей користувач має входити до групи Administrators або Backup Operators на самому сервері; якщо wbadmin відмовляється приймати логін сховища, перевірте доступ командою net use з розділу вище і зверніться до підтримки. Увімкніть розклад у cmd:

wbadmin enable backup -addtarget:\\HOST\NAME -schedule:02:30 -allCritical -systemState -vssCopy -user:NAME -password:PASSWORD -quiet

Час у -schedule — за годинником сервера; кілька запусків на добу записують через кому: 02:30,14:30. Поточні налаштування показує wbadmin enable backup без параметрів. Якщо підтримка змінить пароль сховища, вимкніть розклад і ввімкніть його знову з новим паролем.

Інша періодичність — Планувальник завдань#

Система змінюється рідше, ніж дані, тож образ часто досить робити раз на тиждень. Такого розкладу wbadmin не підтримує, тому створіть завдання замість щоденного розкладу (якщо його вже ввімкнено, спершу виконайте wbadmin disable backup):

schtasks /create /tn "WSB weekly image" /sc weekly /d SUN /st 03:00 /ru SYSTEM /rl HIGHEST /tr "wbadmin start backup -backupTarget:\\HOST\NAME -allCritical -systemState -vssCopy -user:NAME -password:PASSWORD -quiet"

Завдання працює від імені SYSTEM і підключень вашого сеансу не бачить, тож логін і пароль сховища доводиться вписати в команду, і в завданні вони зберігаються відкритим текстом. Якщо це неприйнятно, лишіть щоденний розклад.

Крок 4 Версії файлів і вивантажень баз: restic із VSS#

restic шифрує копії, зберігає лише змінені блоки й тримає стільки версій, скільки ви задасте; на жовтень 2026 року остання версія — 0.19.1. У Windows параметр --use-fs-snapshot змушує його читати файли з VSS-знімка, тож у копію потрапляють і ті, що заблоковані іншими програмами. Для цього потрібні права адміністратора. Для Linux є окрема стаття.

  1. Завантажте restic_0.19.1_windows_amd64.zip зі сторінки випусків, на яку веде документація restic, звірте контрольну суму (Get-FileHash) з файлом SHA256SUMS, розпакуйте архів і збережіть програму як C:\Program Files\restic\restic.exe.
  2. Створіть папку C:\Scripts, а в ній два файли по одному рядку: restic-password.txt із довгим випадковим паролем репозиторію (латинські літери й цифри) і storage-password.txt з паролем сховища. Залиште доступ до папки тільки для SYSTEM та адміністраторів:
    icacls C:\Scripts /inheritance:r /grant:r "*S-1-5-18:(OI)(CI)F" "*S-1-5-32-544:(OI)(CI)F"
    Пароль репозиторію збережіть ще й поза сервером: без нього репозиторій не відкриєте.
  3. Збережіть скрипт C:\Scripts\restic-backup.ps1. Він підключає сховище (завданню від імені SYSTEM підключення вашого сеансу недоступні), робить знімок і лишає 14 щоденних, 8 щотижневих і 12 щомісячних версій; --prune звільняє місце, яке займала решта:
    $restic = 'C:\Program Files\restic\restic.exe'
    $env:RESTIC_REPOSITORY = '\\HOST\NAME\restic'
    $env:RESTIC_PASSWORD_FILE = 'C:\Scripts\restic-password.txt'
    $smb = Get-Content 'C:\Scripts\storage-password.txt'
    net use \\HOST\NAME /user:NAME $smb | Out-Null
    & $restic backup D:\Shares D:\Dumps --use-fs-snapshot --tag daily
    if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
    & $restic forget --keep-daily 14 --keep-weekly 8 --keep-monthly 12 --prune
    exit $LASTEXITCODE
  4. У PowerShell від імені адміністратора створіть репозиторій, зробіть перший знімок і зареєструйте щоденне завдання. Сховище має бути підключене в цьому сеансі (net use з розділу про підключення), а час завдання оберіть так, щоб вивантаження баз до того моменту вже завершилися:
    Set-Alias restic 'C:\Program Files\restic\restic.exe'
    $env:RESTIC_REPOSITORY = '\\HOST\NAME\restic'
    $env:RESTIC_PASSWORD_FILE = 'C:\Scripts\restic-password.txt'
    restic init
    restic backup D:\Shares D:\Dumps --use-fs-snapshot --tag daily
    $action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-NoProfile -File C:\Scripts\restic-backup.ps1'
    $trigger = New-ScheduledTaskTrigger -Daily -At '01:30'
    Register-ScheduledTask -TaskName 'restic-backup' -Action $action -Trigger $trigger -User 'NT AUTHORITY\SYSTEM' -RunLevel Highest

Репозиторій, як і образ системи, доступний лише з серверів, адреси яких підтримка внесла до списку доступу сховища. Щоб відновити дані на іншому сервері, попросіть підтримку відкрити доступ і з його IP-адреси.

Чому robocopy — не резервна копія#

robocopy з параметром /MIR робить дзеркало: усе, що на сервері видалили, зіпсували чи зашифрувала шкідлива програма, після наступного запуску стане таким самим і в копії. Версій немає, а файли, які застосунки тримають відкритими, скопіювати не вдасться. Для перенесення даних на новий сервер він годиться (див. чек-лист переїзду), для резервних копій — ні.

Як перевірити результат#

  1. Перегляньте список копій:
    wbadmin get versions
    Ідентифікатор версії записано в UTC, тому він не збігається з часом у рядку Backup time; у команди підставляйте саме ідентифікатор.
  2. Перегляньте вміст копії та відновіть із неї папку в окреме місце (ідентифікатор у прикладі — копія від 4 жовтня о 02:30 за київським часом):
    wbadmin get items -version:10/03/2026-23:30
    mkdir D:\RestoreTest
    wbadmin start recovery -version:10/03/2026-23:30 -itemType:File -items:C:\Windows\System32\drivers\etc -recursive -recoveryTarget:D:\RestoreTest -quiet
    Без -recoveryTarget файли повертаються на початкове місце. Порівняйте відновлені файли з оригіналами.
  3. Перевірте restic у вікні PowerShell, де задано псевдонім і змінні з кроку 4:
    restic snapshots
    restic check
    restic restore latest --target D:\RestoreTest --include /D/Dumps
    Шлях усередині знімка показує restic ls latest; відновлені файли з’являться в D:\RestoreTest\D\Dumps.
  4. Відновіть останнє вивантаження з цієї папки в окрему тестову базу й відкрийте її в обліковій системі. Порядок для PostgreSQL, MS SQL Server і BAS — у статті «Резервні копії баз даних».
  5. Наступного дня переконайтеся, що в обох списках з’явилися нові записи, а завдання в Планувальнику завершилися з кодом 0. Код 3 від restic означає, що знімок створено, але частину файлів прочитати не вдалося. Пробне відновлення повторюйте щокварталу.

Відновлення «на голе залізо» запускають із WinRE, завантаженого з інсталяційного носія, тож знадобиться віддалена консоль: у United Cloud її надають за запитом через підтримку, а у варіанті з Java до неї можна підключити ISO-образ. На лінійці Лайт консолі може не бути. Порядок дій узгодьте з підтримкою заздалегідь, а не в день аварії.

Типові помилки#

  • Перевіряти доступ до сховища лише зі свого сеансу. Мережеві диски й паролі, введені в сеансі RDP, для завдання від імені SYSTEM не існують. Вказуйте повний шлях \\HOST\NAME і передавайте логін і пароль сховища в самому завданні, як у прикладах вище; запустіть завдання вручну й перевірте код завершення.
  • Тримати пароль restic тільки на сервері. Втратите сервер — не відкриєте й репозиторій.
  • Не стежити за вільним місцем. Образ системи й репозиторій restic мають разом уміщатися в обсяг сховища. Коли місце закінчиться, сховище перейде в режим «лише читання», і нові копії не запишуться, доки ви його не звільните.
  • Вважати копією RAID або другий диск у сервері. Дзеркало рятує від відмови диска, а не від видалення чи шифрування — див. «Як перевірити програмний RAID і здоров’я дисків».

Що далі#

  • Режиму «лише додавання» сховище не має: процес на сервері, який може записувати копії, може їх і видалити, тож шифрувальник із правами адміністратора дістанеться й до них. Тому додайте третю копію поза сервером і сховищем — в офісі або на іншому майданчику, наприклад у другому репозиторії restic. Як розкласти копії, пояснює правило 3-2-1.
  • Якщо простій коштує дорого, розгляньте резервний майданчик.
  • Повний синтаксис — у довідці wbadmin на Microsoft Learn і в документації restic.
  • Сервери з місцем для резервних копій — у каталозі. Питання щодо підключення сховища — до підтримки: +38 044 206 08 08, info@united.net.ua.