![如何“解压缩” ZIM 文件?](https://linux22.com/image/1465479/%E5%A6%82%E4%BD%95%E2%80%9C%E8%A7%A3%E5%8E%8B%E7%BC%A9%E2%80%9D%20ZIM%20%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我有一个以星航空文件并想查看其内容。特别是计算文章和图片的数量,并可能浏览图片。
怎么做?最好在 Linux 上,但其他系统的说明也可以。
我不想通过在 Kiwix 中打开 ZIM 并浏览所有数千页并手动计数来计算图像。
它不能通过 XZ 或 ZIP 压缩:
$ unxz wikivoyage_en_all_2015-09.zim
unxz: wikivoyage_en_all_2015-09.zim: File format not recognized
$ zipinfo wikivoyage_en_all_2015-09.zim
Archive: wikivoyage_en_all_2015-09.zim
[wikivoyage_en_all_2015-09.zim]
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
zipinfo: cannot find zipfile directory in one of wikivoyage_en_all_2015-09.zim or
wikivoyage_en_all_2015-09.zim.zip, and cannot find wikivoyage_en_all_2015-09.zim.ZIP, period.
答案1
我尝试在 Mac 上按照上面@Nicolas Raoul 的回答操作,但从zimdump
源代码构建时遇到了问题,并且找不到任何二进制文件。
经过一番挖掘,我发现这是一个Alpine 中的二进制文件,所以对我来说最简单的方法是在 docker 中zimdump
运行。zimdump
Dockerfile
创建一个名为以下内容的文本文件:
FROM alpine:edge
# add the repository that contains libzim and zim-tools
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
# Installing dependencies
RUN apk update && apk add libzim zim-tools
然后运行:
docker build - < Dockerfile
构建docker镜像:
docker build -t zimdump .
完成所有步骤来挂载并运行 zimpdump:
docker run -v $(pwd):/app -w /app -it zimdump zimdump -D . file.zim
(有人建议这种方法docker run -v $(pwd):/app -w /app -it zimdump dump --dir=. file.zim
效果更好)
答案2
示例输出:
zimdump -F wikivoyage_en_all_2015-09.zim
count-articles: 84897
uuid: 9213375a-53f4-819c-47ed-41fc87e7028f
article count: 84897
mime list pos: 80
url ptr pos: 193
title idx pos: 679369
cluster count: 40711
cluster ptr pos: 5169080
checksum pos: 468245393
checksum: 05b9bbf3b6d0c955b6ee74a3f929d911
main page: 44192
layout page: -
不确定这些意味着什么但至少文章数量是可用的。
该-D
选项将转储目录中的所有内容。
zimdump -D 目录名称文件.zim