執行 gcloud storage 的 shim

總覽

Cloud SDK 包含新的 CLI (gcloud storage),在執行上傳和下載作業時,可減少參數調整,速度比 gsutil 快上許多。這個新的 CLI 具有 gsutil 使用者熟悉的語法和指令結構,但在許多重要方面與 gsutil 有根本上的差異。為簡化轉換至這個新 CLI 的過程,gsutil 提供一個轉譯層,可將 gsutil 指令轉譯為 gcloud storage 指令 (如果有對應指令的話),並在沒有對應指令時改用 gsutil 的一般行為。

啟用方式:

[GSUtil] 區段的 .boto 設定檔中設定 use_gcloud_storage=True

[GSUtil]
use_gcloud_storage=True

您也可以使用頂層 -o 標記,為個別指令設定標記:

gsutil -o "GSUtil:use_gcloud_storage=True" -m cp -p file gs://bucket/obj

可用的指令

gcloud storage CLI 僅支援部分 gsutil 指令。以下是 shim 支援的指令清單,並註明行為上的任何差異。

acl

  • 不支援 ch 子命令。

autoclass

  • 正常運作。

bucketpolicyonly

  • 正常運作。

cat

  • 即使第一個物件無效,仍會列印第二個物件的物件資料。

compose

  • 正常運作。

cors

  • get 子命令會列印「[]」,而不是「gs://[bucket name] has no CORS configuration」。

cp

  • 即使第一個物件無效,也會複製第二個物件。

  • 不支援檔案到檔案的複製作業。

  • 支援複製名稱中含有尾部斜線的雲端至雲端物件。

  • 所有版本標記 (-A) 會靜默啟用順序執行作業,而不會發生錯誤。

defacl

  • 不支援 ch 子命令。

defstorageclass

  • 正常運作。

hash

  • 在 gsutil 中,系統會忽略影響顯示哪些雜湊值的 -m-c 標記,以便處理雲端物件。這個行為已針對 shim 和 gcloud 儲存空間修正。

iam

  • 不支援 ch 子命令。

  • -f 旗標會在發生任何錯誤時繼續執行,而非僅限於 API 錯誤。

kms

  • 授權子指令會以不同格式傳回資訊訊息。

  • 加密子指令會以不同格式傳回資訊訊息。

標籤

  • get 子命令會列印「[]」,而不是「gs://[bucket name] has no labels configuration」。

lifecycle

  • 正常運作。

記錄

  • get 子命令的 JSON 間距不同,且如果找不到設定,就不會顯示資訊性訊息。

ls

  • 正常運作。

mb

  • 正常運作。

mv

  • 請參閱 cp 的附註。

通知

  • 清單子命令會以 YAML 格式列印設定資訊。

  • delete 子命令提供進度追蹤和並行處理功能。

pap

  • 正常運作。

rb

  • 正常運作。

requesterpays

  • 正常運作。

rewrite

  • 如果未指定新金鑰,-k 標記就不會擲回錯誤。在使用墊片和未使用墊片的情況下,舊的鍵都會保留。

rm

  • 不支援 $folder$ 刪除標記。

rpo

  • 正常運作。

setmeta

  • 如果沒有變更任何標頭,就不會擲回錯誤。

stat

  • 包含「Storage class update time」欄位,可能會導致分頁錯誤。

ubla

  • 正常運作。

versioning

  • 正常運作。

網路

  • get 子命令的 JSON 間距不同,且如果找不到設定,就不會顯示資訊性訊息。

Boto 設定

在適當情況下,boto 檔案中的設定會 1:1 對應至 gcloud 環境變數。

[憑證]

  • aws_access_key_id: AWS_ACCESS_KEY_ID

  • aws_secret_access_key: AWS_SECRET_ACCESS_KEY

  • use_client_certificate: CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE

[Boto]

  • proxy: CLOUDSDK_PROXY_ADDRESS

  • proxy_type: CLOUDSDK_PROXY_TYPE

  • proxy_port: CLOUDSDK_PROXY_PORT

  • proxy_user: CLOUDSDK_PROXY_USERNAME

  • proxy_pass: CLOUDSDK_PROXY_PASSWORD

  • proxy_rdns: CLOUDSDK_PROXY_RDNS

  • http_socket_timeout: CLOUDSDK_CORE_HTTP_TIMEOUT

  • ca_certificates_file: CLOUDSDK_CORE_CUSTOM_CA_CERTS_FILE

  • max_retry_delay: CLOUDSDK_STORAGE_BASE_RETRY_DELAY

  • num_retries: CLOUDSDK_STORAGE_MAX_RETRIES

[GSUtil]

  • check_hashes: CLOUDSDK_STORAGE_CHECK_HASHES

  • default_project_id: CLOUDSDK_CORE_PROJECT

  • disable_analytics_prompt: CLOUDSDK_CORE_DISABLE_USAGE_REPORTING

  • use_magicfile: CLOUDSDK_STORAGE_USE_MAGICFILE

  • parallel_composite_upload_threshold: CLOUDSDK_STORAGE_PARALLEL_COMPOSITE_UPLOAD_THRESHOLD

  • resumable_threshold: CLOUDSDK_STORAGE_RESUMABLE_THRESHOLD

[OAuth2]

  • client_id: CLOUDSDK_AUTH_CLIENT_ID

  • client_secret: CLOUDSDK_AUTH_CLIENT_SECRET

  • provider_authorization_uri: CLOUDSDK_AUTH_AUTH_HOST

  • provider_token_uri: CLOUDSDK_AUTH_TOKEN_HOST

一般相容性注意事項

  • 由於 gsutil 可在所有主要平台上使用,因此預設會為所有指令啟用多重處理功能 (等同於 gsutil 一律會加入 -m 選項)。

  • 星號序列如果超過 2 個 (即 ***),一律會視為單一星號。

  • 與 gsutil 不同,gcloud 並非用於並行叫用,因此如果這麼做 (例如從 2 個終端機同時執行 shim),可能會導致無法預測的行為。

  • 假設某個 bucket 包含物件 gs://bucket/nested/foo.txt,如果提供 gs://bucket/*/nested/* 這類網址,gsutil 的萬用字元迴轉器就會比對 foo.txt。在相同網址下,這個填充物不會與 foo.txt 相符。

  • 隨著 gcloud storage 和 shim 都支援新指令,這份說明會隨之更新。

  • 如果 Unicode 發生問題,請嘗試將環境變數 PYTHONUTF8 設為 1。具體來說,這可能有助於 Windows 指令列 (CMD)。

除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。

上次更新時間:2025-05-16 (世界標準時間)。