【问题标题】:Migrate Umbraco data from development site to live site programmatically以编程方式将 Umbraco 数据从开发站点迁移到实时站点
【发布时间】:2011-04-27 12:52:54
【问题描述】:

我的情况是,我负责为 Umbraco 制作应用程序或扩展,使后端用户能够将他们在开发站点上的更改迁移到实时站点。这种迁移应该每天发生一次,或者当后端用户按下后端的按钮时发生。

我知道 Umbraco 在 Courier 包中提供此功能,但显然它不适用于这种情况。

更多细节:

开发和实时站点都驻留在同一台服务器上,它们的数据库也是如此。只需将数据从一个文件夹传输到另一个文件夹,并且与数据库中的表相同。

据我所知,有两种方法可以解决这个问题。

1) 您进行了一次完整迁移,基本上是对实时数据库进行拆解并将其更新到新版本。然后,您还可以复制所有需要的文件。

2) 您创建一个包,其中包含您在开发者站点上更改的文档类型等,并将该包加载到实时站点上。

数字 1 的问题在于,您似乎必须在完成转移后重新发布整个网站。据我了解,您可以使用网络服务来执行此操作,但如果我可以使用控制台应用程序,我会更喜欢它。

我的问题是:

有没有办法以编程方式创建包并以相同的方式加载它们,或者以编程方式实现此迁移的最佳方式是什么?

任何建议都将不胜感激,因为我有点不知所措:)

编辑

我最终实际上做了一个完整的镜像,因为我使用 Robocopy 传输了文件夹中所有已更改的文件,然后我使用 SQL 命令备份了开发站点,然后我恢复了使用 RESTORE SQL 命令在实时数据库上。

需要在 SQL 命令中完成一些设置,但它运行平稳,根据已更改的文件数量,完整传输需要 10 秒。

最后一件事。如果您希望更改可见,则需要重新加载 Umbraco。您可以通过手动修改 web.config 文件或以编程方式将其设置为 LastWriteTime。

【问题讨论】:

    标签: umbraco


    【解决方案1】:

    您始终可以创建一个用户控件来为您处理整个网站的重新发布,您可以从控制台应用程序调用它。

    你也可以加入the Courier 2 beta计划,确实够用了(反正功能我自己没测试过)。

    另一种方法是将所有节点作为 xml 提要提供,并使用CMSImport 的调度功能自动迁移节点。

    这是一个艰难的选择,有很多选择,但还没有灵丹妙药。我非常希望 Courier 2 能够完美地实现这一点,并热切期待它的发布。

    【讨论】:

    • 但是您将如何处理数据库中节点的迁移?如果其他人正在查看答案,您需要跟踪新页面的 id,这样您就不会意外发布您不想发布的页面(如果存在)。
    • 您从 2 个相同的数据库开始。然后,当您将其中的 1 个放在实际环境中时,重新播种所有会更改的表(抱歉,不知道哪些会更改),以从一个非常高的种子开始。然后可以覆盖现有内容(相同 ID)可以复制源数据库上的新内容,而不会干扰现有内容。
    • 仅供参考:我一直在寻找灵丹妙药,这是我得到的最接近的方法,在 Umbraco 很难做到这一点,我不知道有多少人有成功的自动化策略。 Courier 2 应该让这一切变得非常简单。
    • 让我们祈祷它可以解决我们的问题,呵呵。无论如何,谢谢您的回答,我会认为它是我问题的正确答案并将其标记为已接受:)
    猜你喜欢
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    相关资源
    最近更新 更多