stsadm backup using SPSiteBackup.wsf
I'm using the command line backup script. Here.. <?xml version="1.0" ?> <package> <job id="SPSiteBackup"> <runtime> <description> ************************************************************ SPS 2003/2007 Site Backup Tool ************************************************************ </description> <named name="virt" helpstring="The Virtual Server you wish to backup SPS Site from." type="string" required="1" /> <named name="path" helpstring="The UNC or file path you want to backup SPS Sites to." type="string" required="1" /> <named name="smtpserver" helpstring="SMTP Server to send email report to." type="string" required="0" /> <named name="reportto" helpstring="Email address to send email report to." type="string" required="0" /> <example> Example: cscript SPSiteBackup.wsf /path:"\\remoteserver\sharename" cscript SPSiteBackup.wsf /path:"c:\sitebackups" /smtpserver:"smtpserver.mycompany.com" /report:"SPSAdmin@mycompany.com" </example> </runtime> <script language="VBScript"> <![CDATA[ On Error Resume Next '=================================================================== ' Comments about the script '=================================================================== 'Microsoft Windows SharePoint Services provides administrators a command-line 'tool to backup and restore Web sites called stsadm.exe. Using this tool you 'can perform a site-by-site backup and restore. However, to perform a backup 'of all the sites hosted by Microsoft Windows SharePoint Services requires 'administrators to run the command-line tool for each site or write a batch file 'to back up all sites. Running the command-line tool by hand or maintaining 'a batch file in a dynamic environment can be time consuming. ' 'Luckily, the SPS 2003/2007 Site Backup Tool (SPSiteBackup) has been written to 'fully automate the job of site backups. To perform this automation SPSiteBackup 'uses stsadm to query a list of all the sites from Microsoft Windows SharePoint 'Services. SPSiteBackup then uses this list to then backup each site using stsadm. '=================================================================== ' Check args '=================================================================== Dim StdOut, StdIn Set StdOut = WScript.StdOut Set StdIn = WScript.StdIn If WScript.Arguments.Named.Exists("virt") = FALSE Then WScript.Arguments.ShowUsage() WScript.Quit() End If If WScript.Arguments.Named.Exists("path") = FALSE Then WScript.Arguments.ShowUsage() WScript.Quit() End If If WScript.Arguments.Named.Exists("smtpserver") = TRUE Then If WScript.Arguments.Named.Exists("reportto") = FALSE Then StdOut.WriteLine("Please define reportto.") StdOut.WriteLine(vbNullString) StdOut.WriteLine("Click Enter to continue...") StdIn.ReadLine() WScript.Arguments.ShowUsage() WScript.Quit() End If End If If WScript.Arguments.Named.Exists("reportto") = TRUE Then If WScript.Arguments.Named.Exists("smtpserver") = FALSE Then StdOut.WriteLine("Please define smtpserver.") StdOut.WriteLine(vbNullString) StdOut.WriteLine("Click Enter to continue...") StdIn.ReadLine() WScript.Arguments.ShowUsage() WScript.Quit() End If End If Const ForReading = 1 Const ForWriting = 2 Const ForAppending = 8 ReDim arrSiteRecords(0) Dim FSO, objShell Dim strVirt, strPath, strReportTo Dim strFileName, strTempFile, strLogFile Dim dtmThisMinute, dtmThisHour Dim dtmThisDay, dtmThisMonth, dtmThisYear Set FSO = CreateObject("Scripting.FileSystemObject") Set objShell = WScript.CreateObject("Wscript.Shell") strVirt = WScript.Arguments.Named("virt") strPath = WScript.Arguments.Named("path") strSMTPServer = WScript.Arguments.Named("smtpserver") strReportTo = WScript.Arguments.Named("reportto") dtmThisSecond = PadDigits(Second(Now), 2) dtmThisMinute = PadDigits(Minute(Now), 2) dtmThisHour = PadDigits(Hour(Now), 2) dtmThisDay = PadDigits(Day(Now), 2) dtmThisMonth = PadDigits(Month(Now), 2) dtmThisYear = Year(Now) strFileName = dtmThisYear & "-" & dtmThisMonth & "-" _ & dtmThisDay & "-" & dtmThisHour & "-" & dtmThisMinute & "-" & dtmThisSecond '-------------------- ' Create log file and sites file '-------------------- If Not FSO.FolderExists(strPath & "\logs") Then FSO.CreateFolder(strPath & "\logs") End If strTempFile = strPath & "\logs\" & strFileName & ".sites" strLogFile = strPath & "\logs\" & strFileName & ".log" Set objLogFile = FSO.CreateTextFile(strLogFile, ForWriting, True) '=================================================================== ' Backup Sites '=================================================================== Mess "########################################" Mess "# STS Site Backup #" Mess "########################################" Mess "Start Time: " & dtmThisYear & "-" & dtmThisMonth & "-" &_ dtmThisDay & "-" & dtmThisHour & "-" & dtmThisMinute & "-" & dtmThisSecond Mess vbNullString 'Mess strVirt 'Mess strTempFile '-------------------- ' EnumSites '-------------------- StatStart "Enum Sites" strErrorCode = objShell.Run("cmd /c stsadm.exe -o enumsites -url " & strVirt & " > " & strTempFile, 0, True) If strErrorCode <> 0 Then ' Write to console StdOut.WriteLine(" Critical Error: stsadm command failed") ' Write to logfile objLogFile.WriteLine(" Critical Error: stsadm command failed") WScript.Quit() End If StatDone Set objTempFile = FSO.OpenTextFile(strTempFile, ForReading) count = -1 Do While objTempFile.AtEndOfStream <> True strText = objTempFile.ReadLine If InStr(strText, "http") Then strTemp = Trim(strText) strWriteLineTextStart = Mid(strTemp,12) intChrPosition = InStr(1,strWriteLineTextStart,Chr(34)) - 1 strWriteLineTextFinal = Mid(strTemp,12,intChrPosition) count = count + 1 If count > UBound(arrSiteRecords) Then ReDim Preserve arrSiteRecords(count) arrSiteRecords(count) = strWriteLineTextFinal End If Loop Mess vbNullString '-------------------- ' Backup Sites '-------------------- Mess "Backing Up Sites:" For Each SiteRecord In arrSiteRecords intTextLength = Len(SiteRecord) intChrPosition = InStrRev(SiteRecord,Chr(47)) + 1 strWriteLineTextFinal = Mid(SiteRecord,intChrPosition,intTextLength) StdOut.Write " " & strWriteLineTextFinal objLogFile.Write " " & strWriteLineTextFinal strErrorCode = objShell.Run("cmd /c stsadm.exe -o backup -url " & SiteRecord & " -filename " _ & strPath & "\" & strWriteLineTextFinal & "-" & strFileName & ".dat", 0, True) If strErrorCode <> 0 Then StdOut.WriteLine(";ERR: stsadm command failed") objLogFile.WriteLine(";ERR: stsadm command failed") Else Mess ";[DONE]" End If Next Mess "Done Backing Up Sites" objTempFile.Close objLogFile.Close Set objTempFile = Nothing Set objLogFile = Nothing '-------------------- ' Send Email '-------------------- If strReportTo <> "" Then ' Define consts Const cdoSendUsingMethod = "http://schemas.microsoft.com/cdo/configuration/sendusing" Const cdoSendUsingPort = 2 Const cdoSMTPServer = "http://schemas.microsoft.com/cdo/configuration/smtpserver" ' This is the sender of the report arrEmailAddress = Split(strReportTo,"@") intArraySize = UBound(arrEmailAddress) strFrom = "MOSS_Services@" & arrEmailAddress(intArraySize) ' This is the subject strSubject = "MOSS Site Backup Report for " & dtmThisYear & "-" & dtmThisMonth & "-" &_ dtmThisDay & "-" & dtmThisHour Set objMessage = CreateObject("CDO.Message") Set objConfig = CreateObject("CDO.Configuration") Set objFields = objConfig.Fields With objFields .Item(cdoSendUsingMethod) = cdoSendUsingPort .Item(cdoSMTPServer) = strSMTPServer .Update End With With objMessage Set .Configuration = objConfig .To = strReportTo .From = strFrom .Subject = strSubject .AddAttachment strLogFile .HTMLBody = "Attached is your MOSS site backup for " & strVirt End With objMessage.Send Set objMessage = Nothing Set objConfig = Nothing Set objFields = Nothing strHTMLBody = vbNullString strFrom = vbNullString strSubject = vbNullString arrEmailAddress = vbNullString intArraySize = vbNullString End If '=================================================================== ' Subs '=================================================================== '-------------------- ' General Message Sub '-------------------- Sub Mess(Message) ' Write to console StdOut.WriteLine(Message) ' Write to logfile objLogFile.WriteLine(Message) End Sub '-------------------- ' General Start Message Sub '-------------------- Sub StatStart(Message) ' Write to console StdOut.Write(Message) ' Write to logfile objLogFile.Write(Message) End Sub '-------------------- ' General Finish Message Sub '-------------------- Sub StatDone ' Write to console StdOut.Write(vbTab & vbTab) StdOut.WriteLine("[OK]") ' Write to logfile objLogFile.Write(vbTab & vbTab) objLogFile.WriteLine("[OK]") End Sub '=================================================================== ' Functions '=================================================================== ' This function is used to pad date variables that contain only on digit. Function PadDigits(n, totalDigits) If totalDigits > len(n) then PadDigits = String(totalDigits-len(n),"0") & n Else PadDigits = n End If End Function ]]> </script> </job> </package> I call the script using these parameters... cscript C:\SPSiteBackup.wsf /virt:"http://moss:43526" /path:"\\server\Mossbackups\Records" /smtpserver:"smtp.mail.com" /reportto:me@someurl.com This works fine when my sharepoint site is on port 80, when I specify a non-standard port number I get a zero length backup file... Any ideas....???? Thanks!!!! Dan
April 30th, 2010 9:19pm

its better to go to the Michael Noels blog and check to comments section . May be you will get the answer for this.Aniket
Free Windows Admin Tool Kit Click here and download it now
June 4th, 2010 9:41am

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics