Shim zum Ausführen von gcloud-Speicher

Überblick

Das Cloud SDK enthält die neue Befehlszeile "gcloud storage", die deutlich schneller als gsutil sein kann, wenn Sie Uploads und Downloads mit weniger Parameteroptimierung durchführen. Diese neue Befehlszeile hat eine Syntax und eine Befehlsstruktur, die gsutil-Nutzern vertraut ist. Sie unterscheidet sich in vielerlei Hinsicht jedoch grundlegend. Um den Übergang zu dieser neuen Befehlszeile zu erleichtern, bietet gsutil ein Shim, das Ihre gsutil-Befehle in gcloud-Speicherbefehle übersetzt, wenn ein Äquivalent vorhanden ist, und auf das übliche Verhalten von gsutil zurückgreift, wenn kein Äquivalent vorhanden ist.

Zum Aktivieren

Legen Sie use_gcloud_storage=True in der Konfigurationsdatei .boto im Abschnitt [GSUtil] fest:

[GSUtil]
use_gcloud_storage=True

Sie können das Flag auch für einzelne Befehle mit dem übergeordneten Flag -o festlegen.

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

Verfügbare Befehle

Die gcloud-Storage-Befehlszeile unterstützt nur einen Teil der gsutil-Befehle. Im Folgenden finden Sie eine Liste der Befehle, die vom Shim unterstützt werden. Dabei werden Unterschiede im Verhalten festgestellt.

acl

  • Der Unterbefehl ch wird nicht unterstützt.

autoclass

  • Funktioniert wie erwartet.

bucketpolicyonly

  • Funktioniert wie erwartet.

cat

  • Druckt Objektdaten für ein zweites Objekt, auch wenn das erste Objekt ungültig ist.

compose

  • Funktioniert wie erwartet.

cors

  • Der Unterbefehl get gibt „[]“ anstelle von „gs://[bucket name] hat keine CORS-Konfiguration“ aus.

cp

  • Kopiert ein zweites Objekt, auch wenn das erste Objekt ungültig ist.

  • Datei können nicht in Dateien kopiert werden.

  • Unterstützt das Kopieren von Objekten von Cloud zu Cloud mit abschließenden Schrägstrichen im Namen.

  • Das Allversions-Flag (-A) aktiviert im Hintergrund eine sequenzielle Ausführung, anstatt einen Fehler auszulösen.

defacl

  • Der Unterbefehl ch wird nicht unterstützt.

defstorageclass

  • Funktioniert wie erwartet.

Hash

  • In gsutil werden die Flags -m und -c, die sich auf die Anzeige der Hashes auswirken, für Cloud-Objekte ignoriert. Dieses Verhalten ist für den Shim- und gcloud-Speicher korrigiert.

iam

  • Der Unterbefehl ch wird nicht unterstützt.

  • Das Flag -f wird bei jedem Fehler fortgesetzt, nicht nur bei API-Fehlern.

kms

  • Der Unterbefehl "authorize" gibt Informationsnachrichten in einem anderen Format zurück.

  • Der Unterbefehl "encryption" gibt Informationsnachrichten in einem anderen Format zurück.

labels

  • Der Unterbefehl get gibt „[]“ anstelle von „gs://[bucket name] hat keine Labelkonfiguration“ aus.

lifecycle

  • Funktioniert wie erwartet.

Logging

  • Der Unterbefehl "get" hat andere JSON-Abstände und gibt keine Informationsmeldung aus, wenn keine Konfiguration gefunden wird.

ls

  • Funktioniert wie erwartet.

mb

  • Funktioniert wie erwartet.

mv

  • Siehe Hinweise zu cp.

Benachrichtigung

  • Der Unterbefehl "list" gibt Konfigurationsinformationen als YAML aus.

  • Der Unterbefehl "delete" bietet Fortschrittsverfolgung und Parallelisierung.

pap

  • Funktioniert wie erwartet.

rb

  • Funktioniert wie erwartet.

requesterpays

  • Funktioniert wie erwartet.

rewrite

  • Das Flag -k gibt bei Aufruf ohne neuen Schlüssel keinen Fehler aus. Sowohl mit also auch ohne Shim bleibt der alte Schlüssel erhalten.

rm

  • $folder$-Löschmarkierungen werden nicht unterstützt.

rpo

  • Funktioniert wie erwartet.

setmeta

  • Es wird kein Fehler ausgegeben, wenn keine Header geändert werden.

stat

  • Enthält das Feld "Storage class update time:", das Tabbing stören kann.

ubla

  • Funktioniert wie erwartet.

versioning

  • Funktioniert wie erwartet.

web

  • Der Unterbefehl "get" hat andere JSON-Abstände und gibt keine Informationsmeldung aus, wenn keine Konfiguration gefunden wird.

Boto-Konfiguration

Die in der boto-Datei gefundene Konfiguration wird gegebenenfalls 1:1 den gcloud-Umgebungsvariablen zugeordnet.

[Anmeldedaten]

  • 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

Allgemeine Kompatibilitätshinweise

  • Aufgrund der Kompatibilität auf allen Hauptplattformen ist die Multiverarbeitung standardmäßig für alle Befehle aktiviert. Das entspricht der Option -m, die immer in gsutil enthalten ist.

  • Eine Folge von Sternchen größer als 2 (d.h. ***) wird immer als einzelnes Sternchen behandelt.

  • Im Gegensatz zu gsutil ist gcloud nicht für die Verwendung in parallelen Aufrufen vorgesehen. Dies kann zu unvorhersehbarem Verhalten führen, z. B. wenn der Shim von zwei Terminals gleichzeitig ausgeführt wird.

  • Wenn ein Bucket ein Objekt gs://bucket/nested/foo.txt enthält, entspricht der Platzhalter-Iterator von gsutil foo.txt einer URL wie gs://bucket/*/nested/*. Der Shim stimmt nicht mit foo.txt bei derselben URL überein.

  • Dies wird aktualisiert, sobald neue Befehle sowohl von gcloud als auch vom Shim unterstützt werden.

  • Wenn Unicode Probleme hat, legen Sie die Umgebungsvariable PYTHONUTF8 auf 1 fest. Dies kann insbesondere bei der Windows-Befehlszeile hilfreich sein.