【发布时间】:2020-12-16 22:05:26
【问题描述】:
我有一个愚蠢的问题。
所以我有 TB 的数据要在两个 GCP 存储桶之间进行 rsync。
我不太清楚 gsutil rsync 在幕后的工作原理。
它是否必须在将文件上传到目标之前在本地下载文件,还是只是神奇地将内容从源存储桶转移到目标?
【问题讨论】:
标签: google-cloud-platform google-cloud-storage
我有一个愚蠢的问题。
所以我有 TB 的数据要在两个 GCP 存储桶之间进行 rsync。
我不太清楚 gsutil rsync 在幕后的工作原理。
它是否必须在将文件上传到目标之前在本地下载文件,还是只是神奇地将内容从源存储桶转移到目标?
【问题讨论】:
标签: google-cloud-platform google-cloud-storage
您的问题的答案在gsutil rsync documentation:
注意 2:如果您要在云之间同步大量数据,您可以考虑设置一个 Google Compute Engine 帐户并在那里运行 gsutil。 由于跨提供商 gsutil 数据传输流经运行 gsutil 的机器,因此与在本地工作站上运行 gsutil 相比,这样做可以使您的传输运行得更快。
是的,它首先在本地下载内容,然后将其上传到目的地。
【讨论】:
我使用RSYNC 和调试标志进行了测试,我注意到了这种行为
当您在存储桶之间移动对象(使用 cp 或 rsync)这不会下载到您的本地计算机,我使用了 ~4GB 的文件和glances 来测量 rsync 期间的网络使用情况操作,对象被直接移动到目标桶中
如果您运行以下命令,您会注意到 SDK 执行了一个 post 请求,指示存储桶之间的移动
gsutil -d rsync gs://sourcebucket gs://targetbucket
https://storage.googleapis.com/storage/v1/b/sourcebucket/o/bigfile.iso/rewriteTo/b/targetbucket/o/bigfile.iso
Rewriteto 行为记录在 here
【讨论】:
-d,尽管它会删除源代码中没有的任何内容
gsutil -d 是 gsutil 的调试标志,如果你把 -d 放在你提到的 rsync 工作之后