We use Symantec Backup Exec for backups are some of our larger clients. Of course we have monitoring set up on these backup sets and jobs. We monitor when they fail, we have a verification phase to check if the content in the backup is correct and matches the data from the snapshot of the server, But of course this is not enough.
If you need absolute certainty that a backup is correct there is only ONE true way of testing it. Restore the backup to a different location and test if the restore jobs are able to run, For this we use the BEMCLI. The BEMCLI is a set of Powershell cmdlets that you can import on the backupexec machine itself and send powershell based commands to the server.
Lets build a very simple restore test, First we import the module BEMCLI to make sure we get all the BEcommands, a complete list of commands and a help file can be found here
Submit-BEFileSystemRestoreJob -FileSystemSelection C:\RestoreFolder -AgentServer Testserver.testdomain.local -NotificationRecipientList firstname.lastname@example.org -RedirectToPath \\BACKUPEXECSERVER\Restore
Lets dissect the command a little:
- ***S****ubmit-BEFileSystemRestoreJob*** simply means we want to start a restore job, as we do not have any date filter we want to try the restore from the latest backup set.
- -FileSystemSelection C:\RestoreFolder is the folder we would like to restore data from.
- -AgentServer is the server where C:\RestoreFolder is located.
- -NotificationRecipientList email@example.com I think this speaks for itself. What contact should be notified about this job. 🙂 Please note that this needs to be an existing recipient within the backupexec notification options!
- -RedirectToPath \\BACKUPEXECSERVER\Restore And of course, we want to put the files in a different location and not overwrite our existing copy, To do this I always create a “Restore” share to dump the files on.
Of course you can schedule this script using task schedulder and be done with it, you always restore C:\RestoreFolder…But that doesn’t sound like a good test does it? Always restoring the same file in a backup…Of course not! 😉 So that why we’ll now select a random file(not folder!) to restore.
$file = Get-ChildItem -Recurse -File \\Testserver.domain.local\c$\ Get-Random -count 1
Submit-BEFileSystemRestoreJob -FileSystemSelection $file.fullname -AgentServer Testserver.testdomain.local -NotificationRecipientList firstname.lastname@example.org -RedirectToPath \\BACKUPEXECSERVER\Restore
Of course the command is mostly the same as before, but the file selection is now random by using get-childitem and get-random. We select 1 random file from the server using its UNC path.(\\Testserver.domain.local\c$\). All you have to do is make sure the account you run this script under has the correct permissions, and of course that the FilesystemCollection object is in your backup selection list.