Plone将Blob数据迁移到“bushy”布局IOError 21

2024-05-18 23:25:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将blobstorage(使用Plone 4.3.2和ZODB3 3.10.5)从“lawn”迁移到“bushy”布局。运行脚本时,我得到以下回溯:

(11719) Blob directory `var/blobstorage-lawn/` has layout marker set. Selected `lawn` layout.
(11719) The `lawn` blob directory layout is deprecated due to scalability issues on some file systems, please consider migrating to the `bushy` layout.
Migrating blob data from `var/blobstorage-lawn/` (lawn) to `var/blobstorage` (bushy)
Traceback (most recent call last):
  File "bin/migrateblobs", line 19, in <module>
    sys.exit(ZODB.scripts.migrateblobs.main())
  File "/var/db/zope/plone43_dev/buildout-cache/eggs/ZODB3-3.10.5-py2.7-linux- x86_64.egg/ZODB/scripts/migrateblobs.py", line 77, in main
    migrate(source, dest, options.layout)
  File "/var/db/zope/plone43_dev/buildout-cache/eggs/ZODB3-3.10.5-py2.7-linux-x86_64.egg/ZODB/scripts/migrateblobs.py", line 52, in migrate
    link_or_copy(source_file, dest_file)
  File "/var/db/zope/plone43_dev/buildout-cache/eggs/ZODB3-3.10.5-py2.7-linux-x86_64.egg/ZODB/scripts/migrateblobs.py", line 30, in link_or_copy
    shutil.copy(f1, f2)
  File "/var/db/zope/plone43_dev/Python-2.7/lib/python2.7/shutil.py", line 119, in copy
    copyfile(src, dst)
  File "/var/db/zope/plone43_dev/Python-2.7/lib/python2.7/shutil.py", line 82, in copyfile
    with open(src, 'rb') as fsrc:
IOError: [Errno 21] Is a directory: '/var/db/zope/plone43_dev/zeocluster/var/blobstorage-lawn/0x00/0x00'

我不明白它为什么要复制目录。这是产品中的缺陷吗?或者我的储藏室会腐败吗?这是一个开发环境,我对blobstorage有一些其他问题,这就是为什么我试图迁移到bushy,希望它能解决一些问题。在

想法或解决方案?在


Tags: inpydevzopedbvarlinefile
1条回答
网友
1楼 · 发布于 2024-05-18 23:25:54

您似乎有一个浓密的布局和您的草坪布局混合在一起。在

lawn布局使用扁平结构;目录以OID命名,每个目录中包含blob文件的修订。bushy布局在OID中每字节使用一个目录,从而生成目录树。在

当从lawn移到bushy时,脚本将使用目录,假设它们是有效的OID,并且在每个目录上都假定它在目录中找到的都是修订文件。在

但是,您已经有了一个浓密的布局结构。脚本试图将目录0x00移出顶层目录0x00。这正是您在浓密的布局中找到的目录类型,而不是草坪布局。你的结构确实被破坏了。在

可能是标记文件出了问题;如果您在顶层拥有的是0xhh2位十六进制编号的目录,那么您就得到了一个伪装成草坪浓密布局。然后,您可以尝试将var/blobstorage-lawn目录中的.layout文件从lawn更改为bushy,看看ZODB是否仍然有效。如果没有,那可能是无法修复的。在

如果您混合了0xhh和更长的0xhhhhhhhhh十六进制目录(后者只包含文件,没有目录),那么您可以将lawnbushy布局都放入一个blob存储中。如果布局标记为草坪,则浓密的部分很可能已过时。您可以尝试将所有只有2个十六进制数字的目录移到一个新的blobstorage目录(并添加一个新的.layout文件,其中包含内容bushy),但我不太相信其中是否包含任何有用的内容。在

相关问题 更多 >

    热门问题