【问题标题】:Does gsutil rsync bucket1 bucket2 download/upload files locally?gsutil rsync bucket1 bucket2 是否在本地下载/上传文件?
【发布时间】:2020-12-16 22:05:26
【问题描述】:

我有一个愚蠢的问题。

所以我有 TB 的数据要在两个 GCP 存储桶之间进行 rsync。

我不太清楚 gsutil rsync 在幕后的工作原理。

它是否必须在将文件上传到目标之前在本地下载文件,还是只是神奇地将内容从源存储桶转移到目标?

【问题讨论】:

    标签: google-cloud-platform google-cloud-storage


    【解决方案1】:

    您的问题的答案在gsutil rsync documentation

    注意 2:如果您要在云之间同步大量数据,您可以考虑设置一个 Google Compute Engine 帐户并在那里运行 gsutil。 由于跨提供商 gsutil 数据传输流经运行 gsutil 的机器,因此与在本地工作站上运行 gsutil 相比,这样做可以使您的传输运行得更快。

    是的,它首先在本地下载内容,然后将其上传到目的地。

    【讨论】:

    • 但这是跨提供商对吧?所以如果它的 GCP -> GCP 那么它不应该下载它
    • 这取决于每个存储桶是否被视为自己的提供者,我想。您可以通过在运行命令时查看计算机上的网络统计信息来自己衡量这一点。
    【解决方案2】:

    我使用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 工作之后
    猜你喜欢
    • 2019-01-01
    • 2015-04-26
    • 2021-03-29
    • 2015-10-08
    • 2020-05-16
    • 2015-05-06
    • 2016-12-25
    • 1970-01-01
    • 2011-04-09
    相关资源
    最近更新 更多