Veiligstellen van uw SharePoint 2007-omgeving
Er zijn vier manieren om uw SharePoint-omgeving veilig te stellen, deze zijn:
- Met behulp van de Central Administration gebruikersinterface
- Met behulp van de stsadm commandline tool
- Met behulp van geautomatiseerde back-up scripts
- Met behulp van commerciele producten als bijvoorbeeld AvePoint DocAve Backup and Recovery en Microsoft System Center Data Protection Manager(DPM)
Ik persoonlijk gebruik nooit de eerste optie. Uit eerdere ervaringen met het backuppen van SharePoint omgevingen, leerde ik dat de stsadm-tool de beste manier is om een back-up te maken en te herstellen. Sommigen zullen anders beweren, maar ik voel me comfortabel met deze tool omdat ik het bijna voor al mijn SharePoint werkzaamheden gebruik, en het heeft me tot nu toe niet in de steek gelaten.
Doordat de mogelijkheden van de stsadm commandline tool enorm breed zijn, richt deze post zich alleen op het veiligstellen van Site Collections(NLD :Siteverzamelingen).
Voor het veiligstellen van siteverzamelingen kan gebruik worden gemaakt van VBScript. De VBScript kun je binnen de MMC-module “Taakplanner” inplannen als een geautomatiseerde taak om op een bepaald tijdstip acties op de SharePoint-omgeving uit te voeren.
Om het back-up van siteverzamelingen beter toe te lichten, heb ik een voorbeeldscript gemaakt, lees verder..
Aandachtspunten :
- Bij het veiligstellen van siteverzamelingen zijn alleen volledige backups mogelijk.
- Bij het terugplaatsen van siteverzamelingen worden veel systeembronnen aangesproken, waardoor de performance van de overige webapplicaties lager zullen zijn.
- Indien de grootte van de siteverzameling die u wilt back-uppen 15 GB of kleiner is, wordt door Microsoft het gebruik van de stsadm command-line tool aanbevolen.
- Indien de grootte van de siteverzameling die u wilt back-uppen tussen 15 GB tot 100 GB groot is, wordt door Microsoft het gebruik van Microsoft SQL Server 2005 of Microsoft System Center Data Protection Manager 2007 aanbevolen.
Backup Script – Siteverzameling
Het onderstaande backup-script draagt zorg voor het maken van een “volledig” back-up van de siteverzameling(en) van de webapplicatie http://DEMOSERVER:32191/. Vooraf wordt het weeknummer en datum achterhaald en de daarvoor benodigde folders op de fileshare \\DEMOSERVER\Backups\BackupFolder\ aangemaakt. Voor de duur van de back-up, wordt de siteverzameling ingesteld op alleen-lezen met behulp van de Setsitelock operatie in de stsadm command-line tool. Hiermee wordt voorkomen dat gebruikers activiteiten zoals het toevoegen of veranderen van de inhoud de back-up proces interfereren. Wanneer de back-up voltooid is, wordt de toegang tot de siteverzameling weer opengezet.
Voorbeeldscript
Option Explicit
Const STSADM_PATH = "C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe"
Dim objFso, objFsoDay, objFsoWeek, objFolder, objFile, objFiles, objShell, objExec, objXml, objSc, objUrl, strUrl, strFileName, strCmd, strResult, datThisDay, datThisMonth, datThisYear, datCurrent, strAction, objFolderWeekOfYear, objShellDay, objFilesDay, objFileDay, strDirectory, strDailyBackupFolder, datDate, datLongDate, weekOfYear, strFolderWeekOfYear, objFolderWeek, objShellWeek, BasePath, i, fso, f, f1, sf, CalcResult, fNameArray(),fName
BasePath = "\\DEMOSERVER\Backups\BackupFolder\"
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFso.GetFolder(BasePath)
Set objFiles = objFolder.Files
datDate = Now()
weekOfYear = DatePart("ww",datDate)
strFolderWeekOfYear = objFolder &"\"& weekOfYear
'Delete Backup Folders older then 10 days old.
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(BasePath)
Set sf = f.SubFolders
For Each f1 in sf
CalcResult = DateDiff("d",f1.DateCreated,Now)
if CalcResult > 10 then
ReDim preserve fNameArray(i)
fNameArray(i) = f1.Name
i = i + 1
end if
Next
For Each fName in fNameArray
fso.DeleteFolder(BasePath & "\" & fName)
Next
' Create the Folder for "Week of Year"
Set objFsoWeek = CreateObject("Scripting.FileSystemObject")
If objFsoWeek.FolderExists(strFolderWeekOfYear) Then
Set objFolderWeek = objFsoWeek.GetFolder(strFolderWeekOfYear)
Else
Set objFolderWeek = objFsoWeek.CreateFolder(strFolderWeekOfYear)
End If
If err.number = vbEmpty then
Set objShellWeek = CreateObject("WScript.Shell")
objShellWeek.run ("Explorer" &" " & strFolderWeekOfYear & "\" )
Else WScript.echo "VBScript Error: " & err.number
End If
' Create the Folder for "Daily Backup"
datLongDate = FormatDateTime(datDate, 1)
strDailyBackupFolder = "\"& Replace(datLongDate, ",", "") & "\"
strDirectory = strFolderWeekOfYear & strDailyBackupFolder
Set objFsoDay = CreateObject("Scripting.FileSystemObject")
If objFsoDay.FolderExists(strDirectory) Then
Set objFolderWeekOfYear = objFsoDay.GetFolder(strDirectory)
Set objFilesDay = objFolderWeekOfYear.Files
For Each objFileDay in objFilesDay
objFileDay.Delete(True)
Next
Else
Set objFolderWeekOfYear = objFsoDay.CreateFolder(strDirectory)
End If
If err.number = vbEmpty then
Set objShellDay = CreateObject("WScript.Shell")
objShellDay.run ("Explorer" &" " & strDirectory & "\" )
Else WScript.echo "VBScript Error: " & err.number
End If
datThisDay = DatePart("d", Date())
datThisMonth = DatePart("m", Date())
datThisYear = DatePart("yyyy", Date())
datCurrent = datThisYear & "_" & datThisMonth & "_" &datThisDay
Set objShell = CreateObject("WScript.Shell")
Set objExec = objShell.Exec(STSADM_PATH & " -o enumsites -url http://DEMOSERVER:32191/")
strResult = objExec.StdOut.ReadAll
Set objXml = CreateObject("MSXML2.DOMDocument")
objXml.LoadXML(strResult)
Dim strCmdGetSiteLock, strCmdSetSiteLock, strCmdSetSiteUnLock, objShellGetSiteLock,objShellSetSiteLock,objShellUnLockSite
Set objShellGetSiteLock = CreateObject("WScript.Shell")
Set objShellSetSiteLock = CreateObject("WScript.Shell")
Set objShellUnLockSite = CreateObject("WScript.Shell")
'Loop through each site collection and call stsadm.exe to make a backup.
For Each objSc in objXml.DocumentElement.ChildNodes
strUrl = objSc.Attributes.GetNamedItem("Url").Text
strFileName = strDirectory & "Backup_WebAppName" & Replace(Replace(strUrl, "http://DEMOSERVER", ""),":32191", "_") & datCurrent & ".bak"
'Locking site collection before the backup process starts
strCmdGetSiteLock = STSADM_PATH & " -o getsitelock -url """ + strUrl + """"
strCmdSetSiteLock = STSADM_PATH & " -o setsitelock -url """ + strUrl + """ -lock readonly "
objShellGetSiteLock.Exec(strCmdGetSiteLock)
objShellSetSiteLock.Exec(strCmdSetSiteLock)
'Site locked
strCmd = STSADM_PATH & " -o backup -url """ + strUrl + """ -filename """ + strFileName + """"
strAction = "Backing up site collection " & strUrl & " to file " & strFileName & " using the following command " & strCmd
objShell.Exec(strCmd)
'UnLocking site collection after the backup process ends
strCmdSetSiteUnLock = STSADM_PATH & " -o setsitelock -url """ + strUrl + """ -lock none "
objShellUnLockSite.Exec(strCmdSetSiteUnLock)
'Site lock removed
Next
Restore backup Siteverzameling
C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\STSADM.exe" -o restore -url "http://demoserver:32191/" -filename "\\DEMOSERVER\Backups\BackupFolder\Backup_WebAppName_2009_12_3.bak" -overwrite
Je kunt ook nog de content databases back-uppen met behulp van jobs in SQL server. Deze kan je later weer terug koppelen als content database.
Wat zijn jou ervaringen hier mee?