zoukankan      html  css  js  c++  java
  • SharePoint 生产环境文件归档

      前言

      最近,用户提出数据库大小太大,所以,希望把文件归档。至于归档,该怎么做呢?

      正文

      我们提出的解决方案,占用数据库最主要的就是各种文档,那就按照时间为限制,超过一年的文档全部备份,由用户的IT自行保存到他们的存储中。

      还好用户的数据规模不是特别的大,我们使用程序来处理也不会特别的耗时。

    •   文档库

      关于文档库处理起来比较容易,我们只需要用Windows 资源管理器视图,把文档先拷贝下来进行备份,然后再进行删除就可以了。

    •   列表

      列表处理起来,还是比较有难度的,我们需要把所有项目的列表附件都备份,然后进行删除。

      我们这里讲的就是如何批量备份,至于删除,只需要稍稍改一下下面的脚本,就可以了。

    [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
    
    #SharePoint variables
    $SiteUrl = "http://siteurl"
    $WebUrl = "weburl"
    $LibraryName = "listname"
    
    #Save Path
    $SavePath = "C:ListBackup20200227"
    
    #Get SPSite
    $site= New-Object Microsoft.SharePoint.SPSite($SiteUrl)
    
    #Get SPWeb
    $Web = $site.OpenWeb($WebUrl)
    
    #Get SPList
    $List = $Web.Lists[$LibraryName]
    
    #Loop SPListItem. If SPFolder, skip the item
    foreach ($ListItem in $List.Items){
        #Set SavePath
        $SaveFolder = $SavePath + "" + $ListItem.ID 
    
        #Check if SavePath exists already. If not, create SavePath
        if (!(Test-Path -path $SaveFolder)){   
            New-Item $SaveFolder -type directory
        }
    
        #Get all SPAttachment
        $AttachmentsColl = $ListItem.Attachments
    
        #Loop all SPAttachment
        foreach ($Attachment in $AttachmentsColl){
            #Get attachment
            $file = $web.GetFile($listItem.Attachments.UrlPrefix + $Attachment)
            $bytes = $file.OpenBinary()
    
            #Save attachment
            $FilePath = $SaveFolder + " " + $Attachment
            $fs = new-object System.IO.FileStream($FilePath, "OpenOrCreate")
            $fs.Write($bytes, 0 , $bytes.Length)
            $fs.Close()
        }
    }

      WHY PowerShell

      对于业务并不复杂但是要求代码效率的操作,我们都倾向于使用SharePoint PowerShell 来进行操作,尤其是对于文档备份这样更像是IT运维的操作,我们更加推荐命令行。

      这样的操作有什么优点呢?

    1.   操作简单明了,不需要进行太多的代码开发,没有复杂的业务;
    2.   我们保存下来,可以多次使用,比如这个备份,非常的灵活,修改也不需要重新编译;
    3.   类似CMD命令的方式,更容易让IT人员和非SharePoint 开发接受。

      PowerShell 文件下载:https://github.com/linyus/BackupSPAttachment

  • 相关阅读:
    非空约束
    leetcode208
    leetcode207
    leetcode395
    leetcode116
    leetcode105
    leetcode131
    leetcode73
    leetcode200
    leetcode17
  • 原文地址:https://www.cnblogs.com/jianyus/p/12369030.html
Copyright © 2011-2022 走看看