Shim zum Ausführen von gcloud-Speicher
Übersicht
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.
Katze
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 darauf auswirken, welche Hash-Werte angezeigt werden, 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
führt bei jedem Fehler fort, 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 Labels-Konfiguration“ 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 gsutilfoo.txt
einer URL wiegs://bucket/*/nested/*
. Der Shim stimmt nicht mitfoo.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
auf1
fest. Dies kann insbesondere bei der Windows-Befehlszeile hilfreich sein.