允许对现有文件进行gzip

Jef*_*ner 6 google-cloud-storage

我有静态资产存储在GCS中,我想为它们提供gzip压缩(但它们是在没有压缩的情况下上传的).有没有办法设置文件进行压缩而无需下载并以gzip格式重新上传?

我尝试使用gsutil设置内容编码头(即,gsutil setmeta -h 'Content-Encoding:gzip' <some_object_uri>但它只是导致文件上的"服务不可用"(我假设是来自服务器尝试解压缩文件并失败或类似的东西).

jte*_*ace 4

如果不下载并重新上传,就无法压缩对象。

但是,您可以让 gsutil 为您执行此操作,如果您从 Google 计算引擎 (GCE) 虚拟机 (VM) 运行它,则只需按操作计数付费,而不按带宽付费。

另外,关于使用 设置内容编码标头setmeta,您对所发生事件的解释是正确的。您在对象上设置元数据以指示它包含 gzip 数据,但内容不包含有效的 gzip 流,因此当您尝试使用 下载它时Accept-Encoding: gzip,GCS 服务会尝试解压缩流并失败。

我建议将存储桶下载到 GCE VM 上的本地磁盘:

gsutil cp -r gs://bucket /path/to/local/disk
Run Code Online (Sandbox Code Playgroud)

然后,使用-z选项指示要 gzip 的文件扩展名:

gsutil cp -z js,css,html -r /path/to/local/disk gs://bucket
Run Code Online (Sandbox Code Playgroud)