longpan 发表于 2015-9-24 10:59:12

深入浅出SharePoint—使用回收站

  本文除特别说明外仅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($Url, $help)
::LoadWithPartialName("Microsoft.SharePoint")
function GetHelp()
{
$HelpText = @"
DESCRIPTION:
NAME: Remove-SPSiteSecondStageRecycleBin
Empties the second-stage recycle bin for a Microsoft.SharePoint.SPSite Collection
PARAMETERS:
-url      Url to SharePoint Site Collection
SYNTAX:
Remove-SPSiteSecondStageRecycleBin -url http://moss
Empties the second stage recycle bin for the SiteCollection.
Remove-SPSiteSecondStageRecycleBin -help
Displays the help topic for the script
"@
$HelpText
}
function Remove-SPSiteSecondStageRecycleBin($url)
{
$siteCollection = New-Object Microsoft.SharePoint.SPSite($url);
$recycleQuery = New-Object Microsoft.SharePoint.SPRecycleBinQuery;
$recycleQuery.ItemState = ::SecondStageRecycleBin;
$recycleQuery.OrderBy = ::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 }
  
页: [1]
查看完整版本: 深入浅出SharePoint—使用回收站