本文除特別說明外僅SharePoint 2007外,其他部分均為SharePoint 2010 。
資源回收筒機制
通常情況下,資源回收筒機制都有利於防止內容的永久刪除與誤刪除。
通過第一資源回收筒(End user Recycle Bin items),使用者可以自己找回已經刪除的項目,而不需要管理員介入。例如從備份檔案中進行還原等等。
雕蟲小技:點擊”Recycle Bin”後,在瀏覽器地址欄中輸入來清理資料: javascript:emptyItems();
註明:在07中可以使用清空資源回收筒來一次性操作。
通過第二資源回收筒(Delete from end user Recycle Bin items),還可以給使用者一個台階下,需要管理員來操作,並做合理的規劃。
一是需要為啟用第二資源回收筒合理規劃儲存空間。至少為第二資源回收筒分配第一資源回收筒20%左右的空間。也就是說,如果第一資源回收筒的空間為10G,那麼第二資源回收筒的空間最好為2G。
二是在啟用雙資源回收筒機制的時候,同時啟用自動清空機制。
另外需要注意,對於第二資源回收筒,系統還有一個預設的自動覆蓋策略。即當第二資源回收筒的空間已經達到其最大的容量時,新增加進去的檔案會覆蓋舊的檔案。這跟第一資源回收筒不同。第一資源回收筒如果滿的話,系統並不會自動覆蓋,而是會提醒使用者,空間已滿。此時使用者可以進行手工清除,以騰空磁碟空間容納新的檔案。
資源回收筒在網站日常維護中應該做好以下工作
一是最好使用資源回收筒機制。二是在自動刪除網站之前,最好能夠對網站的內容進行自動封存。
檢查資源回收筒清理任務(SharePoint 2007)
註明:SharePoint 2010有待確認。
timer job The job-recycle-bin-cleanup job被配置為每天從 11pm到6am之間來運行。我們可以使用stsadm.exe命令來查看:
stsadm -o getproperty -pn job-recycle-bin-cleanup -url http://moss
輸出的值為:
<Property Exist="Yes" Value="daily between 22:00:00 and 06:00:00" />
如何清空第二資源回收筒(Delete from end user Recycle Bin items)
預設只有“Delete Selection”的 功能,一頁最多隻能刪除200條資料。通常這裡的資料會迅速膨脹的很大,我們通常的做法是採用SharePoint物件模型寫個小程式。最高效的做法是使用Power Shell。
param([string]$Url, [switch]$help)[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")function GetHelp() {$HelpText = @"DESCRIPTION:NAME: Remove-SPSiteSecondStageRecycleBinEmpties the second-stage recycle bin for a Microsoft.SharePoint.SPSite CollectionPARAMETERS: -url Url to SharePoint Site CollectionSYNTAX:Remove-SPSiteSecondStageRecycleBin -url http://mossEmpties the second stage recycle bin for the SiteCollection.Remove-SPSiteSecondStageRecycleBin -helpDisplays the help topic for the script"@$HelpText}function Remove-SPSiteSecondStageRecycleBin([string]$url) { $siteCollection = New-Object Microsoft.SharePoint.SPSite($url); $recycleQuery = New-Object Microsoft.SharePoint.SPRecycleBinQuery; $recycleQuery.ItemState = [Microsoft.SharePoint.SPRecycleBinItemState]::SecondStageRecycleBin; $recycleQuery.OrderBy = [Microsoft.SharePoint.SPRecycleBinOrderBy]::Default; $recycledItems = $siteCollection.GetRecycleBinItems($recycleQuery); $count = $recycledItems.Count; for($i = 0; $i -lt $count; $i++) { $g = New-Object System.Guid($recycledItems[$i].ID); $recycledItems.Delete($g); } $siteCollection.Dispose()}if($help) { GetHelp; Continue }if($url) { Remove-SPSiteSecondStageRecycleBin -url $url }