允许对现有文件进行gzip

时间:2014-10-25 21:33:05

标签: google-cloud-storage

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

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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

gsutil cp -r gs://bucket /path/to/local/disk

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

gsutil cp -z js,css,html -r /path/to/local/disk gs://bucket
相关问题