SharePoint 生产环境文件归档
2024-09-04 14:45:08
前言
最近,用户提出数据库大小太大,所以,希望把文件归档。至于归档,该怎么做呢?
正文
我们提出的解决方案,占用数据库最主要的就是各种文档,那就按照时间为限制,超过一年的文档全部备份,由用户的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运维的操作,我们更加推荐命令行。
这样的操作有什么优点呢?
- 操作简单明了,不需要进行太多的代码开发,没有复杂的业务;
- 我们保存下来,可以多次使用,比如这个备份,非常的灵活,修改也不需要重新编译;
- 类似CMD命令的方式,更容易让IT人员和非SharePoint 开发接受。
PowerShell 文件下载:https://github.com/linyus/BackupSPAttachment
最新文章
- Android教程收集贴
- 转载请注明出处: https://github.com/qiu-deqing/FE-interview
- (转)Eclipse和MyEclipse安装和使用git(egit)图解笔记
- Leetcode 255. Verify Preorder Sequence in Binary Search Tree
- centos mongodb cluster install 完全版
- 如何让Button使用自定义icon
- 关于几种编程过程中的注释(TODO、FIXME、XXX等)
- Norflash控制器的Verilog建模之一
- CSS的clip-path
- StringBuilder和Append的一个程序及一个基础概念
- 【rational rose】用例图
- 查询sql 并且读取
- 一个Windows Service项目的完整开发过程
- Winform- IrisSkin.dll轻松实现窗体换肤功能
- 在ASP中调用DLL的方法
- 流动python - 写port扫描仪和各种并发尝试(多线程/多进程/gevent/futures)
- 浅解.Net分布式锁的实现
- 并行设计模式(一)-- Future模式
- bzoj 2005 能量采集 莫比乌斯反演
- mvc 返回一个对象 到视图接收
热门文章
- Qt Installer Framework翻译(3-5)
- Java入门 - 语言基础 - 10.条件语句
- .net Core Autofac稍微高级一点的方法
- 指定表单使用的路由 Specifying the Route Used by a Form
- Creating Form Elements --Using BeginForm and EndForm 使用内建的Form辅助器方法 精通ASP.NET MVC 5
- FreeImage 结合 VB6 使用技巧
- GP工作室——系统设计
- Ecplise中指定tomcat里Web项目发布文件
- 解决docker容器无网络、无法连接互联网----长期更新
- 实验17:NAT