關於SharePoint備份
SharePoint的備份是一個數據副本,主要用於在系統出現故障后還原和恢復該數據。
備份的工具主要有以下幾種(寫的不全,歡迎補充。)
- SharePoint管理中心的備份
- Windows PowerShell備份
- 數據庫備份
備份工具差異和方法整理
根據微軟的最佳實踐,根據網站集的大小來選擇適當的備份工具。
一般來說,小於15GB的網站集,用PowerShell的Backup-SPSite命令進行備份。
15GB到100GB的網站集,通過數據庫直接備份網站的內容數據庫。
對於大於100GB的網站集,則可以通過數據庫差異備份的方法對網站集進行備份。
SharePoint管理中心備份
SharePoint管理中心的備份,主要分為“場備份和還原”和“粒度備份”。
場備份和還原
通過“場備份和還原”可以備份服務器場的一些配置信息,包括配置數據庫、解決方案、服務器設置和內容、映射等信息。
你可以將備份放在本地文件夾中,執行備份會生成spbr+4位數字的文件夾和spbrtoc的XML文件。
使用服務器場備份會備份一些服務器場的配置信息和網站的內容。一般不使用場備份來備份網站內容,推薦使用PowerShell中的Backup-SPSite命令或者管理中心的網站集備份或者直接備份數據庫的方式來進行網站內容的備份。(我嘗試過在不同環境下對SharePont整個場進行備份,一般不會成功,具體原因不知。不過還是可以對個別的配置信息進行備份的。)
執行備份的時候不會影響服務器的狀態,但是會消耗服務器的資源,所以建議在非工作時間執行備份操作。
你可以在管理中心或者用PowerShell增加線程數來提高備份和還原的速度,當然這會消耗更多的資源。線程數默認為3,最高可以加到10個線程。
粒度備份
通過粒度備份,可以進行網站集的備份或者導出網站和列表。
SharePoint PowerShell備份
其實SharePoint管理中心的備份均可以通過PowerShell命令來實現。
簡要寫一下幾條常用的PowerShell備份命令。
備份網站集 (SharePoint Server 2010) Backup-SPSite -Identity <Site collection name> -Path <backup file> [-Force] [-NoSiteLock] [-UseSqlSnapshot] [-Verbose]
Backup-SPSite http://server_name/sites/site_name -Path C:\Backup\site_name.bak
此示例將位於 http://server_name/sites/site_name 的網站集備份到 C:\Backup\site_name.bak 文件。
Backup-SPSite http://server_name/sites/site_name -Path C:\Backup\site_name.bak -UseSqlSnapshot
此示例使用數據庫快照備份網站集,以確保備份完整性。
通過PowerShell、CMD以及Windows自帶的計划任務實現無人值守的自動備份
現在做一個網站集的備份計划,備份文件的保留周期為7天。
先寫一個Windows PowerShell腳本。
Add-PSSnapin Microsoft.SharePoint.PowerShell backup-spsite -identity $args[0] -path $args[1] -force
該腳本用了backup-spsite來備份SharePoint網站集,並將網站的URL和備份路徑設成兩個參數,將其保存成后綴名為ps1的文件,比如backup.ps1
寫一個批處理腳本,用於執行備份和寫入日志。
@echo off SET SOURCE_SITE=http://rzh-sp-204 SET DEST=C:\backup\RZH-SP-204_%date:~0,10%.bak SET LOG=C:\backup\BackupLog.txt echo %DATE% %time:~,5% :開始備份網站:%SOURCE_SITE%>> %LOG% powershell -command C:\backup.ps1 %SOURCE_SITE% %DEST% echo %DATE% %time:~,5% :網站:%SOURCE_SITE%備份完成>> %LOG% @echo on
第1、2、3行是設定三個參數的值,分別是網站的URL、備份的路徑和log的位置。
第4、6行是寫入log
第5行執行PowerShell腳本。
將腳本保存成bat文件,比如backup.bat
最后寫一個用於刪除備份的腳本,存成delete.bat
@echo off forfiles /p "C:\backup" /m *.bak /d -7 /c "cmd /c echo deleting @file ... && del /f @path" @echo on
forfiles用於選擇一個文件並在該文件上執行一個命令。
/p表示開始搜索的路徑
/m表示根據搜索掩碼搜索文件
/d選擇文件上一次修改日期大於或等於(+)當前日期加“dd”天,或者小於或等於(-)當前日期減“dd”天。
/c表示為每個文件執行的命令
寫完腳本,接着就要創建計划任務了。
特別注意:由於Server 2008 R2默認的時間格式為yyyy/M/d,所以如果通過%date:~0,10%的方式生成備份文件路徑時會報錯。
需要在控制面板中的區域和語言的格式選項卡下,將短日期格式改為yyyy-M-d
在Windows管理工具中選擇“計划任務”
接着選擇創建任務,在“常規”中輸入名稱,並勾選“使用最高權限運行”。
在“觸發器”中新建觸發器,選擇每天22點運行一次。
在“操作”選項卡中新建操作,選擇“啟動程序”並瀏覽到backup.bat文件
其他設置默認即可,最后確認,就完成了SharePoint網站集的定期備份計划。
定期刪除備份文件的方法與定期備份的方法相同,自需要將執行的腳本改成delete.bat就可以了。
數據庫備份
當SharePoint網站的內容比較多、內容數據庫比較大的時候,通常會選用數據庫備份的方法,SharePoint內容數據庫的備份與PowerShell直接備份網站集最大的不同就在於還原方式的不同。前者需要使用數據庫附加還原的方式進行網站的還原,后者則可以使用Restore-SPSite命令來還原網站。
通過數據庫的維護計划實現數據庫定期備份
在之前的博客中已近介紹了數據庫定期備份的方法,主要是通過SQL自帶的維護任務,對SharePoint內容數據庫(WSS_Content)進行定期的完全備份、差異備份和刪除過期備份。
寫這篇博客很早之前就起了個頭,一直沒往下寫,今天終於收尾了。寫它主要是想對SharePoint各種備份的方法做一下梳理,時間久了,總容易忘了,也希望更大家分享一下,歡迎補充和提議。