首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从磁带读取文件大小

从磁带读取文件大小
EN

Unix & Linux用户
提问于 2022-04-09 12:13:25
回答 1查看 210关注 0票数 2

我有一盘磁带,上面写着一个.tar.lzma档案。如何确定存档的.tar.lzma的大小?换句话说,我希望找到压缩存档的大小,而不是它正在存储的未压缩.tar的大小--理想情况下,不需要将归档文件从磁带上复制到磁盘上并从那里进行检查。

所讨论的磁带(LTO-6)没有使用任何特殊的文件系统(如LTFS )进行格式化。

我的系统正在amd64上使用Debian11Bullseye,如果有必要的话。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-04-09 12:28:47

.tar.lzma实际上只是一个经过lzma压缩器的tar文件,所以它实际上并不重要。

因此,lzma-file-format.txt包含解析该文件格式所需的所有信息;它以一个令人惊讶的简单标题开头:

代码语言:javascript
复制
1. File Format

        +-+-+-+-+-+-+-+-+-+-+-+-+-+==========================+
        |         Header          |   LZMA Compressed Data   |
        +-+-+-+-+-+-+-+-+-+-+-+-+-+==========================+

        The .lzma format file consist of 13-byte Header followed by
        the LZMA Compressed Data.

1.1。标题

代码语言:javascript
复制
    +------------+----+----+----+----+--+--+--+--+--+--+--+--+
    | Properties |  Dictionary Size  |   Uncompressed Size   |
    +------------+----+----+----+----+--+--+--+--+--+--+--+--+

(注:每个+---+是一个字节)

所以,这里没有压缩大小信息!

你猜这是怎么回事。https://github.com/jljusten/LZMA-SDK/blob/master/DOC/lzma-specification.txt指出

如果“未压缩大小”字段在所有64位中都包含未压缩大小,则表示未压缩大小未知,流中有“结束标记”,指示解码点的结束。相反的情况下,如果来自“未压缩大小”字段的值不等于(2^64)-1,则必须在解码指定字节数(未压缩大小)之后完成LZMA流解码。如果有“结束标记”,LZMA解码器也必须读取该标记。

因此,LZMA是一个流解码器,它告诉您

您需要在生成X数据之后停止解压缩数据,或者如果X是2⁶⁴-1,则在我告诉您“停止”时停止。

因此,除了解压缩(丢弃解压缩数据)之外,没有其他信息可以用来知道压缩存档的长度。

(顺便说一句,我说tar是一种糟糕的存档格式的原因之一。如果压缩是在归档容器内完成的,而不是围绕压缩容器,那么这将不是一个问题。但这就是你的数据,所以你根本就无能为力.

票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/698589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档