2

如何在 plone 4.1 中恢复已删除的文件夹?

4

2 回答 2

7

如果您还没有打包删除该文件夹的事务,您可以恢复该文件夹。

首先,使用ZMI 中父文件夹上的“撤消”选项卡。它可能不起作用,系统上的太多其他东西已经改变(通常是目录),所有的改变都被有效地回滚。

下一步有点繁琐和复杂。然后您需要做的是使用包装器打开对象数据库 (ZODB),该包装器将向您显示数据库在历史上给定点的状态。这样做需要手动编辑您的 Zope 服务器配置。我已经在博客文章中写了这些步骤,但这些步骤有点过时了。

在现代的 Plone buildout 中,您需要将zc.beforestorageegg 添加到您的 buildout 中,并且您需要将enable-product-installationZope 的设置切换为False; 使用 beforestorage 包装器会使您的数据库成为只读的,并且产品安装代码将尝试提交到数据库,从而导致无法启动:

[instance]
eggs +=
    zc.beforestorage
zope-conf-additional +=
    enable-product-installation False

重建构建后,您需要打开zope.conf与您的实例关联的文件。如果您通常使用 启动服务器bin/instance,则该文件位于parts/instance/etc/zope.conf; 使用的脚本bin/与部件名称匹配(instance在本例中)。

找到它定义 ZODB 主数据库的部分:

<zodb_db main>
    # Main database
    cache-size 10000

    # Blob-enabled FileStorage database
    <blobstorage>
      blob-dir /path/to/var/blobstorage
      <filestorage>
        path /path/to/var/filestorage/Data.fs
      </filestorage>
    </blobstorage>
    mount-point /
</zodb_db>

您需要将beforestorage包装器添加到该声明中:

<zodb_db main>
    # Main database
    cache-size 10000

    %import zc.beforestorage
    <before>
    before 2012-12-01T12:00:00

    # Blob-enabled FileStorage database
    <blobstorage>
      blob-dir /path/to/var/blobstorage
      <filestorage>
        path /path/to/var/filestorage/Data.fs
      </filestorage>
    </blobstorage>

    </before>

    mount-point /
</zodb_db>

注意before <iso timestamp>那里的行;当您启动您的实例时,该站点将按该时间戳显示。选择一个接近于您删除文件夹的时间。现在您可以将它(再次使用 ZMI)导出到.zexp文件中。撤消对文件的更改zope.conf,重新启动并导入恢复的文件夹。

于 2012-12-07T11:01:23.047 回答
3

是的,可以在相关文件夹上使用 Zope 管理界面的“撤消”选项卡。这将回滚您删除文件夹的数据库事务,并且如果您刚刚删除了该文件夹,则工作效率最高。其他信息位于:https ://plone.org/documentation/kb/using-the-zope-undo-system-to-roll-back

于 2012-12-07T04:31:28.163 回答