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'?

如何从 python 脚本成功调用 gsutil rsync?

在大文件上使用 rsync 的 gsutil int 错误

如何在文件列表上使用 gsutil rsync

无论如何要在某个时间戳之后 rsync gsutil 文件?