gsutil rsync 在 gzip/非 gzip 本地/云位置之间同步
Posted
技术标签:
【中文标题】gsutil rsync 在 gzip/非 gzip 本地/云位置之间同步【英文标题】:gsutil rsync between gzip/non-gzip local/cloud locations 【发布时间】:2021-09-05 11:03:24 【问题描述】:对于变更检测,gsutil 的 rsync 是否可以使用 gzip 的大小进行变更检测?
情况如下:
-
使用 cp -Z 将非 gzip 静态网站内容上传到存储桶,以便在云中静态压缩。
在本地修改 html 文件。
只需要 rsync 本地修改的文件。
所以结果是内容在云端压缩,在本地解压缩。可以使用 rsync 找出发生了什么变化吗?
根据我的尝试,我认为不是,因为 rsync 的方式是更改检测:
-
如果使用 -c,则比较校验和,但仅当文件大小相同时。
否则使用次数。
而且它看起来不像 -J/-j 影响比较文件大小(本地未压缩文件大小与压缩云版本进行比较,当然是 FALSE)所以 -c 不会启动。然后,时间不匹配,因此所有内容都会重新上传。
这似乎是一个相当常见的用例。有没有办法解决这个问题?
谢谢,
汉斯
【问题讨论】:
【参考方案1】:要了解 rsync 如何识别使用 gsutils 时发生的更改,请查看Change Detection Algorithm。
我不确定你想如何比较 gzip 和非 gzip,但也许 gsutil compose 可用于在压缩之前比较文件之间的中间步骤。
考虑到gsutils rsync's 4th limitation:
gsutil rsync 命令完整地复制已更改的文件,并且不使用rsync delta-transfer algorithm 来传输已更改文件的部分内容。这是因为 Cloud Storage 对象是不可变的,不存在读取部分对象校验和或执行部分替换的工具。
【讨论】:
以上是关于gsutil rsync 在 gzip/非 gzip 本地/云位置之间同步的主要内容,如果未能解决你的问题,请参考以下文章
gsutil - 使用联合用户 AWS 密钥时 cp、rsync 的问题
Google Cloud Storage - Java API 中是不是有等效的 gsutil 'rsync'?