Shim para ejecutar gcloud storage
Información general
El SDK de Cloud incluye una nueva CLI, gcloud storage, que puede ser considerablemente más rápida que gsutil al realizar cargas y descargas con menos ajustes de parámetros. Esta nueva CLI tiene una sintaxis y una estructura de comandos similares a las de los usuarios de gsutil, pero es fundamentalmente diferente en muchos aspectos importantes. Para facilitar la transición a esta nueva CLI, gsutil proporciona un shim que traduce tus comandos de gsutil a comandos de almacenamiento de gcloud si existe un equivalente y vuelve al comportamiento habitual de gsutil si no existe.
Para habilitar
Asigna el valor use_gcloud_storage=True
a la sección [GSUtil]
del archivo de configuración .boto
:
[GSUtil] use_gcloud_storage=True
También puedes definir la marca para comandos concretos mediante la marca -o
de nivel superior:
gsutil -o "GSUtil:use_gcloud_storage=True" -m cp -p file gs://bucket/obj
Comandos disponibles
La interfaz de línea de comandos de gcloud storage solo admite un subconjunto de comandos de gsutil. A continuación, se muestra una lista de comandos admitidos por el shim, así como las diferencias de comportamiento.
acl
El subcomando
ch
no se admite.
autoclass
Funciona como se espera.
bucketpolicyonly
Funciona como se espera.
gato
Imprime los datos de un segundo objeto aunque el primero no sea válido.
compose
Funciona como se espera.
cors
El subcomando
get
imprime "[]" en lugar de "gs://[nombre_del_cubo] has no CORS configuration".
cp
Copia un segundo objeto aunque el primero no sea válido.
No admite copias de archivo a archivo.
Permite copiar objetos de una nube a otra con barras diagonales al final del nombre.
La marca de todas las versiones (
-A
) habilita de forma silenciosa la ejecución secuencial en lugar de generar un error.
defacl
El subcomando
ch
no se admite.
defstorageclass
Funciona como se espera.
hash
En gsutil, las marcas
-m
y-c
que afectan a los hashes que se muestran se ignoran en los objetos en la nube. Este comportamiento se ha corregido en el shim y en gcloud storage.
iam
El subcomando
ch
no se admite.La marca
-f
continuará en caso de error, no solo en caso de errores de la API.
kms
El subcomando authorize devuelve mensajes informativos en un formato diferente.
El subcomando de cifrado devuelve mensajes informativos en un formato diferente.
etiquetas
El subcomando
get
imprime "[]" en lugar de "gs://[nombre_del_cubo] has no labels configuration.".
lifecycle
Funciona como se espera.
logging
El subcomando get tiene un espaciado JSON diferente y no imprime un mensaje informativo si no se encuentra ninguna configuración.
ls
Funciona como se espera.
mb
Funciona como se espera.
mv
Consulta las notas sobre cp.
notificación
El subcomando list imprime información de configuración en formato YAML.
El subcomando delete ofrece seguimiento del progreso y paralelización.
pap
Funciona como se espera.
rb
Funciona como se espera.
requesterpays
Funciona como se espera.
rewrite
La marca -k no genera un error si se llama sin una clave nueva. En ambos casos, se mantiene la clave antigua.
rm
No se admiten los marcadores de eliminación de
$folder$
.
rpo
Funciona como se espera.
setmeta
No devuelve ningún error si no se cambia ningún encabezado.
stat
Incluye el campo "Storage class update time:" (Hora de actualización de la clase de almacenamiento), que puede provocar que se desajuste la tabulación.
ubla
Funciona como se espera.
versioning
Funciona como se espera.
web
El subcomando get tiene un espaciado JSON diferente y no imprime un mensaje informativo si no se encuentra ninguna configuración.
Configuración de Boto
La configuración encontrada en el archivo de boto se asigna de forma individual a las variables de entorno de gcloud cuando procede.
[Credentials]
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
Notas generales sobre la compatibilidad
Gracias a su compatibilidad con todas las plataformas principales, el multiprocesamiento está habilitado de forma predeterminada para todos los comandos (es como si la opción -m siempre estuviera incluida en gsutil).
Una secuencia de asteriscos mayor que 2 (es decir,
***
) siempre se trata como un solo asterisco.A diferencia de gsutil, gcloud no se ha diseñado para usarse en invocaciones paralelas, por lo que hacerlo (es decir, ejecutar el shim desde dos terminales a la vez) puede provocar un comportamiento impredecible.
Supongamos que un contenedor contiene un objeto
gs://bucket/nested/foo.txt
. El iterador de comodines de gsutil coincidirá confoo.txt
si se le proporciona una URL comogs://bucket/*/nested/*
. El shim no coincidirá confoo.txt
dada la misma URL.Se actualizará a medida que gcloud storage y el shim admitan nuevos comandos.
Si Unicode tiene problemas, prueba a definir la variable de entorno
PYTHONUTF8
en1
. En concreto, esto puede ser útil en la línea de comandos (CMD) de Windows.