Shim para executar o armazenamento da gcloud
Informações gerais
O SDK do Cloud inclui uma nova CLI, o gcloud storage, que pode ser consideravelmente mais rápida do que a gsutil ao realizar uploads e downloads com menos ajustes de parâmetros. Essa nova CLI tem uma sintaxe e uma estrutura de comando conhecidas pelos usuários do gsutil, mas fundamentalmente diferentes de várias maneiras importantes. Para facilitar a transição para essa nova CLI, a gsutil fornece um shim que converte seus comandos da gsutil em comandos de armazenamento do gcloud se um equivalente existir e volta ao comportamento normal do gsutil se não houver um equivalente.
Para ativar
Defina use_gcloud_storage=True
no arquivo de configuração .boto
na seção
[GSUtil]
:
[GSUtil] use_gcloud_storage=True
Também é possível definir a flag para comandos individuais usando a flag -o
de nível superior:
gsutil -o "GSUtil:use_gcloud_storage=True" -m cp -p file gs://bucket/obj
Comandos disponíveis
A CLI de armazenamento do gcloud só oferece suporte a um subconjunto de comandos da gsutil. Veja a seguir uma lista de comandos compatíveis com o paliativo, com todas as diferenças de comportamento notadas.
acl
O subcomando
ch
não é compatível.
autoclass
Funciona como esperado.
bucketpolicyonly
Funciona como esperado.
gato
Mostra os dados de um segundo objeto, mesmo que o primeiro seja inválido.
compose
Funciona como esperado.
cors
O subcomando
get
exibe "[]" em vez de "gs://[bucket name]" sem configuração do CORS.
cp
Copia um segundo objeto mesmo que o primeiro objeto seja inválido.
Não é possível copiar um arquivo para outro.
Permite copiar objetos de nuvem para nuvem com barras no nome.
A flag de todas as versões (
-A
) permite silenciosamente a execução sequencial em vez de gerar um erro.
defacl
O subcomando
ch
não é compatível.
defstorageclass
Funciona como esperado.
hash
Na gsutil, as sinalizações
-m
e-c
que afetam quais hashes são exibidos são ignoradas para objetos na nuvem. Esse comportamento foi corrigido para o armazenamento do shim e gcloud.
iam
O subcomando
ch
não é compatível.A sinalização
-f
continuará com qualquer erro, não apenas com erros da API.
kms
O subcomando "autorize" retorna mensagens informativas em um formato diferente.
O subcomando de criptografia retorna mensagens informativas em um formato diferente.
rótulos
O subcomando
get
exibe "[]" em vez de "gs://[bucket name]" e não tem rótulos configurados.
lifecycle
Funciona como esperado.
logging
O subcomando "get" tem espaçamento JSON diferente e não imprime uma mensagem informativa se nenhuma configuração for encontrada.
ls
Funciona como esperado.
mb
Funciona como esperado.
mv
Consulte as observações sobre cp.
notificação
O subcomando list gera informações de configuração como YAML.
O subcomando "delete" oferece acompanhamento de progresso e carregamento em paralelo.
pap
Funciona como esperado.
rb
Funciona como esperado.
requesterpays
Funciona como esperado.
rewrite
A flag -k não gera um erro se for chamada sem uma nova chave. Nos casos de paliativo e de não paliativo, a chave antiga é mantida
rm
$folder$
marcadores de exclusão não são compatíveis.
rpo
Funciona como esperado.
setmeta
Não gera um erro se nenhum cabeçalho for alterado.
stat
Inclui um campo "Horário da atualização da classe de armazenamento", que pode jogar fora da tabulação.
ubla
Funciona como esperado.
controle de versões
Funciona como esperado.
web
O subcomando "get" tem espaçamento JSON diferente e não imprime uma mensagem informativa se nenhuma configuração for encontrada.
Configuração do Boto
A configuração encontrada no arquivo boto é mapeada individualmente para as variáveis de ambiente do gcloud quando apropriado.
[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 à compatibilidade com todas as principais plataformas, o multiprocessamento é ativado para todos os comandos por padrão (equivalente à opção -m que sempre está incluída na gsutil).
Uma sequência de asteriscos maiores que 2 (ou seja,
***
) é sempre tratada como um único asterisco.Ao contrário do gsutil, o gcloud não foi projetado para ser usado em invocações paralelas, e fazer isso (ou seja, executar o paliativo de dois terminais de uma só vez) pode gerar um comportamento imprevisível.
Supondo que um bucket contenha um objeto
gs://bucket/nested/foo.txt
, o iterador de caractere curinga da gsutil corresponderá afoo.txt
, considerando um URL comogs://bucket/*/nested/*
. O shim não corresponderá afoo.txt
considerando o mesmo URL.Isso será atualizado à medida que novos comandos forem compatíveis com o gcloud storage e o paliativo.
Se o Unicode estiver com problemas, tente definir a variável de ambiente
PYTHONUTF8
como1
. Especificamente, isso pode ser útil na linha de comando (CMD) do Windows.