SharePoint的備份是一個數據副本,主要用於在系統出現故障後還原和恢復該數據。html
備份的工具主要有如下幾種(寫的不全,歡迎補充。)shell
根據微軟的最佳實踐,根據網站集的大小來選擇適當的備份工具。數據庫
通常來講,小於15GB的網站集,用PowerShell的Backup-SPSite命令進行備份。api
15GB到100GB的網站集,經過數據庫直接備份網站的內容數據庫。服務器
對於大於100GB的網站集,則能夠經過數據庫差別備份的方法對網站集進行備份。ide
SharePoint管理中心的備份,主要分爲「場備份和還原」和「粒度備份」。工具
經過「場備份和還原」能夠備份服務器場的一些配置信息,包括配置數據庫、解決方案、服務器設置和內容、映射等信息。網站
你能夠將備份放在本地文件夾中,執行備份會生成spbr+4位數字的文件夾和spbrtoc的XML文件。spa
使用服務器場備份會備份一些服務器場的配置信息和網站的內容。通常不使用場備份來備份網站內容,推薦使用PowerShell中的Backup-SPSite命令或者管理中心的網站集備份或者直接備份數據庫的方式來進行網站內容的備份。(我嘗試過在不一樣環境下對SharePont整個場進行備份,通常不會成功,具體緣由不知。不過仍是能夠對個別的配置信息進行備份的。)線程
執行備份的時候不會影響服務器的狀態,可是會消耗服務器的資源,因此建議在非工做時間執行備份操做。
你能夠在管理中心或者用PowerShell增長線程數來提升備份和還原的速度,固然這會消耗更多的資源。線程數默認爲3,最高能夠加到10個線程。
經過粒度備份,能夠進行網站集的備份或者導出網站和列表。
其實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
此示例使用數據庫快照備份網站集,以確保備份完整性。
如今作一個網站集的備份計劃,備份文件的保留週期爲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
第一、二、3行是設定三個參數的值,分別是網站的URL、備份的路徑和log的位置。
第四、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各類備份的方法作一下梳理,時間久了,總容易忘了,也但願更你們分享一下,歡迎補充和提議。