Este tópico descreve problemas comuns ao usar o ossutil e suas respectivas soluções.
A partir da versão 1.6.16 do ossutil, use diretamente ossutil como nome do comando, independentemente do sistema operacional. Em versões anteriores à v1.6.16, utilize o nome do executável específico para cada sistema operacional. Para mais informações, consulte ossutil command reference.
O ossutil oferece suporte à assinatura V4?
Sim, o ossutil V1.7.12 e versões posteriores oferecem suporte à assinatura V4. Para mais informações, consulte Include a V4 signature in the Authorization header (recommended).
O ossutil adiciona as opções --sign-version e --region aos comandos existentes. O comando a seguir cria um bucket na região China (Hangzhou) usando a assinatura V4:
./ossutil64 --sign-version v4 --region cn-hangzhou mb oss://examplebucket
A sincronização de objetos é suportada para objetos Infrequent Access e Standard?
Sim, o ossutil suporta sincronização tanto para objetos Infrequent Access (IA) quanto para objetos Standard. Para mais informações, consulte Overview.
Como evitar a substituição de um objeto com o mesmo nome?
Adicione a opção -u/@parmname ao comando do ossutil. Com essa opção, o ossutil não substitui um objeto existente que possua o mesmo nome.
Por que recebo uma mensagem 'skip' ao fazer upload de um objeto com a opção -u?
Esse comportamento é esperado. Ao utilizar a opção -u/@parmname, o ossutil compara a data da última modificação do objeto enviado com a de qualquer objeto existente com o mesmo nome no bucket de destino. Se a data de modificação do objeto existente for igual ou posterior à do objeto enviado, o ossutil o ignora. A mensagem de skip é normal quando se usa a opção -u/@parmname para enviar um objeto.
Caso o objeto presente no bucket seja a versão desejada, ignore a mensagem de skip com segurança.
Por que recebo um erro HTTP 403 ao restaurar um objeto?
Um erro HTTP 403 durante a restauração de um objeto ocorre por um destes dois motivos:
O usuário do Resource Access Management (RAM) que executa a operação não possui as permissões necessárias.
O OSS bloqueou o objeto devido a conteúdo proibido.
Soluções:
Permissões insuficientes: Conceda as permissões necessárias ao usuário RAM.
Violação de conteúdo: Exclua ou ignore o objeto bloqueado.
Por que não consigo excluir um bucket que parece vazio após executar o comando ls?
O comando ls/@cmdname sem opções não lista partes incompletas de uploads multipart ou versões anteriores de objetos em buckets com versionamento ativado. Se um bucket contiver qualquer um desses itens, ele não estará verdadeiramente vazio e não poderá ser excluído apenas com rm/@cmdname.
Para excluir o bucket, utilize uma das seguintes abordagens:
Buckets e objetos excluídos não podem ser restaurados. Tenha cuidado ao executar estes comandos.
-
Exclua primeiro as partes e versões anteriores e, em seguida, exclua o bucket.
-
Exclua as partes incompletas de uploads multipart e todas as versões dos objetos.
-
Liste e exclua as partes incompletas de uploads multipart:
./ossutil64 ls oss://bucket1 -m ./ossutil64 rm -m oss://bucket1 -r -
Liste e exclua todas as versões dos objetos (para buckets com versionamento):
./ossutil64 ls oss://bucket1 --all-versions ./ossutil64 rm oss://bucket1 --all-versions -r
-
-
Exclua o bucket.
./ossutil64 rm oss://bucket1 -b
-
-
Force a exclusão do bucket com um único comando.
-
Se o versionamento estiver desativado:
./ossutil64 rm oss://bucketname -abrf -
Se o versionamento estiver ativado:
./ossutil64 rm oss://bucketname -abrf --all-versions
-
Por que o progresso do upload ou download ultrapassa 100%?
Para objetos maiores que 100 MB, o ossutil utiliza upload retomável ou download retomável por padrão e armazena o arquivo de checkpoint em um diretório .ossutil_checkpoint/@filepath. Quando várias instâncias do ossutil são executadas simultaneamente na mesma máquina, elas compartilham esse diretório de checkpoint padrão. Se uma instância finalizar e remover o diretório .ossutil_checkpoint/@filepath, isso corrompe o estado do checkpoint das outras transferências em andamento. Como resultado, os contadores de progresso exibem valores incorretos (como ultrapassar 100%) e as transferências falham.
Para corrigir isso:
Interrompa a tarefa com falha e reinicie o upload ou download.
-
Ao executar tarefas simultâneas, atribua um diretório de checkpoint exclusivo para cada uma usando a opção --checkpoint-dir/@parmname com o comando cp/@cmdname:
./ossutil64 cp oss://bucket1/myphoto.jpg /dir --checkpoint-dir checkpoint
Por que múltiplas requisições são registradas nos logs ao baixar um único objeto?
Dois comportamentos explicam as entradas adicionais nos logs:
Tentativas automáticas: o ossutil tenta novamente requisições com falha ou excepcionais automaticamente, até 10 vezes por padrão.
Requisições de intervalo: Para objetos maiores que 100 MB, o ossutil baixa o objeto em partes usando requisições de intervalo. Cada parte gera uma entrada separada no log.
O que devo fazer se o download de um objeto grande for interrompido?
-
Causas comuns de interrupção de downloads:
-
Timeout ou desconexão devido a um download prolongado.
Fatores contribuintes: limitação de largura de banda da rede e baixa estabilidade da conexão.
-
O download retorna um código de erro de fim de arquivo (EOF) e a tarefa é interrompida.
Isso geralmente resulta de uma conexão perdida ou de uma velocidade de leitura/gravação do disco incapaz de acompanhar a taxa de download.
-
-
Solução: Utilize o download retomável.
-
Especifique um diretório de checkpoint usando a opção
--checkpoint-dir. Caso a transferência seja interrompida, o ossutil retoma do ponto onde parou utilizando o arquivo de checkpoint salvo../ossutil64 cp examplefile.txt oss://examplebucket/desfolder/ --checkpoint-dir localfolder/ Para mais informações sobre
--checkpoint-dir, consulte Command syntax.
-
Por que recebo o erro Error: accessKeyID and ecsUrl are both empty?
O ossutil não encontrou um arquivo de configuração no seu diretório home.
Para resolver isso, use uma das seguintes abordagens:
Crie um arquivo de configuração no seu diretório home antes de executar comandos do ossutil. Para mais informações, consulte Instale o ossutil.
-
Passe explicitamente o caminho do seu arquivo de configuração em cada comando usando a opção
-c:./ossutil64 cp examplefile.txt oss://examplebucket/destfolder/ -c /home/admin/.ossutilconfig
Por que charset=utf-8 é adicionado ao Content-Type dos objetos enviados?
O ossutil determina o Content-Type de um objeto consultando o tipo MIME correspondente à extensão do arquivo, utilizando a biblioteca MIME padrão do Go. Essa biblioteca anexa automaticamente charset=utf-8 aos tipos MIME baseados em texto. Por exemplo, um arquivo .htm recebe um Content-Type definido como text/html; charset=utf-8.
Atualize o ossutil para a versão V1.7.14 ou superior para corrigir isso. Faça a atualização reinstalando a ferramenta. Para mais informações, consulte Instale o ossutil.
Posso usar o ossutil para consultar o tamanho de um diretório?
Sim, execute o comando du/@cmdname. Ele chama a API ListObjects/@cmdname para recuperar todos os objetos sob o prefixo especificado e calcula o tamanho total. Para diretórios com muitos objetos, a operação pode levar algum tempo.
Para mais informações, consulte du.
Como gerar uma URL assinada que contenha um nome de domínio personalizado?
-
Configure um nome de domínio personalizado para o bucket.
Para mais informações, consulte Configure a custom domain name.
-
Execute o comando sign/@cmdname para gerar uma URL assinada.
Para mais informações, consulte sign (generate a signed URL).
É possível ordenar os resultados ao listar objetos com o ossutil?
Não, o ossutil não oferece suporte à ordenação de resultados na listagem de objetos.
Por que recebo um erro 'no such host' ao executar comandos do ossutil?
O endpoint é inválido. Especifique um endpoint válido usando a opção -e/@parmname ou atualize o endpoint no seu arquivo de configuração. A opção -e/@parmname aceita o endpoint da região do bucket, por exemplo -e oss-cn-shanghai.aliyuncs.com. Não inclua caracteres extras na string do endpoint. Para obter uma lista de endpoints, consulte Regions and endpoints.
Como sou cobrado pelo comando du?
O comando du gera taxas de requisição de API. Sem a opção --all-versions, ele chama ListObjects. Com --all-versions, ele chama ListObjectVersions. Em ambos os casos, também chama ListMultipartUploads. Para mais informações, consulte Request fees.
Se o bucket contiver partes de uploads multipart incompletos, taxas para requisições ListUploadedParts também serão aplicadas.