Curl 在 OpenVMS 上的使用
Curl usage on 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
好的,所以我想我现在会尝试将它分成 3 种方式,例如
$ 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
按预期生成了三个 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 ]
欢迎就如何修复提出任何建议
您的part*.zip文件很可能是记录格式Stream_LF,
您可以使用 DIR/FULL 命令进行检查。无论出于何种原因,VMS 复制命令都会在源文件列表中第一个逗号(或加号)之后的每个文件的内容中附加一个换行符(上面的 LF)。您可以从两部分中检查成功连接的 zip 文件。新文件长了一个字节,也就是末尾的 LF。
末尾的附加 LF 不会影响解压缩。但是列表中的三个文件有两个 LF,一个在第二部分之后,一个在最后。一个 "in the middle" 是一个解压缩抱怨:文件偏移量错误等
用curl复制文件后,尝试设置不同的记录格式:udf。像
$ set file/attribute=(rfm=udf) part%.zip
然后用copy做拼接。这应该可以防止复制命令附加 LF 并且应该使解压缩快乐。
我们在 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
好的,所以我想我现在会尝试将它分成 3 种方式,例如
$ 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
按预期生成了三个 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 ]
欢迎就如何修复提出任何建议
您的part*.zip文件很可能是记录格式Stream_LF, 您可以使用 DIR/FULL 命令进行检查。无论出于何种原因,VMS 复制命令都会在源文件列表中第一个逗号(或加号)之后的每个文件的内容中附加一个换行符(上面的 LF)。您可以从两部分中检查成功连接的 zip 文件。新文件长了一个字节,也就是末尾的 LF。
末尾的附加 LF 不会影响解压缩。但是列表中的三个文件有两个 LF,一个在第二部分之后,一个在最后。一个 "in the middle" 是一个解压缩抱怨:文件偏移量错误等
用curl复制文件后,尝试设置不同的记录格式:udf。像
$ set file/attribute=(rfm=udf) part%.zip
然后用copy做拼接。这应该可以防止复制命令附加 LF 并且应该使解压缩快乐。