【问题标题】:How to compare local folder to folder in bucket?如何将本地文件夹与存储桶中的文件夹进行比较?
【发布时间】:2018-02-14 20:22:48
【问题描述】:

我们正在将我们的项目归档在一个存储桶中(使用gsutil rsync)。我的任务是验证每次上传后,必须对本地项目文件夹和上传到存储桶的文件夹进行比较。这是为了确保本地数据实际上完全上传到桶中。

我怎样才能可靠地执行这样的测试?

【问题讨论】:

    标签: google-cloud-storage gcloud gsutil


    【解决方案1】:

    gsutil rsync 命令本身将对每个上传的文件执行校验和验证。来自Checksum Validation And Failure Handling

    每次上传或下载结束时,gsutil rsync 命令 验证源文件/对象的校验和是否匹配 目标文件/对象的校验和。如果校验和不 匹配,gsutil 将删除无效副本并打印警告 信息。

    [剪辑]

    rsync 命令会在失败发生时重试,但如果足够 在特定的复制或删除操作期间发生故障 命令将失败。

    如果提供了 -C 选项,该命令将改为跳过 失败的对象并继续前进。在同步运行结束时,如果 任何失败都没有成功重试,rsync 命令将 报告失败次数,并以非零状态退出。在这 点你可以再次运行 rsync 命令,它会尝试任何 剩余所需的复制和/或删除操作。

    [剪辑]

    更多gsutil的重试处理详情请见gsutil help retries

    所以你可以:

    • 只需检查命令的 stdout/stderr 是否有任何警告表明此类校验和失败是致命的
    • 使用带有-C 选项的gsutil rsync cmds 并直接使用它们的故障跟踪结果(最终会自动重试)
    • 执行备用(偏执)检查,仅查找应同步的所有文件在目的地是否存在(如果文件仍然存在,则其内容必须通过校验和检查)

    【讨论】:

    • 这太棒了,谢谢。我实际上只是将一个新项目上传到一个没有文件的存储桶中。你会建议我使用gsutil cp 来代替吗?
    • 两者中的任何一个都可以,无论您使用哪个更舒服。我更喜欢gsutil rsync,好像有问题我可以简单地重新调用相同的命令,它应该继续丢失任何东西,不确定gsutil cp是否不会重新复制所有内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多