The SharePoint Backup Augmentation Cmdlets (or SharePointBAC) are a set of PowerShell cmdlets that extend SharePoint 2010’s and SharePoint 2013’s native backup and restore functionality.
I put these cmdlets together because I honestly believe that the out-of-the-box (OOTB) backup and restore capabilities of SharePoint are pretty solid – they just need a little help in a few critical areas. Those critical areas are what I attempt to address with the cmdlets.
The cmdlets are packaged as a SharePoint solution package (WSP), and installing them in your environment is as simple as adding the solution to a farm and deploying it. Once you do that, the cmdlets become available for your use in the SharePoint 2010/2013 Management Shell.
What can you do with the cmdlets?
Quite a few things, actually. Here are some of the more obvious examples:
Obtain information on backup operations
The SharePoint Backup Augmentation Cmdlets (via the Get-SPBackupCatalog cmdlet) make it easy to determine how much space your backups are consuming, whether or not there were errors on the last backup, how long backup operations take to run, and more.
Archive old backup sets
It is oftentimes desirable to maintain archives of past backup sets, but the platform tools provide no help in this area. With SharePointBAC and the Export-SPBackupCatalog cmdlet, one or more older backup sets can be exported from the backup location and archived as a zip file to save space.
Groom backup storage locations
When using Backup-SPFarm, there is no built-in mechanism to "rotate" backups. Each new backup takes up disk space, and deleting old backups (grooming) is difficult to do in any automated fashion. The SharePoint Backup Augmentation Cmdlets (using the Remove-SPBackupCatalog cmdlet) address this gap.
Automate important notifications
Many administrators would like to receive an e-mail notification following a backup operation. Through the Send-SPBackupStatus cmdlet, the SharePoint Backup Augmentation Cmdlets make it easy to send an e-mail summary of the last backup operation that was carried out. An example of such a notification appears below:
Well, the cmdlets are just building blocks that center around a new “backup catalog” object. Backup catalogs represent a backup location (which you specify when backups are run) and expose properties about that location and the backups it contains. Between the cmdlets, the properties exposed by backup catalogs, and your own PowerShell scripting abilities, the sky is the limit. You might …
- Re-run a backup (using a different location) if an error occurs in the last backup
- Run differential backups until differentials get to be 50% of the size of the last full backup … and then run a new full backup
- Adjust grooming/retention based on the total storage being consumed at the backup location