我在Google存储桶中托管公开可用的静态资源,并且我想使用gsutil rsync
命令将我们的本地版本同步到存储桶,从而节省了带宽和时间。我们的构建过程的一部分是预先gzip这些资源,但gsutil rsync
无法设置Content-Encoding
标头。这意味着我们必须运行gsutil rsync
,然后立即运行gsutil setmeta
以在所有压缩的文件类型上设置标题。这会使存储桶处于不良状态,直到该标题被设置。另一种选择是使用gsutil cp
,传递-z选项,但这需要我们每次重新上传整个目录结构,这包括大量图像文件和浪费时间和带宽的其他非gzip资源。gsutil rsync与gzip压缩
是否有一种原子方式来完成rsync并设置正确的Content-Encoding标头?
这个问题只存在基于文本的文件被压缩,如CSS,JS,HTML等 – regretoverflow
有没有这种基于做一个原子的方法在文件扩展名?我真的没有办法。 gsutil rsync的一个很好的补充是传递一个文件扩展名列表,在rsync期间可以应用一个头文件。例如,通常用gzip编码的文件只有html,css,js,json,xml,svg,txt。这是来自deflate的apache配置:https://httpd.apache.org/docs/current/mod/mod_deflate.html – regretoverflow
我们选择不支持使用rsync命令进行动态压缩,因为正确执行它需要跟踪对象元数据中的预压缩大小和校验和,如果客户端尝试执行多源同步,则可能会导致混淆。基本上,如果你想进行压缩,你需要使用gsutil cp命令。 –