【问题标题】:How can I rsync and set some files as gzipped, using Google Cloud Storage?如何使用 Google Cloud Storage rsync 并将某些文件设置为 gzipped?
【发布时间】:2016-09-12 22:16:41
【问题描述】:
我们正在使用 Google Cloud Storage 和 gsutil 命令。我们想要 rsync 一个包含许多文本文件的大目录,并且我们希望这些文件中的 一些 被压缩并将它们的 Content-Encoding 设置为 gzip。看起来我们只能在使用gsutil rsync时为所有文件设置Content-Encoding(使用-h),这很糟糕。我们的一些文件是图像,我们不希望对其进行压缩。
或者,我们希望在仅从目标中删除不再在源中的内容模式下运行 rsync。我们不想也上传。我们只想从 GCS 中删除本地源目录中不再存在的内容。但是,我没有找到那个选项。
【问题讨论】:
标签:
google-cloud-storage
google-cloud-platform
【解决方案1】:
gsutil rsync 命令不支持在上传时压缩文件的选项(即类似于 gsutil cp -z 选项)。我们考虑添加这样一个选项,但它会产生很多复杂性和可能令人惊讶的行为(例如,在与使用 gsutil cp -z 上传的对象同步时)。
另外,我认为按照您在第二段中所述的方式手动设置 Content-Encoding 不会像您期望的那样工作。做类似的事情:
gsutil -h Content-Encoding:gzip rsync ...
会导致对象没有被 gzip 压缩,但仍然设置了 Content-Encoding 元数据 - 这会混淆下载时作用于 Content-Encoding 标头的用户代理(如浏览器)。
您是否考虑过从源头压缩要压缩的文件?如果你不能在源头压缩这些文件,你能否编写一个 shell 脚本,将所有内容复制到一个临时目录,压缩你想要压缩的文件,然后从那里运行 gsutil rsync?