我目前正在运行 SharePoint 2007 Farm。
我有一个子网站(http://服务器/站点/hr/finance),我希望将其移动到其自己的网站集 (http://服务器/站点/财务)。
我使用 stsadm -o export 导出了子网站。然后我创建了新的网站集 (http://服务器/站点/财务)。然后我尝试使用 stsadm -o import 导入该站点。
但是,我收到以下错误:“无法导入该文件,因为其父网站不存在”
我正在以网站集管理员的身份运行。
答案1
看看 Gary Lapointe 的自定义 STSADM 命令gl-convertsubsitetositecollection- 这将自动执行导出、创建管理路径、导入等过程。
答案2
注意:当我发布链接时,我没有声誉,所以我用“hxxp”替换了“http”......只需将xx更改为tt:p
这对我每天都有用:关于我的设置:当我迁移站点时,通常是在服务器之间进行。
如果所有内容都放在同一台服务器上,那就更容易了。
如果您要在服务器之间移动,则只需在源服务器上执行导出,然后创建新的内容数据库/管理路径/空白网站集,并在目标服务器上运行导入。
无论如何,运行此程序,将您的 URL 和文件路径替换为您想要备份的位置:
stsadm -o export -url hxxp://server/sites/site -filename Z:\SPBackups\sites\site\sites_to_backup.cmp -includeusersecurity -nofilecompression -versions 4
现在,转到“中央管理”>“应用程序管理”。
如果此站点将位于新的内容数据库中,请创建该数据库。
现在返回应用程序管理,如果需要,创建一个新的管理路径。
然后,“创建网站集”。
选择“空白网站模板”(或者我忘记的具体措辞)。单击“创建”,然后等待它为您完成创建空白网站集。
创建后,不要浏览到该网站。创建后,不要浏览到该网站。创建后,不要浏览到该网站。创建后,不要浏览该网站。
在命令提示符中运行此命令:
stsadm -o import -url hxxp://server2/newsite -filename C:\SPBackups\sites\site\sites_to_backup.cmp -includeusersecurity -nofilecompression
它应该使用与源服务器上相同的模板按原样导入所有内容。
现在,浏览您的新网站集。除了一些损坏的链接外,一切都应该正常。
要解决此问题,请转到http://stsadm.blogspot.com。安装他的自定义 STSADM 扩展。您需要的扩展位于此处:hxxp://stsadm.blogspot.com/2009/01/replacing-navigation-urls-using-stsadm.html。
您将运行以下命令:stsadm -o gl-replacenavigationurls –url "hxxp://server/newsitecollection" –searchstring "hxxp://server/oldsitecollection/oldsubsite" –replacestring "hxxp://server/newsitecollection" –scope Site
该命令将转到新网站集 (hxxp://server/newsitecollection) 并在整个网站中搜索字符串“hxxp://server/oldsitecollection/oldsubsite”,并将其替换为“hxxp://server/newsitecollection”。因此,指向旧网站(文档库、列表等)的任何链接都将被修改为转到新网站集的 URL。
希望这可以帮助!
PS - 您还可以使用 Gary 为 gl-convertsubsitetositecollection 提供的扩展...效果很好。但我一般都用这个,因为它不太复杂。
答案3
没有好的方法可以将整个子网站移至顶级网站。基本上,如果有子网站,就永远是子网站。
这有点用……您可以将子站点保存为站点模板,使用 stsadm 将模板添加为全局模板,然后从此站点模板创建新的顶级站点集合。警告:这样做有很多问题,许多图库可能会丢失(例如,Web 部件图库将无法正确填充)。
但是,最好还是重新来过……如果您一定要让这个网站成为顶级网站 - 那就一点一点地重建它。幸运的是,您可以使用一些工具来减轻痛苦:导出/导入 Web 部件、将列表另存为带内容的模板 - 将它们添加到新网站等……