我使用linux zip命令创建了zip文件并将其上传到我的google驱动器中。当我尝试使用curl和unzip命令(使用bash文件)下载并解压缩压缩文件时,它会给我以下错误。
Archive: pretrained_models.zip
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of pretrained_models.zip or
pretrained_models.zip.zip, and cannot find pretrained_models.zip.ZIP, period.
有人可以建议解决此问题的任何解决方法吗?
如果有人想重现错误,我正在共享.sh
文件。
#!/bin/bash
pretrained='https://drive.google.com/uc?export=download&id=0B8ZGlkqDw7hFSm1MQ2FDVTZCTjA'
# download pretrained models.
curl -o pretrained_models.zip $pretrained
unzip pretrained_models.zip
rm pretrained_models.zip
该文件是公开共享的。对于完整性检查,您可以从here下载。
N.B。我在SO的其他社区看过相关帖子,其中一些建议使用不同的文件扩展名,但我想坚持使用zip文件。
答案 0 :(得分:1)
下载Google云端硬盘上的共享文件时,需要按文件大小更改下载方法。结果发现,更改方法时文件大小的边界约为 40MB 。
#!/bin/bash
filename="pretrained_models.zip"
fileid="0B8ZGlkqDw7hFSm1MQ2FDVTZCTjA"
curl -L -o ${filename} "https://drive.google.com/uc?export=download&id=${fileid}"
当它尝试下载超过40MB的文件时,Google会说要从以下网址下载。
<a id="uc-download-link" class="goog-inline-block jfk-button jfk-button-action" href="/uc?export=download&confirm=####&id=### file ID ###">download</a>
包含confirm=####
的查询对于下载大尺寸文件非常重要。为了从HTML检索查询,它使用pup
。
#!/bin/bash
filename="pretrained_models.zip"
fileid="0B8ZGlkqDw7hFSm1MQ2FDVTZCTjA"
query=`curl -c ./cookie.txt -s -L "https://drive.google.com/uc?export=download&id=${fileid}" | pup 'a#uc-download-link attr{href}' | sed -e 's/amp;//g'`
curl -b ./cookie.txt -L -o ${filename} "https://drive.google.com${query}"