4

这与我的所有搜索都不断给出答案的问题相反,人们想要纯文本,但压缩了。

我正在编写一个 bash 脚本,它使用 curl 从 Mailman 邮件列表中获取邮件列表存档文件(使用服务器端的标准 Mailman Web 界面)。

该文件(本月)是http://lists.example.com/private.cgi/listname-domain.com/2013-September.txt.gz(净化的 URL)。

当我用浏览器保存它时,事实上,我得到了一个 gzip 压缩的文本文件,它在解压缩时包含我期望的内容。

但是,当我使用 Curl 获取它时(在之前发送登录密码并获取 cookie 集,并保存该 cookie 文件以在请求中使用之后),stdout(或保存到 -o 文件)出来的是 UNCOMPRESSED文本。

如何让 Curl 像浏览器一样将数据保存到文件中?(请注意,我在 Curl 调用中没有使用 --compressed 标志;这不是服务器压缩数据以进行传输的问题,而是下载压缩在服务器磁盘上的文件的问题,我想保留它压缩。)

(显然,我可以通过在我的 bash 脚本中重新压缩它来解决这个问题。浪费 CPU 资源,以及等待将来发生的问题。或者我可以不压缩它,并破解名称并将其存储为September.txt;这反而浪费了磁盘空间。同样,如果将来行为发生变化,那将会中断。在我看来,问题在于 Curl 在压缩传输和实际压缩数据之间感到困惑。)

4

2 回答 2

3

服务器是否有可能根据 curl 发送(或未发送)的标头解压缩文件?使用 curl 尝试以下标头:

--header 'Accept-Encoding: gzip,deflate'
于 2013-10-01T11:40:59.707 回答
3

您可以直接下载 *.txt.gz,无需任何解压缩,使用 'wget' 而不是 'curl'。

wget http://lists.example.com/private.cgi/listname-domain.com/2013-September.txt.gz

如果 curl 是必不可少的,请在此处查看详细信息

于 2013-10-01T08:15:38.050 回答