前言

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

  正文

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

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

  •   文档库

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

  •   列表

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

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

  1. [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
  2.  
  3. #SharePoint variables
  4. $SiteUrl = "http://siteurl"
  5. $WebUrl = "weburl"
  6. $LibraryName = "listname"
  7.  
  8. #Save Path
  9. $SavePath = "C:\ListBackup20200227"
  10.  
  11. #Get SPSite
  12. $site= New-Object Microsoft.SharePoint.SPSite($SiteUrl)
  13.  
  14. #Get SPWeb
  15. $Web = $site.OpenWeb($WebUrl)
  16.  
  17. #Get SPList
  18. $List = $Web.Lists[$LibraryName]
  19.  
  20. #Loop SPListItem. If SPFolder, skip the item
  21. foreach ($ListItem in $List.Items){
  22. #Set SavePath
  23. $SaveFolder = $SavePath + "\" + $ListItem.ID
  24.  
  25. #Check if SavePath exists already. If not, create SavePath
  26. if (!(Test-Path -path $SaveFolder)){  
  27. New-Item $SaveFolder -type directory
  28. }
  29.  
  30. #Get all SPAttachment
  31. $AttachmentsColl = $ListItem.Attachments
  32.  
  33. #Loop all SPAttachment
  34. foreach ($Attachment in $AttachmentsColl){
  35. #Get attachment
  36. $file = $web.GetFile($listItem.Attachments.UrlPrefix + $Attachment)
  37. $bytes = $file.OpenBinary()
  38.  
  39. #Save attachment
  40. $FilePath = $SaveFolder + " \" + $Attachment
  41. $fs = new-object System.IO.FileStream($FilePath, "OpenOrCreate")
  42. $fs.Write($bytes, 0 , $bytes.Length)
  43. $fs.Close()
  44. }
  45. }

  WHY PowerShell

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

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

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

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

SharePoint 生产环境文件归档的更多相关文章

  1. IP 解析器(IpParser) test 和 生产环境 实现

    注意:之前我maven居然没有引入 StringUtils 的包,然后引入了一个路径类似,但其实包路径不一样的 StringUtils ,居然是划掉的状态,像这样 StringUtils ,这个其实不 ...

  2. 把Sharepoint Desinger 工作流部署到生产环境

    下面是比较简单的方法,把Designer工作流从开发环境部署到生产环境. 在Sharepoint Desinger 2013 中点击需要部署的工作流. 点击保存,发布. 点Export to Visi ...

  3. [django]Django的css、image和js静态文件生产环境配置

    前言:在Django中HTML文件如果采用外联的方式引入css,js文件或者image图片,一般采用<link rel="stylesheet" href="../ ...

  4. Jenkins实现生产环境部署文件的回滚操作(Windows)

    由于dotnet项目的生产环境环境部署工具比较少,所以我使用jenkins作为生产环境的自动化部署工具. 既然有回滚操作,那么就会有部署操作:要实现回滚,先要实现部署的操作,我在jenkins搭建了一 ...

  5. SharePoint迁移数据到生产环境

    SharePoint迁移数据到生产环境步骤如下: 1. 安装部署好生产环境 2. 配置管理中心 3. 安装SPD工具 4. 备份数据库(放在数据库服务器) 5. 备份wsp包(部署在管理中心服务器) ...

  6. Django_生产环境静态文件配置

    需求: 当Django项目运行在线上的时候,需要关闭debug模式,那么Django设置中,静态文件路径配置将会失效,如何解决这个问题? 问题原因: Django默认关闭debug模式,Django错 ...

  7. 使用C#把Tensorflow训练的.pb文件用在生产环境

    训练了很久的Tf模型,终于要到生产环境中去考研一番了.今天花费了一些时间去研究tf的模型如何在生产环境中去使用.大概整理了这些方法. 继续使用分步骤保存了的ckpt文件 这个貌似脱离不了tensorf ...

  8. spring boot实现不同生产环境下的文件配置

    配置不同生产环境 本文适用于开发环境下需要打包项目至生产环境,避免开发环境的配置文件泄露. 设置maven 作用:1. 手动调节运行时的不同环境 2. 打包时可以不会有其它环境的文件 注:每次换环境前 ...

  9. 中小研发团队架构实践之生产环境诊断工具WinDbg

    生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具,Dump文件类似于飞机的黑匣子,记录着生产环境程序 ...

随机推荐

  1. 初探ASP.NET Core 3.x (4) - 项目的重要组成

    目录 O 前请提要 I 启动部分 I.1 Program类 I.2 Startup类 I.2.1 这个类干什么呢?? I.2.2 特征?? I.3 appsettings.json I.4 launc ...

  2. Java入门 - 语言基础 - 22.异常处理

    原文地址:http://www.work100.net/training/java-exception.html 更多教程:光束云 - 免费课程 异常处理 序号 文内章节 视频 1 概述 2 Exce ...

  3. 【javaWeb】sendRedirect和forward原理及区别总结

    一.原理.  1. Forward        该图的交互过程如下: ① 浏览器访问Servlet1. ② Servlet1想让Servlet2对客户端的请求进行响应,于是调用forward()方法 ...

  4. MyBatis5——Mybatis整合log4j、延迟加载

    开启日志:Log4j (1)加入jar包 (2)在conf.xml中配置开启日志: <settings>         <!-- 开启日志,并指定要使用的具体日志为log4j -- ...

  5. HGE引擎改进——2014/2/18 和 2014/2/27

    2014/2/18 更新 hgehelper库:增加hgeSkeleton类,该类用于播放骨骼动画 增加工具骨骼动画编辑器(AnimationEd),该工具用于骨骼动画的编辑 2014/2/27 更新 ...

  6. ThreeJS 物理材质shader源码分析(像素着色器)

    再此之前推荐一款GLTF物理材质在线编辑器https://tinygltf.xyz/ 像素着色器(meshphysical_frag.glsl) #define PHYSICAL uniform ve ...

  7. postman发送请求的简单操作

    发送请求常用的是post和get 两者的区别是: 1.post比get安全,因为参数直接暴露在url中,不能用来传递敏感信息 2.get参数通过url传递,post放在request body中 3. ...

  8. python之路:day2

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  9. SQL 两个时间段 不能重复语句

    DECLARE @BeginDate datetime; DECLARE @EndDate datetime; set @BeginDate='2015-03-2' set @EndDate='201 ...

  10. Springboot | @RequestBody 接收到的参数对象属性为空

    背景 今天在调试项目的时候遇到一个坑,用Postman发送一个post请求,在Springboot项目使用@RequestBody接收时参数总是报不存在,但是多次检查postman上的请求格式以及项目 ...