Robocopy to the backup rescue
So recently I had a client that had a SBS 2008 box that had a RAID issue. It had what known as a Punctured RAID , I will call it PR in this post. You can more on that here:
http://www.dell.com/support/Article/us/en/04/438291/EN. The wonderful thing about a PR is they rear their ugly head till its too late. Well this client was too late.
The main reason I found out about this PR is that this clients Backup Exec kept failing. After fighting with the Backup Exec for over a week I finally found in the error logs something about this PR. This is what was making the Backup Exec fail. I could get into a lengthy discussion on this and at some point in time I might do that.
Needless to say because we couldn't use anything we threw at this server to back it up with out failing, and we tried a lot of options, I decided to use robocopy to try and keep at least a file level backup running for this server till we came up with a final solution for this issue.
So this is the script I ended up making. I ran this as a nightly scheduled task with System user privileges.
I know the script is kinda hacky and could be written better and more efficiently but it has a lot going on in it and I wanted to share.
So basically it stops some services, robocopys files to an external drive then starts the services back up.
With the mir option in the robocopy it made the copy very fast every night because it only grabbed what had been modified.
I used "net stop" and "net start" for some of the services.
I also used Powershell command Stop-Service and Start-Services to start/start other services.
I broke out the main directories in the c: drive so that i could log what was happening in each directory when the robocopy ran.
In the robocopy sections I used the options:
/MIR :: MIRror a directory tree (equivalent to /E plus /PURGE).
/XJD :: eXclude Junction points for Directories.
/R:n :: number of Retries on failed copies: default 1 million.
/W:n :: Wait time between retries: default is 30 seconds.
/TEE :: output to console window, as well as the log file
/LOG:file :: output status to LOG file (overwrite existing log).
net stop
msexchangeadtopology /y
net stop
msftesql-exchange /y
net stop
msexchangeis /y
net stop
msexchangesa /y
net stop
iisadmin /y
PowerShell.exe -Command
"Stop-Service *sql* -Force"
robocopy "c:\Boot" "F:\Backuprobocopy\Boot"
/MIR /XJD /w:1 /r:1 /V /tee /log:"f:\backuprobocopyBoot.log"
robocopy "c:\dell" "F:\Backuprobocopy\dell"
/MIR /XJD /w:1 /r:1 /V /tee /log:"f:\backuprobocopydell.log"
robocopy "c:\drivers" "F:\Backuprobocopy\drivers"
/MIR /XJD /w:1 /r:1 /V /tee /log:"f:\backuprobocopydrivers.log"
robocopy "c:\ExchangeSetupLogs" "F:\Backuprobocopy\ExchangeSetupLogs"
/MIR /XJD /w:1 /r:1 /V /tee /log:"f:\backuprobocopyExchangeSetupLogs.log"
robocopy "c:\inetpub" "F:\Backuprobocopy\inetpub"
/MIR /XJD /w:1 /r:1 /V /tee /log:"f:\backuprobocopyinetpub.log"
robocopy "c:\OpenManage" "F:\Backuprobocopy\OpenManage"
/MIR /XJD /w:1 /r:1 /V /tee /log:"f:\backuprobocopyOpenManage.log"
robocopy "c:\PerfLogs" "F:\Backuprobocopy\PerfLogs"
/MIR /XJD /w:1 /r:1 /V /tee /log:"f:\backuprobocopyPerfLogs.log"
robocopy "c:\Program
Files" "F:\Backuprobocopy\Program Files" /MIR /XJD /w:1 /r:1 /V /tee /log:"f:\backuprobocopyProgram
Files.log"
robocopy "c:\Program
Files (x86)" "F:\Backuprobocopy\Program Files (x86)" /MIR /XJD /w:1 /r:1 /V /tee /log:"f:\backuprobocopyProgram
Files (x86).log"
robocopy "c:\ProgramData" "F:\Backuprobocopy\ProgramData"
/MIR /XJD /w:1 /r:1 /V /tee /log:"f:\backuprobocopyProgramData.log"
robocopy "c:\Scripts" "F:\Backuprobocopy\Scripts"
/MIR /XJD /w:1 /r:1 /V /tee /log:"f:\backuprobocopyScripts.log"
robocopy "c:\Shared
Data" "F:\Backuprobocopy\Shared Data" /MIR /XJD /w:1 /r:1
/V /tee
/log:"f:\backuprobocopyShared
Data.log"
robocopy "c:\Users" "F:\Backuprobocopy\Users"
/MIR /XJD /w:1 /r:1 /V /tee /log:"f:\backuprobocopyUsers.log"
robocopy "c:\Windows" "F:\Backuprobocopy\Windows"
/MIR /XJD /w:1 /r:1 /V /tee /log:"f:\backuprobocopyWindows.log"
rem robocopy
"c:\WSUS" "F:\Backuprobocopy\WSUS"
/MIR /XJD /w:1 /r:1 /V /tee /log:"f:\backuprobocopyWSUS.log"
net start
msexchangeadtopology /y
net start
msftesql-exchange /y
net start
msexchangeis /y
net start
msexchangesa /y
net start
iisadmin /y
PowerShell.exe -Command
"Start-Service -name """MSsql*""" "
PowerShell.exe -Command
"Start-Service -name """MSExchange*""" "
PowerShell.exe -Command
"Start-Service -name """BackupExec*""" "