gpt4 book ai didi

linux - 问题,与 Zip4 扩展名、将标准输入内容定向到 zip 存档、使用 zip 以及使用 zipnotes 更改压缩文件名相关

转载 作者:太空宇宙 更新时间:2023-11-04 04:50:54 32 4
gpt4 key购买 nike

我的 Debian 稳定平台中的 zipzipnote 程序(均为 3.0 版本)遇到了一个烦人的问题。

我希望创建一个 zip 存档,存储(不压缩)来自标准输入的数据,无需额外的属性/字段,并为 zip 文件内的结果文件命名。

我的第一次尝试是

printf "foodata"          | zip -X0 bar.zip - 
printf "@ -\n@=foofile\n" | zipnote -w bar.zip

其中 zip 创建一个 bar.zip 存档,其中存储的文件 "-" 包含 "foodata",并且 zipnote 将文件从 "-" 重命名为 "foofile"

第一个问题(已解决):zip,正如我们从zipdetails中看到的

001E Filename              '-'
001F Extra ID #0001 0001 'ZIP64'
0021 Length 0010
0023 Uncompressed Size 0000000000000007
002B Compressed Size 0000000000000007

从标准输入接收数据,不知道结果文件的大小,因此使用 Zip64 扩展名创建一个 PKZIP 4.5 兼容的 zip 存档(可以超过 4 GB),并向文件添加 Zip64 额外属性。

-X 选项会删除额外文件属性不会删除 Zip64 额外字段。

添加 -fz- 选项即可轻松解决此问题,如 zip 手册页中所述

// .................................VVVV
printf "foodata" | zip -X0 -fz- bar.zip -

现在 bar.zip 是 PKZIP 2 兼容文件,并且没有 Zip64 额外字段。

第二个问题(未解决):zipnote更改所包含文件的名称Zip64字段添加到文件中。

不知道为什么。

根据 zip 手册页

zip removes the Zip64 extensions if not needed when archive entries are copied (see the -U (--copy) option).

所以我明白了

zip bar.zip --out bar-corrected.zip

应该创建一个新的bar- Corrected.zip存档,其中文件foofileZip64是免费的(foofile非常短,因此我认为不需要Zip64`扩展名)。

不幸的是,这不起作用:我收到警告

 copying: foofile
zip warning: Local Version Needed To Extract does not match CD: foofile

生成的文件保留 Zip64 扩展名。

似乎解释文件名或添加 -fz- 选项不起作用:我尝试了很多组合,但(也许是我的错)没有成功。

问题:

(1) 我可以避免(以及如何)zipnote、更改文件名、向其中添加 Zip64 字段吗?

(2) 否则,如何使用 zip (使用 --copy?使用 -fz-?)来创建一个新的 zip 存档 Zip64 免费扩展?

最佳答案

[编辑:更新为使用 Store 而不是 Deflate]

不确定如何使用 zipzipnote 实现您想要的效果,但这里有一个替代方案。

回显 abc | perl -MIO::Compress::Zip=zip -e ' zip "-"=> "out.zip", Method => 0, Name => "member.txt"'

$ unzip -lv out.zip 
Archive: out.zip
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
4 Stored 4 0% 2019-10-10 21:54 4788814e member.txt
-------- ------- --- -------
4 4 0% 1 file

zip 文件中不存在 Zip64 或额外属性。

$ zipdetails out.zip 

0000 LOCAL HEADER #1 04034B50
0004 Extract Zip Spec 14 '2.0'
0005 Extract OS 00 'MS-DOS'
0006 General Purpose Flag 0008
[Bit 3] 1 'Streamed'
0008 Compression Method 0000 'Stored'
000A Last Mod Time 4F4AAECA 'Thu Oct 10 21:54:20 2019'
000E CRC 00000000
0012 Compressed Length 00000000
0016 Uncompressed Length 00000000
001A Filename Length 000A
001C Extra Length 0000
001E Filename 'member.txt'
0028 PAYLOAD abc.

002C STREAMING DATA HEADER 08074B50
0030 CRC 4788814E
0034 Compressed Length 00000004
0038 Uncompressed Length 00000004

003C CENTRAL HEADER #1 02014B50
0040 Created Zip Spec 14 '2.0'
0041 Created OS 03 'Unix'
0042 Extract Zip Spec 14 '2.0'
0043 Extract OS 00 'MS-DOS'
0044 General Purpose Flag 0008
[Bit 3] 1 'Streamed'
0046 Compression Method 0000 'Stored'
0048 Last Mod Time 4F4AAECA 'Thu Oct 10 21:54:20 2019'
004C CRC 4788814E
0050 Compressed Length 00000004
0054 Uncompressed Length 00000004
0058 Filename Length 000A
005A Extra Length 0000
005C Comment Length 0000
005E Disk Start 0000
0060 Int File Attributes 0000
[Bit 0] 0 'Binary Data'
0062 Ext File Attributes 81A40000
0066 Local Header Offset 00000000
006A Filename 'member.txt'

0074 END CENTRAL HEADER 06054B50
0078 Number of this disk 0000
007A Central Dir Disk no 0000
007C Entries in this disk 0001
007E Total Entries 0001
0080 Size of Central Dir 00000038
0084 Offset to Central Dir 0000003C
0088 Comment Length 0000
Done

关于linux - 问题,与 Zip4 扩展名、将标准输入内容定向到 zip 存档、使用 zip 以及使用 zipnotes 更改压缩文件名相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58331198/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com