Valida uma imagem do Backup do Windows Server?

2

Há algum tempo, eu uso o Windows Server Backup em um servidor Windows 2008 R2 para criar backups noturnos bare-metal em uma unidade de rede em caso de falha da unidade. O backup noturno se sobrescreve a cada noite.

Infelizmente setores defeituosos começaram a aparecer na minha unidade do sistema. Isso permitiu que o backup noturno fosse criado com setores defeituosos e, assim, destruindo qualquer possibilidade de restauração. Ele também substituiu o backup anterior, tornando todo o processo de backup inútil!

Estou usando o WSB como deveria ser usado? Como contornar o potencial de sobrescrever backups com um defeito que não pode ser restaurado ?????

É possível criar um script em lote que valide a integridade de um backup e, em seguida, transfere-o se verdadeiro? Como seria esse roteiro?

    
por Matias Nino 28.12.2011 / 22:43

1 resposta

4

Eu escrevi um arquivo em lote que começa às 4h, o que é garantido que depois de todos os meus backups terem terminado.

Ele RARs todas as pastas dentro de WindowsImageBackup (ou o que a pasta é chamada), dá-lhes um nome de arquivo com data e copia-os para um servidor secundário, e de lá eles são replicados para fora do site.

Dessa forma, eu tenho meses (anos?) de backups históricos, pelo menos um deles será bom.

Como não sobrescrevendo backups, a única maneira que o WSB permite que você faça isso é usar um dispositivo de armazenamento em bloco montado localmente (como um disco rígido, uma unidade USB ou um disco iSCSI).

Quanto à validação da imagem, eu tenho outro script que roda na noite de domingo no site remoto que pega uma imagem de backup aleatório dos últimos 7 dias, desativa o RAR, cria uma VM e a inicializa. Como ainda não terminei a parte do script, toda segunda-feira de manhã (quando me lembro) passo 5 minutos apenas iniciando o procedimento de restauração e depois verifico mais tarde para ver se foi bem-sucedido.

Em suma, parece um pouco gueto, mas esse cliente em particular tinha um orçamento muito limitado (leia-se: nenhum), então eu estava restrito a usar ferramentas gratuitas. E até agora funcionou muito bem.

Para ativar o WBS no nível do GPO, e agendar um backup completo todas as noites

@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:[email protected] -password:[password] -quiet -include:!_TEMPVAR!

Para arquivos RAR em arquivos com data e selo (executados no servidor que hospeda todos os compartilhamentos de arquivos de backup)

@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"
)

Mova os arquivos para o diretório de sincronização externo e limpe o diretório de sincronização

prepareoffsite.bat

SET _BACKUPPATH=C:\QNAPBackups\WindowsImageBackup\

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

copyoffsite.bat

Um pouco de explicação: O lote pega o nome do backup e passa por uma lista de arquivos txt, e em cada arquivo txt tem uma lista de todos os nomes das máquinas. Dependendo do arquivo em que o nome da máquina está, ele vai para uma pasta diferente (já que alguns são sincronizados todas as noites, outros semanalmente, dependendo da sua importância).

@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"
    
por 28.12.2011 / 22:54