Shim para executar o gcloud storage
Vista geral
O Cloud SDK inclui uma nova CLI, o gcloud storage, que pode ser consideravelmente mais rápido do que o gsutil quando realiza carregamentos e transferências com menos ajustes de parâmetros. Esta nova CLI tem uma sintaxe e uma estrutura de comandos que são familiares aos utilizadores do gsutil, mas é fundamentalmente diferente em muitos aspetos importantes. Para facilitar a transição para esta nova CLI, o gsutil fornece um shim que traduz os seus comandos do gsutil em comandos de armazenamento do gcloud se existir um equivalente e volta ao comportamento habitual do gsutil se não existir um equivalente.
Para ativar
Defina use_gcloud_storage=True
no ficheiro de configuração .boto
na secção [GSUtil]
:
[GSUtil] use_gcloud_storage=True
Também pode definir a flag para comandos individuais através da flag de nível superior:-o
gsutil -o "GSUtil:use_gcloud_storage=True" -m cp -p file gs://bucket/obj
Comandos disponíveis
A CLI gcloud storage só suporta um subconjunto de comandos gsutil. Segue-se uma lista de comandos suportados pelo shim com quaisquer diferenças no comportamento indicadas.
acl
O subcomando
ch
não é suportado.
autoclass
Funciona conforme esperado.
bucketpolicyonly
Funciona conforme esperado.
gato
Imprime os dados do objeto para um segundo objeto, mesmo que o primeiro objeto seja inválido.
compor
Funciona conforme esperado.
cors
O subcomando
get
imprime "[]" em vez de "gs://[nome do contentor] não tem uma configuração CORS".
cp
Copia um segundo objeto, mesmo que o primeiro objeto seja inválido.
Não suporta cópias de ficheiro para ficheiro.
Suporta a cópia de objetos na nuvem com barras invertidas finais no nome.
A flag de todas as versões (
-A
) ativa silenciosamente a execução sequencial em vez de gerar um erro.
defacl
O subcomando
ch
não é suportado.
defstorageclass
Funciona conforme esperado.
hash
No gsutil, os flags
-m
e-c
que afetam os hashes apresentados são ignorados para objetos na nuvem. Este comportamento foi corrigido para o shim e o gcloud storage.
iam
O subcomando
ch
não é suportado.A flag
-f
continua em qualquer erro, não apenas em erros da API.
km
O subcomando authorize devolve mensagens informativas num formato diferente.
O subcomando de encriptação devolve mensagens informativas num formato diferente.
etiquetas
O subcomando
get
imprime "[]" em vez de "gs://[bucket name] has no labels configuration."
ciclo de vida
Funciona conforme esperado.
registo
O subcomando get tem um espaçamento JSON diferente e não imprime uma mensagem informativa se não for encontrada nenhuma configuração.
ls
Funciona conforme esperado.
mb
Funciona conforme esperado.
mv
Veja notas sobre o CP.
notificação
O subcomando list imprime informações de configuração como YAML.
O subcomando delete oferece acompanhamento do progresso e paralelização.
pap
Funciona conforme esperado.
rb
Funciona conforme esperado.
requesterpays
Funciona conforme esperado.
reescrever
A flag -k não gera um erro se for chamada sem uma nova chave. Tanto no caso com shim como sem shim, a chave antiga é mantida.
rm
Os marcadores de eliminação
$folder$
não são suportados.
rpo
Funciona conforme esperado.
setmeta
Não gera um erro se não forem alterados cabeçalhos.
stat
Inclui um campo "Storage class update time:" que pode dificultar a navegação com a tecla Tab.
ubla
Funciona conforme esperado.
controlo de versões
Funciona conforme esperado.
Web
O subcomando get tem um espaçamento JSON diferente e não imprime uma mensagem informativa se não for encontrada nenhuma configuração.
Configuração do Boto
A configuração encontrada no ficheiro boto é mapeada 1:1 para as variáveis de ambiente do gcloud, quando adequado.
[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 gerais de compatibilidade
Devido à sua compatibilidade com todas as principais plataformas, o processamento múltiplo está ativado para todos os comandos por predefinição (equivalente à opção -m estar sempre incluída no gsutil).
Uma sequência de asteriscos superior a 2 (ou seja,
***
) é sempre tratada como um único asterisco.Ao contrário do gsutil, o gcloud não foi concebido para ser usado em invocações paralelas e, se o fizer (ou seja, executar o shim a partir de 2 terminais em simultâneo), pode levar a um comportamento imprevisível.
Supondo que um contentor contém um objeto
gs://bucket/nested/foo.txt
, o iterador de carateres universais do gsutil corresponde afoo.txt
dado um URL comogs://bucket/*/nested/*
. O preenchimento não vai corresponder afoo.txt
dado o mesmo URL.Esta página vai ser atualizada à medida que novos comandos forem suportados pelo gcloud storage e pelo shim.
Se o Unicode estiver a ter problemas, experimente definir a variável de ambiente
PYTHONUTF8
para1
. Especificamente, isto pode ajudar na linha de comandos (CMD) do Windows.