我已经在Windows 2008 R2服务器上使用了Windows Server Backup,现在已经有一段时间了,在驱动器出现故障的情况下,创build夜间裸机备份到networking驱动器。 夜间备份每晚覆盖自己。
不幸的是坏扇区开始出现在我的系统驱动器上。 这使得夜间备份可以创build坏扇区,从而摧毁任何恢复的可能性。 它也覆盖了以前的备份,从而使整个备份过程变得毫无价值!
我是否正在使用WSB? 我如何规避覆盖无法恢复的错误备份的潜力?????
是否有可能做一个批处理脚本validation备份的完整性,然后卸载它如果是真的? 这样的脚本会是什么样子?
我写了一个batch file,从凌晨4点开始,这是保证我的备份完成后。
它会将WindowsImageBackup所有文件夹(或任何该文件夹被调用的文件夹)RAR,给他们一个date标记的文件名,并将其复制到辅助服务器,然后从那里复制到现场。
这样我就有几个月(历史)的历史备份了,至less其中一个会是好的。
至于不覆盖备份,WSB允许您执行此操作的唯一方法是使用本地安装的块存储设备(如硬盘驱动器,USB驱动器或iSCSI磁盘)。
至于validation镜像,我还有另一个脚本,在远程站点周日晚上运行,抓取最近7天内的一个随机备份镜像,un-RAR创build一个虚拟机并启动它。 因为我还没有完成脚本部分,每个星期一早上(当我记得的时候),我花了5分钟才开始恢复过程,然后再检查它是否成功。
总而言之,这听起来有点贫民窟,但这个特定的客户有一个非常有限的预算(阅读:无),所以我被限制使用免费工具。 到目前为止,它的工作非常好。
@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!
@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"