OpenVMS

时间:2016-01-14 16:02:12

标签: curl openvms

我们在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 ]

欢迎任何有关如何修复的建议

1 个答案:

答案 0 :(得分:1)

您的部分* .zip文件非常可能是记录格式Stream_LF, 您可以使用DIR / FULL命令检查。无论出于何种原因,VMS复制命令会在源文件列表中的第一个逗号(或加号)之后将换行符(上面的LF)附加到每个文件的内容中。您可以从两个部分检查成功连接的zip文件。新文件长一个字节,最后是LF。

最后的额外LF不会打扰解压缩。但是列表中有三个文件,有两个LF,一个在第二部分之后,一个在结尾。而“中间”是一个解压缩抱怨:文件偏移是错误的等等。

使用curl复制文件后,尝试设置不同的记录格式:udf。像

这样的东西
$ set file/attribute=(rfm=udf) part%.zip

然后用副本进行连接。这应该可以防止复制命令附加LF,并且应该解压缩。