Назад | Перейти на главную страницу

Проверить образ резервной копии Windows Server?

Я уже довольно давно использую Windows Server Backup на сервере Windows 2008 R2 для создания ночных резервных копий на сетевом диске в случае сбоя диска. Ночная резервная копия перезаписывается каждую ночь.

К сожалению, на моем системном диске начали появляться сбойные сектора. Это позволяло создавать ночные резервные копии с поврежденными секторами, что исключает возможность восстановления. Он также перезаписал предыдущую резервную копию, что сделало весь процесс резервного копирования бесполезным!

Использую ли я WSB по назначению? Как мне избежать возможности перезаписи резервных копий неисправными, которые невозможно восстановить ?????

Можно ли создать пакетный сценарий, который проверяет целостность резервной копии и затем выгружает ее, если это правда? Как бы выглядел такой сценарий?

Я написал командный файл, который запускается в 4 часа утра, что гарантированно будет после завершения всех моих резервных копий.

Он выполняет RAR все папки внутри WindowsImageBackup (или как там эта папка называется), дает им имя файла с отметкой даты и копирует их на вторичный сервер, а оттуда они реплицируются за пределы сайта.

Таким образом, у меня есть исторические резервные копии за месяцы (годы?), По крайней мере одна из которых будет хорошей.

Что касается отказа от перезаписи резервных копий, единственный способ, которым WSB позволяет это сделать, - это использовать локально смонтированное блочное запоминающее устройство (например, жесткий диск, USB-накопитель или iSCSI-диск).

Что касается проверки образа, у меня есть еще один сценарий, который запускается в воскресенье вечером на удаленном сайте, который захватывает случайный образ резервной копии за последние 7 дней, без RAR, создает виртуальную машину и загружает ее. Поскольку я еще не закончил писать сценарии, каждый понедельник утром (насколько я помню) я трачу 5 минут на запуск процедуры восстановления, а затем проверяю ее позже, чтобы убедиться, что она удалась.

В целом это звучит немного гетто, но у этого конкретного клиента был очень ограниченный бюджет (читай: нет), поэтому я был ограничен использованием бесплатных инструментов. И пока это действительно хорошо работает.


Чтобы включить WBS на уровне GPO, и планируйте полное резервное копирование каждую ночь

@echo off

SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION

FOR /f %%I IN (
 'wmic volume get driveletter'
) DO (
  ECHO %%I | FIND ":"
  IF ERRORLEVEL 1 (
   echo Failed: %%I
  ) ELSE (
   ECHO %%I | FIND "D:"
   IF ERRORLEVEL 1 (
     IF NOT [!_TEMPVAR!]==[] SET _TEMPVAR=!_TEMPVAR!,
     SET _TEMPVAR=!_TEMPVAR!%%I
    ) ELSE (
      echo Skipping CD-ROM
    )
  )

)

wbadmin enable backup -addtarget:\\enetsbackup1\Backups -schedule:23:00 -systemState -allCritical -vssFull -user:backupservice@enets.local -password:[password] -quiet -include:!_TEMPVAR!

В файлы RAR в файлы с датой и паролем (запускается на сервере, на котором размещены все общие файловые ресурсы резервных копий)

@ECHO OFF

SET _WINRAR=C:\Program Files\WinRAR\Rar.exe
SET _BACKUPPATH=C:\QNAPBackups\WindowsImageBackup\

REM RAR All backups into date-named files

forfiles -p %_BACKUPPATH% -m *.rar -d -3 -c "cmd /c del @path"

FOR /D %%I IN (%_BACKUPPATH%*) DO (
    "%_WINRAR%" a -ag-YYYYMMDD -ep1 -hp[password] -m2 -df  "%%I.rar" "%%I"
)

Переместите файлы в каталог синхронизации за пределами сайта и очистите каталог синхронизации

prepareoffsite.bat

SET _BACKUPPATH=C:\QNAPBackups\WindowsImageBackup\

forfiles -p %_BACKUPPATH% -m *.rar -c "cmd /c C:\Batches\CopyOffsite.bat @path"

copyoffsite.bat

Небольшое объяснение: пакет берет имя резервной копии и просматривает список файлов txt, и в каждом файле txt есть список всех имен машин. В зависимости от того, в каком файле находится имя компьютера, он попадает в другую папку (так как некоторые синхронизируются каждую ночь, другие - еженедельно, в зависимости от того, насколько они важны).

@ECHO OFF

SET _OFFSITEDIR=C:\QNAPBackups\Offsite\

FOR /f "tokens=1 delims=- " %%a in ("%1") DO (
  FOR /f "tokens=4 delims=\ " %%b in ("%%a") DO (
    FIND /C /I "%%b" C:\Batches\OFFSITE-DB.txt | find ": 1" 1>nul && GOTO Offsite_Database
    FIND /C /I "%%b" C:\Batches\OFFSITE-TS.txt | find ": 1" 1>nul && GOTO Offsite_Terminal
    FIND /C /I "%%b" C:\Batches\OFFSITE-EX.txt | find ": 1" 1>nul && GOTO Offsite_Exchange
    FIND /C /I "%%b" C:\Batches\OFFSITE-A1.txt | find ": 1" 1>nul && GOTO Offsite_AllInOne
    FIND /C /I "%%b" C:\Batches\OFFSITE-MS.txt | find ": 1" 1>nul && GOTO Offsite_Miscella

   GOTO :NotFound
  )
)

:Offsite_Database
MOVE /Y %1 %_OFFSITEDIR%Databases\
GOTO EOF

:Offsite_Terminal
MOVE /Y %1 %_OFFSITEDIR%TerminalServers\
GOTO EOF

:Offsite_Exchange
MOVE /Y %1 %_OFFSITEDIR%Exchange\
GOTO EOF

:Offsite_AllInOne
MOVE /Y %1 %_OFFSITEDIR%AllInOne\
GOTO EOF

:Offsite_Miscella
MOVE /Y %1 %_OFFSITEDIR%Misc\
GOTO EOF

:NotFound
ECHO %1 >> C:\Batches\OFFSITE-NotFound.txt
GOTO EOF

:EOF

forfiles -p %_OFFSITEDIR%Databases\ -m *.rar -d -3 -c "cmd /c del @path"
forfiles -p %_OFFSITEDIR%TerminalServers\ -m *.rar -d -3 -c "cmd /c del @path"
forfiles -p %_OFFSITEDIR%Exchange\ -m *.rar -d -3 -c "cmd /c del @path"
forfiles -p %_OFFSITEDIR%AllInOne\ -m *.rar -d -3 -c "cmd /c del @path"
forfiles -p %_OFFSITEDIR%Misc\ -m *.rar -d -3 -c "cmd /c del @path"