如何在SharePoint中的站点和文档库之间移动文件夹和文件并维护其版本历史记录?

时间:2009-03-02 11:59:27

标签: sharepoint

我正在尝试在同一个SharePoint 2007安装中的网站之间移动文件夹。关键要求是维护版本历史记录。

我尝试过的一种方法是在原始站点中创建一个新的文档库,然后将文件夹移动到该文档库中,然后将文档库移动到目标站点。我在资源管理器视图中使用剪切和粘贴完成了文件移动。

不幸的是,它破坏了文件的历史记录 - 文件历史记录中的每个版本都以相同的日期结束(谁知道日期的来源 - 它不在文件的原始历史记录中),尽管Modified By和其他元数据都没问题。

我已使用以下内容移动文档库:

  • Chris O'Brien的SP内容部署向导1.1(site
  • STSADM.exe使用Gary Lapointe的扩展(site),特别是以下命令:gl-exportlist,gl-importlist,gl-copylist。

不幸的是,这些工具无法在文件夹级别工作。

我的下一步是研究解决方案的编程问题,这是我一直在避免的,因为我是SharePoint的新手,对编程没有任何了解。

任何人都可以帮助我吗?具体来说,我很欢迎:

  • 关于如何在不编写自定义解决方案的情况下执行移动的任何建议
  • 任何能够做到这一点的工具的建议,无论是否免费(到目前为止我所看到的是AvePoint的DocAve,它只能管理网站级别的内容,所以它无法帮助我)
  • 任何可以帮助我开发自定义解决方案的提示,文章,代码等。

非常感谢。

6 个答案:

答案 0 :(得分:1)

SharePoint不支持您需要执行的操作,以及许多其他跨站点和跨服务器场操作。让我们希望这将在未来版本中得到改善。

您应该查看AvePoint的产品。他们拥有许多这些功能以及更多功能,但据称价格昂贵。如果您对第三方依赖项没有疑虑,它们会提供API。您提到DocAve仅是单站点,但事实并非如此。您可能想与公司联系以了解更多信息。

编程方法要求您使用对象模型API或Web服务API构建所有自己的脚手架。 Web服务API更易于使用,并允许您的代码更加独立于位置,但如果您需要一定程度的控制,它缺少太多功能。除文件和文件夹外,您还需要担心应用程序需要的用户,内容类型和任何其他列表项。

对象模型方法要求代码在作为服务器场成员的计算机上运行。这意味着您将需要多场部署中的本地“代理”并创建关联的分发逻辑。

这一切听起来令人生畏,虽然不是微不足道,但可以做到。

答案 1 :(得分:1)

http://dandd.codeplex.com/这个解决方案可以做到这一点,但它只适用于sp2010无论如何看看它可能会给你一个提示如何使用Web服务来解决你的问题

答案 2 :(得分:0)

使用spListItem对象上的CopyTo()方法的一个不错的PowerShell脚本应该是一个很好的起点。

答案 3 :(得分:0)

不幸的是,当我为MOSS创建归档工具时,我不得不编写这个解决方案。

答案 4 :(得分:0)

您是否有发布页面或只有项目。我的团队中一些技术娴熟的人在版本历史记录中移动发布页面和日期时遇到了问题。我想我们花了5天时间尝试使用Elevated privs,webservices等使用Timer作业....

有时您只是希望Sharepoint是一个简单的SQL Server应用程序,您只需要更改字段....

答案 5 :(得分:0)

在这种情况下,我在Tzunami Deployer上取得了成功。在我的博客上,我posted some of my experiences with screenshots。即使在试用期间,我也发现他们的支持非常好。可以免费试用。