Automating WSS 3.0 Backups with a Script
December 3, 2009 2 Comments
Although SQL backups of the content databases for a Windows SharePoint Services farm can be used for data recovery, it’s usually a good idea to also perform backups through the stsadm.exe utility to facilitate site and object-level restores. I recently took on a task to script a more robust solution for the automation of WSS farm backups, which I will describe here.
The stsadm.exe utility can be used to backup in two modes, site collection and catastrophic. The site collection method backups up an individual site and content for an individual site, specified by URL, and the catastrophic backup method backs up the entire farm or a specified object in a full or differential mode. I opted to go with the catastrophic backup method in this script to support differential backups and eliminate the requirement to enumerate individual sites for backup operations.
WSS Backup Script Overview
The script is a bit too long to post in its entirity, but it can be downloaded here. The script accepts three parameters:
- The target backup directory path
- The backup type (full or differential)
- The number of backups to maintain
The backup operation is relatively simple: the script uses the WScript.Shell.exec method to execute the stsadm.exe command (after querying the registry to determine the install path of WSS).
Command = sPath & “\STSADM.exe -o backup -Directory ” & BackupDir & ” -BackupMethod ” & BackupType
Set oExec = WshShell.Exec(command)
While Not oExec.StdOut.AtEndOfStream
OutPut = oExec.StdOut.ReadAll
Do While oExec.Status = 0
To improve monitoring of the operation, the script performs a shell execution to the eventcreate.exe utility to log status to the Windows Application Log. (Although the WScript.Shell supports basic EventLog logging, I wanted to control the event source and ID, so the eventcreate.exe utility seemed to be a better option).
If blSuccessful then
Command = “Eventcreate /L Application /T INFORMATION /ID 943 /SO “”SharePoint Backups”” /D “” ” & sMesg & “”
Command = “Eventcreate /L Application /T WARNING /ID 944 /SO “”SharePoint Backups”” /D “” ” & sMesg & “”
Set oExec = WshShell.Exec(command)
The most complex operation of this WSS backup automation script is the maintenance of old backups. The stsadm backup operation maintains an XML file named spbrtoc.xml in the backup directory with meta-data related to past backups. While an example of deleting backups older than a certain time interval can be found here, I wanted to maintain past backups based on a count (x number of fulls, x number of differentials). To implement this, the script loads meta-data from the Table of Contents XML file into an array, determines the number of backups to be purged (correlated to the current backup operation type – full or differential), flags the oldest backups for deletion, and then deletes the related backup directories and XML nodes.
Automating With System Center Operations Manager 2007
While this script could just be scheduled with the Windows Task Scheduler, I wanted to centralize the scheduling, parameter control, and monitoring with Ops Mgr. I have created an Operations Manager 2007 Management Pack that includes two rules for scheduling of the backup script (full and differential). The rules are targeted to the Microsoft Windows SharePoint Services 3.0 Server class and will utilize the WSS 3.0 Management Pack’s “WSS Action Account” runas profile for credentials to WSS. Additionally, I have added an eventlog-based monitoring for monitoring for failed backups. The schedule, backup directory target, and number of backups to keep can be overridden for each rule. The rules and monitor are disabled by default but are enabled through overrides for any WSS servers added to the “WSS 3.0 Servers for Automated Backup” group that is included in the MP. Notes on setting the overrides for the parameters can be found in the rule descriptions.
The management pack and script can both be downloaded here.