如何检查 Plone/ZODB 中的 blobstorage?

如何检查 Plone/ZODB 中的 blobstorage?

我的硬盘坏了,一些 inode 被修复了,例如

'..' in /zeocluster/var/blobstorage/0x00/0x00 (...) is <the NULL inode> (0), should be '....'.  Fix (y) ?

我如何确认一切正常。有没有类似blobfsckZODB/Plone 的东西?

--

转载自:https://stackoverflow.com/questions/25895033/how-to-check-the-blobstorage-in-plone-zodb

答案1

类似。尝试一下zodbdgc 的源代码

它提供了一个脚本,可以检查所有引用的对象(包括所有 blob)是否仍然存在。但是,它无法验证 blob 内容是否正常(它会对丢失的 blob 文件发出警报,但会默默接受空的/损坏的但仍然存在的 blob 文件)。

文档展示了如何将其包含在 buildout 中

[buildout]
parts =
    ...
    zodbdgc

[zodbdgc]
recipe = zc.recipe.egg
eggs = zc.zodbdgc

以及它需要什么样的配置文件——它不会parts/instance/zope.conf直接接受你的,但你可以复制并精简一个只包含

<zodb main>  # renamed from zodb_db main
  <blobstorage>
    blob-dir /.../var/blobstorage
    # FileStorage database
    <filestorage>
      path /.../var/filestorage/Data.fs
    </filestorage>
  </blobstorage>
</zodb>

然后运行

./bin/multi-zodb-check-refs parts/instance/copy_of_zope.conf

如果缺少一个 blob,你会看到类似

!!! main 4938 ?
POSKeyError: 'No blob file'

并且文档可能会帮助您手动解决问题。

相关内容