我们在openvms系统上使用curl来成功下载许多文件 - 没问题。我们有一个特别大的ZIP文件,我想尝试并使用curl的--range标志并行多部分下载来获取文件的不同部分,然后我们可以附加到一个大ZIP。
所以作为一个测试,我在一个约50 Mbtyes的小文件上试了一下。使用这一系列命令可以很好地工作:请注意,curl命令通常会并行运行,而不是一个接一个地运行,如图所示
$ curl --range 0-5000000 bigfile.zip -o part1.zip
$ curl --range 5000001-50000000 bigfile.zip -o part2.zip
当上述两个命令完成时我做了
$ copy part1.zip,part2.zip final.zip
并且以下解压缩按预期工作
$ unzip -ao final.zip
好的,所以我想我会尝试分三种方法,例如
$ curl --range 0-5000000 bigfile.zip -o part1.zip
$ curl --range 5000001-30000000 bigfile.zip -o part2.zip
$ curl --range 30000001-50000000 bigfile.zip -o part3.zip
按预期产生三个拉链,但这次是在
之后$ copy part1.zip,part2.zip,part3.zip final.zip
解压缩后我得到了......
$ unzip -ao final.zip
Archive: final.zip;1
**warning final.zip;1: 1 extra byte at beginning or within zipfile**
(attempting to process anyway)
file #1: bad zipfile offset (local header sig): 1
(attempting to re-compensate)
inflating: CompanyRel.txt [text]
error: invalid compressed data to inflate
[ WriteRecord: sys$put failed ]
[ %RMS-F-RSZ, invalid record size ]
[ %NONAME-W-NOMSG, Message number 00000000 ]
欢迎任何有关如何修复的建议
答案 0 :(得分:1)
您的部分* .zip文件非常可能是记录格式Stream_LF, 您可以使用DIR / FULL命令检查。无论出于何种原因,VMS复制命令会在源文件列表中的第一个逗号(或加号)之后将换行符(上面的LF)附加到每个文件的内容中。您可以从两个部分检查成功连接的zip文件。新文件长一个字节,最后是LF。
最后的额外LF不会打扰解压缩。但是列表中有三个文件,有两个LF,一个在第二部分之后,一个在结尾。而“中间”是一个解压缩抱怨:文件偏移是错误的等等。
使用curl复制文件后,尝试设置不同的记录格式:udf。像
这样的东西$ set file/attribute=(rfm=udf) part%.zip
然后用副本进行连接。这应该可以防止复制命令附加LF,并且应该解压缩。