Este tópico descreve como executar o comando rm para excluir objetos, partes ou buckets desnecessários e evitar cobranças indevidas.
Observações de uso
A exclusão de um único objeto requer a permissão
oss:DeleteObject. Para excluir todos os objetos de um diretório, são necessárias as permissõesoss:DeleteObjecteoss:ListObjects. A exclusão de uma versão específica de objeto exige a permissãooss:DeleteObjectVersion. Já para excluir todas as versões de objetos em um bucket, você precisa das permissõesoss:ListObjectVersionseoss:DeleteObjectVersion. Se o objetivo for excluir todas as versões de objetos em um diretório, as permissões exigidas sãooss:DeleteObjectVersioneoss:ListObjects. Para remover partes de um objeto, utilize as permissõesoss:ListMultipartUploadseoss:AbortMultipartUpload. A exclusão de todos os objetos e partes de um bucket requer as permissõesoss:ListMultipartUploads,oss:AbortMultipartUpload,oss:ListObjectseoss:DeleteObject. Por fim, excluir um bucket exige a permissãooss:DeleteBucket.No ossutil 1.6.16 e versões posteriores, use diretamente ossutil como nome do binário na linha de comando, sem necessidade de alteração conforme o sistema operacional. Em versões anteriores à 1.6.16, ajuste o nome do binário de acordo com o sistema operacional. Para mais informações, consulte ossutil command reference.
Sintaxe do comando
ossutil rm oss://bucketname[/prefix]
[-r, --recursive]
[-b, --bucket]
[-m, --multipart]
[-a, --all-type]
[-f, --force]
[--include <value>]
[--exclude <value>]
[--version-id <value>]
[--all-versions]
[--payer <value>]
[--encoding-type <value>]
A tabela a seguir descreve os parâmetros e opções da sintaxe.
|
Parâmetro/Opção |
Descrição |
|
bucketname |
Nome do bucket. |
|
prefix |
Prefixo nos nomes dos recursos, como diretórios e objetos. |
|
-r, --recursive |
Se especificada, o ossutil exclui do bucket todos os objetos cujos nomes contenham o prefixo indicado. Caso contrário, apenas os objetos especificados serão excluídos. |
|
-b, --bucket |
Indica que o comando deve excluir o bucket. Esta opção é obrigatória somente para exclusão de buckets. |
|
-m, --multipart |
Aplica a operação às tarefas incompletas de upload multipart no bucket. |
|
-a, --all-type |
Abrange tanto os objetos com o prefixo indicado quanto os dados gerados por tarefas incompletas de upload multipart no bucket. |
|
-f, --force |
Força a execução da operação sem solicitar confirmação. |
|
--include |
Inclui todos os objetos que atendem às condições especificadas. Para mais informações, consulte Options --include and --exclude. |
|
--exclude |
Exclui todos os objetos que atendem às condições especificadas. Para mais informações, consulte Options --include and --exclude. |
|
--version-id |
ID da versão do objeto. Este parâmetro se aplica apenas a buckets com versionamento ativado ou suspenso. |
|
--all-versions |
Abrange todas as versões dos objetos. Esta opção vale apenas para objetos em buckets com versionamento ativado ou suspenso. Em um único comando rm, especifique apenas uma das opções: --version-id ou --all-versions. |
|
--payer |
Responsável pelo pagamento das taxas geradas pela operação. Para que o solicitante que acessa os recursos no caminho especificado pague as taxas decorrentes, como tráfego e requisições, defina este parâmetro como requester. |
|
--encoding-type |
Codificação do prefixo após |
Excluir objetos
Objetos excluídos não podem ser recuperados. Tenha cautela ao realizar esta operação.
O uso do comando rm, com ou sem a opção -r, para excluir um ou mais objetos aciona as operações ListObjects (GetBucket) e DeleteObject. Nesse caso, há cobrança pelo envio de requisições PUT. Para mais informações, consulte Request fees.
O uso simultâneo das opções --include e --exclude em um comando rm pode causar exclusões acidentais devido a configurações inadequadas de condições. Recomendamos cautela ao combinar ambas as opções no mesmo comando.
É possível especificar mais de uma condição nas opções --include e --exclude. Todas as condições são aplicadas da esquerda para a direita para corresponder aos objetos. Ao definir múltiplas condições, recomendamos colocar a opção --include antes da --exclude.
-
Exemplos
-
Excluir um único objeto
Exclua um objeto chamado exampleobject.txt de um bucket chamado examplebucket.
ossutil rm oss://examplebucket/exampleobject.txt -
Exclua todos os objetos cujos nomes contenham o prefixo "test" de um bucket chamado examplebucket.
ossutil rm oss://examplebucket/test -r -
Exclua todos os objetos com sufixo ".png" de um bucket chamado examplebucket.
ossutil rm oss://examplebucket --include "*.png" -r -
Exclua objetos cujos nomes contenham a string "abc" e não tenham os sufixos ".jpg" ou ".txt" em um bucket chamado examplebucket.
ossutil rm oss://examplebucket --include "*abc*" --exclude "*.jpg" --exclude "*.txt" -r -
Exclua uma versão específica do objeto exampleobject.txt em um bucket com versionamento ativado chamado examplebucket.
ossutil rm oss://examplebucket/exampleobject.txt --version-id CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3****Para saber como obter todas as versões de um objeto, consulte ls.
-
Exclua todas as versões do objeto exampleobject.txt de um bucket com versionamento ativado chamado examplebucket.
ossutil rm oss://examplebucket/exampleobject.txt --all-versions -
Exclua todas as versões de todos os objetos em um bucket com versionamento ativado chamado examplebucket.
ossutil rm oss://examplebucket --all-versions -r
NotaSe o nome de um objeto contiver caracteres de controle, como SOH (0x01), BS (0x08) ou DEL (0x7F), a execução de
ossutil rmsem a opção--encoding-typefalhará em localizar o objeto, pois o nome não será interpretado corretamente. Da mesma forma, executarossutil lssem--encoding-typenão exibirá esses caracteres de controle, fazendo com que o objeto pareça ausente mesmo existindo no bucket. Especifique--encoding-type urlpara que o ossutil exiba e localize corretamente nomes de objetos que contenham caracteres de controle. -
-
Saída de exemplo
Uma resposta de sucesso inclui a quantidade de objetos excluídos e o tempo gasto para concluir a operação:
Succeed: Total 8 objects. Removed 8 objects. 0.106852(s) elapsed
Excluir partes
O uso do comando rm com múltiplas opções para excluir partes aciona as operações ListMultipartUploads, ListParts e AbortMultipartUpload. Consequentemente, há cobrança pelo envio de requisições GET durante as chamadas de ListMultipartUploads e ListParts, e pelo envio de requisições PUT na chamada de AbortMultipartUpload. Para mais informações, consulte Request fees.
-
Exemplos
-
Use a opção -m no comando para excluir partes geradas por tarefas incompletas de upload multipart do objeto exampleobject.txt em um bucket chamado examplebucket.
ossutil rm -m oss://examplebucket/exampleobject.txt -
Combine as opções -m e -r no comando para excluir recursivamente as partes geradas por tarefas incompletas de upload multipart de objetos com o prefixo "test" em um bucket chamado examplebucket.
ossutil rm -m oss://examplebucket/test -r Do you really mean to remove recursively multipart uploadIds of oss://examplebucket/test(y or N)? y -
Use as opções -a e -r no comando para excluir recursivamente objetos com o prefixo "src" e as partes geradas por tarefas incompletas de upload multipart desses objetos em um bucket chamado examplebucket.
ossutil rm oss://examplebucket/src -a -r Do you really mean to remove recursively objects and multipart uploadIds of oss://examplebucket/src(y or N)? y
-
-
Resposta de exemplo
Uma resposta de sucesso apresenta a quantidade de objetos excluídos, o número de tarefas de upload multipart que geraram as partes excluídas e o tempo total da operação:
Succeed: Total 1 objects, 3 uploadIds. Removed 1 objects, 3 uploadIds. 1.922915(s) elapsed
Excluir buckets
-
Exclua o bucket examplebucket que não contém objetos ou partes.
ossutil rm oss://examplebucket -b Do you really mean to remove the Bucket: examplebucket(y or N)? yUma resposta de sucesso mostra o nome do bucket excluído e o tempo necessário para a exclusão:
Removed Bucket: examplebucket 2.230745(s) elapsed -
Exclua um bucket chamado examplebucket junto com todos os seus objetos e partes.
AvisoA execução do comando abaixo apaga permanentemente todos os dados do bucket, sem possibilidade de recuperação. Proceda com extrema cautela.
ossutil rm oss://examplebucket -b -a -r Do you really mean to remove recursively objects and multipart uploadIds of oss://examplebucket(y or N)? y Do you really mean to remove the Bucket: examplebucket(y or N)? yUma resposta de sucesso informa a quantidade de objetos excluídos, o número de tarefas de upload multipart que originaram as partes excluídas, o nome do bucket removido e o tempo total da operação:
Succeed: Total 189 objects, 37 uploadIds. Removed 189 objects, 37 uploadIds. Removed Bucket: examplebucket 9.184193(s) elapsed
Solução de problemas
Se o comando ossutil rm -b -a -r falhar porque o bucket contém objetos cujos nomes incluem caracteres de controle, como SOH (0x01), BS (0x08) ou DEL (0x7F), utilize o fluxo alternativo abaixo para excluir o bucket:
-
Liste os objetos do bucket com os nomes codificados em URL para tornar visíveis os caracteres de controle:
ossutil api list-objects --bucket <bucket_name> --encoding-type url --output-format json -
Use os nomes codificados dos objetos para montar o corpo da requisição de exclusão e exclua os objetos em lote:
ossutil api delete-multiple-objects --bucket <bucket_name> --encoding-type url2 --delete file://delete-objects.xml -
Exclua o bucket, que agora está vazio:
ossutil rb oss://<bucket_name>
No ossutil 2.x, a opção -b não é mais suportada para exclusão de buckets. Use o comando rb em vez de rm -b.
Um byte NUL (0x00) não pode fazer parte da chave de um objeto. Se você tentar criar um objeto cujo nome contenha um byte NUL, o OSS retornará um erro 400 BadRequest.
Opções comuns
Para acessar um bucket em outra região, use -e para especificar o endpoint. Para acessar um bucket pertencente a outra conta Alibaba Cloud, use -i para o AccessKey ID e -k para o AccessKey secret.
Por exemplo, execute o comando abaixo para excluir um objeto chamado exampletest.png de um bucket chamado testbucket, localizado na região China (Shanghai) e pertencente a outra conta Alibaba Cloud:
ossutil rm oss://testbucket/exampletest.png -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID -k yourAccessKeySecret