3

我看到很多关于将文件从一个文档库复制到另一个的线程,但我想将完整的文档库从一个站点移动或复制到另一个站点(在同一个站点集中)。

.NET C# 代码可以做到这一点吗?

4

6 回答 6

2

不,这是不可能的——这就是来自第三方供应商的专业备份解决方案的用武之地。

如果您谈论的是一个简单的文档库,那当然不是那么难:

  • 您首先在目的地创建一个新的文档库,然后应用您在当前库中的所有设置
  • 其次,您只需遍历库中的所有文档并使用SPFolder.Add命令

    SPFileCollection collFile = collFolder.Files; foreach(SPFile file in collFile) destFolder.Files.Add(file.Name, file.OpenBinary());

本例中的 collFolder 是原始文档库。destFolder 是新的文档库。您可以使用SPWeb.GetFolder(string doclibname).

于 2012-07-19T20:40:32.827 回答
2

我们在我们公司使用 ControlPoint 来做这些项目和列表/doclib 副本。我什至不必再用 Powershell 或 STSADM 弄脏我的手(除了我喜欢弄脏手的东西)。很棒的工具和很棒的技术支持团队。

于 2012-10-18T11:26:57.037 回答
1

您可以通过将列表保存为模板并选择“包含内容”标志并从目标站点中的模板重新创建新列表来做到这一点。

  1. 转到列表设置并选择“将列表另存为模板”
  2. 填写字段并选中“包含内容”复选框。
  3. 转到您的目标站点。
  4. 转到站点操作 -> 更多选项。选择您之前保存的模板。
  5. 你完成了。

请注意,如果您对仅与源站点相关的列表进行了任何自定义(例如,在项目上启动了工作流程),则无法以这种方式复制列表。

要以编程方式执行此操作,只需使用SPListist.SaveAsTemplate()方法。

于 2012-07-20T08:12:20.443 回答
0

如果您有权访问 Central Admin,则可以对某些文档库执行粒度备份。比您可以在任何所需的网站下恢复它。此解决方案应该比逐个复制(和删除)项目更快。有关备份和恢复的更多信息,请参见http://blogs.msdn.com/b/russmax/archive/2009/10/21/sharepoint-2010-granular-backup-restore-part-1.aspx

于 2012-07-20T16:55:47.857 回答
0

在资源管理器视图中打开两个库并复制项目。但这不是代码解决方案,也不会复制元数据。

于 2013-02-04T20:15:58.417 回答
0

我想您可以尝试仅开放源代码和目标SPWeb对象并在它们之间一一复制项目。您可能想阅读这篇文章: http ://blog.mediawhole.com/2007/12/copying-sharepoint-document-library.html 。

作者展示了如何将文档库从一个站点复制到驻留在同一 Web 应用程序中的另一个站点。

于 2012-07-19T20:39:22.033 回答