dd-*_*d-b 5 compression bash curl
这与我所有的搜索不断找到答案的问题相反,人们想要纯文本,但被压缩了。
我正在编写一个bash脚本,它使用curl从Mailman邮件列表中获取邮件列表存档文件(使用服务器端的标准Mailman Web界面)。
文件(本月)为http://lists.example.com/private.cgi/listname-domain.com/2013-September.txt.gz(已清理的 URL)。
当我用浏览器保存它时,实际上我得到了一个 gzip 压缩的文本文件,解压缩后包含我期望的内容。
但是,当我用 Curl 获取它时(在之前发送登录密码并获取 cookie 设置,并保存该 cookie 文件以在请求中使用之后),标准输出(或保存到 -o 文件)是未压缩的文本。
如何让 Curl 像浏览器一样将数据保存到文件中?(请注意,我没有在 Curl 调用中使用 --compressed 标志;这不是服务器压缩数据以进行传输的问题,而是下载在服务器磁盘上压缩的文件的问题,我想保留它压缩。)
(显然我可以通过在 bash 脚本中重新压缩它来解决这个问题。不过,浪费 CPU 资源,并且将来会出现问题。或者我可以不压缩它,然后修改名称并将其存储为September.txt;这反而浪费了磁盘空间。不过,如果将来行为发生变化,这就会中断。在我看来,问题在于 Curl 在压缩传输和实际压缩数据之间感到困惑。)
服务器是否有可能根据curl发送(或未发送)的标头来解压缩文件?使用curl 尝试以下标头:
--header 'Accept-Encoding: gzip,deflate'
Run Code Online (Sandbox Code Playgroud)
您可以直接下载*.txt.gz,无需任何解压缩,使用“wget”而不是“curl”。
wget http://lists.example.com/private.cgi/listname-domain.com/2013-September.txt.gz
Run Code Online (Sandbox Code Playgroud)
如果卷曲是必要的,那么请在此处查看详细信息