我看到很多关于将文件从一个文档库复制到另一个文档库的线程,但我想将一个完整的文档库从一个站点移动或复制到另一个站点(在同一个站点集合中)。
.NET C#代码是否可以实现?
答案 0 :(得分: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)
将文档库作为文件夹。
答案 1 :(得分:2)
我们在公司中使用ControlPoint来执行这些项目和列表/ doclib副本。我甚至不用再用Powershell或STSADM弄脏我的手了(除了我喜欢弄脏的东西)。非常棒的工具和一个伟大的技术支持团队。
答案 2 :(得分:1)
您可以通过将列表保存为模板并选择“包含内容”标记并从目标网站中的模板重新创建新列表来实现。
请注意,如果您对仅与源站点相关的列表进行了任何自定义(例如,在项目上启动了工作流程),则无法以这种方式复制列表。
要以编程方式执行此操作,只需使用SPListist.SaveAsTemplate()方法。
答案 3 :(得分:0)
我想你可以尝试只打开源和目标SPWeb
对象,并逐个复制它们之间的项目。您可能想阅读这篇文章:
http://blog.mediawhole.com/2007/12/copying-sharepoint-document-library.html
作者演示了如何将文档库从一个站点复制到另一个驻留在同一Web应用程序中的站点。
答案 4 :(得分:0)
如果您有权访问Central Admin,则可以对某些文档库执行粒度备份。您可以在任何所需的网站下恢复它。此解决方案应该比逐个复制(和删除)项目更快。有关备份和还原的信息,请参阅http://blogs.msdn.com/b/russmax/archive/2009/10/21/sharepoint-2010-granular-backup-restore-part-1.aspx
答案 5 :(得分:0)
在资源管理器视图中打开两个库并复制这些项目。但这不是代码解决方案,也不会复制元数据。