如何使用Google云端存储将rsync设置为gzip文件?
问题描述:
我们正在使用Google Cloud Storage和gsutil
命令。我们想用rsync同步一个包含许多文本文件的大目录,并且我们希望这些文件的一些被压缩,并将其Content-Encoding设置为gzip。看起来我们只能在使用gsutil rsync
时设置Content-Encoding(使用-h
)全部文件,这是一个令人失望的文件。我们的一些文件是图片,我们不想压缩。如何使用Google云端存储将rsync设置为gzip文件?
或者,我们想在上运行一个rsync,只从目的地删除什么不再在源模式下。我们也不想上传。我们只想从GCS中删除本地源目录中不再有的内容。但是,我没有找到这个选择。
答
gsutil rsync命令不支持上传时压缩文件的选项(即类似于gsutil cp -z选项)。我们考虑添加这样一个选项,但它会产生很多复杂性和潜在的令人惊讶的行为(例如,在与使用gsutil cp -z上传的对象进行同步时)。
此外,我不认为您在第二段中陈述的方式手动设置Content-Encoding会按照您期望的方式工作。做这样的事情:
gsutil -h Content-Encoding:gzip rsync ...
会导致对象没有被gzip压缩,但仍然具有内容编码元数据集 - 那么这将混淆下载时的Content-Encoding头充当用户代理(如浏览器) 。
您是否考虑过在源代码中压缩要压缩的文件?如果你不能在源文件中保留压缩的文件,你可以编写一个shell脚本将所有内容复制到临时目录,压缩你想压缩的文件,然后从那里运行gsutil rsync?