如何在没有授权的情况下运行 gsutil rsync?

如何在没有授权的情况下运行 gsutil rsync?

aws s3 sync提供一个名为的参数--no-sign-request,因此用户无需事先进行任何身份验证即可同步公开可见的存储桶。

gsutil help anon说:

gsutil 用户无需获取凭证即可访问可公开读取的数据。例如,gs://uspto-pair 存储桶包含许多可公开读取的对象,因此任何用户都可以运行以下命令而无需先获取凭证:

gsutil ls gs://uspto-pair/applications/0800401*

用户可以通过上述 gsutil ls 命令类似地下载他们找到的对象。

但是,在没有登录的情况下运行此命令会导致 gsutil 报告错误:

➜  mirror-docker git:(v2) gsutil ls 'gs://uspto-pair/applications/0800401*'
Your credentials are invalid. Please run
$ gcloud auth login

目前,我们正在为 gcloudstorage 上的常见 bucket 设置镜像,并想找到一种无需提前授权即可执行同步的方法。可以吗?

答案1

在使用 gsutil 工具之前,您需要按照以下步骤进行身份验证:https://cloud.google.com/storage/docs/quickstart-gsutil#before-you-begin这是要求之一。即使您有一个可公开访问的存储桶和/或对象,您也无法在未事先进行身份验证的情况下执行同步。

答案2

@Steeve 的回答是需要身份验证,这是正确的。以下是将公开可见的存储桶同步到本地的简单脚本。只需创建一个没有账单方法的新帐户和一个新的项目/密钥对:

#!/bin/bash

# path: sync destination
# access_key_id: https://cloud.google.com/storage/docs/migrating#keys
# access_secret_id: Same as above
# project_id: The project name where you create a new key
# source: source googlestorage path. Example: gs://flutter_intra

mkdir -p "$LUG_path"
env "GS_ACCESS_KEY_ID=$LUG_access_key_id" "GS_ACCESS_SECRET_KEY=$LUG_access_secret_key" ./google-cloud-sdk/bin/gsutil  -o "GSUtil:default_project_id=$LUG_project_id" -m rsync -d -r "$LUG_source" "$LUG_path"

相关内容