我看到很多关于将文件从一个文档库复制到另一个的线程,但我想将完整的文档库从一个站点移动或复制到另一个站点(在同一个站点集中)。
.NET C# 代码可以做到这一点吗?
我看到很多关于将文件从一个文档库复制到另一个的线程,但我想将完整的文档库从一个站点移动或复制到另一个站点(在同一个站点集中)。
.NET C# 代码可以做到这一点吗?
不,这是不可能的——这就是来自第三方供应商的专业备份解决方案的用武之地。
如果您谈论的是一个简单的文档库,那当然不是那么难:
其次,您只需遍历库中的所有文档并使用SPFolder.Add
命令
SPFileCollection collFile = collFolder.Files;
foreach(SPFile file in collFile)
destFolder.Files.Add(file.Name, file.OpenBinary());
本例中的 collFolder 是原始文档库。destFolder 是新的文档库。您可以使用SPWeb.GetFolder(string doclibname)
.
我们在我们公司使用 ControlPoint 来做这些项目和列表/doclib 副本。我什至不必再用 Powershell 或 STSADM 弄脏我的手(除了我喜欢弄脏手的东西)。很棒的工具和很棒的技术支持团队。
您可以通过将列表保存为模板并选择“包含内容”标志并从目标站点中的模板重新创建新列表来做到这一点。
请注意,如果您对仅与源站点相关的列表进行了任何自定义(例如,在项目上启动了工作流程),则无法以这种方式复制列表。
要以编程方式执行此操作,只需使用SPListist.SaveAsTemplate()方法。
如果您有权访问 Central Admin,则可以对某些文档库执行粒度备份。比您可以在任何所需的网站下恢复它。此解决方案应该比逐个复制(和删除)项目更快。有关备份和恢复的更多信息,请参见http://blogs.msdn.com/b/russmax/archive/2009/10/21/sharepoint-2010-granular-backup-restore-part-1.aspx
在资源管理器视图中打开两个库并复制项目。但这不是代码解决方案,也不会复制元数据。
我想您可以尝试仅开放源代码和目标SPWeb
对象并在它们之间一一复制项目。您可能想阅读这篇文章:
http ://blog.mediawhole.com/2007/12/copying-sharepoint-document-library.html 。
作者展示了如何将文档库从一个站点复制到驻留在同一 Web 应用程序中的另一个站点。