Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever e obter uma conta grátis, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir o laboratório, substitua esses valores pelos específicos do seu ambiente de nuvem.
Excluir objetos do serviço em massa/lote do serviço Object Storage
Introdução
Existem maneiras diferentes de excluir objetos do Object Storage. Você pode executar operações de exclusão de objeto único, por meio da console, da CLI ou da API/SDK. No entanto, o problema se torna não-comum ao excluir um número extremamente grande de objetos. Este tutorial descreve os seguintes métodos que podem ser usados para exclusão em massa/em lote de objetos:
- Exclusão em lote/em massa por meio da CLI do Oracle Cloud Infrastructure (OCI)
- Exclusão em lote/em massa por meio do Gerenciamento do Ciclo de Vida de Objetos (OLM)
Pontos a serem Anotados
Observe os seguintes pontos para excluir objetos em massa usando a CLI do OCI:
-
Como o comando de exclusão em massa é implementado? É uma operação síncrona ou assíncrona?
O comando de exclusão em massa é implementado de forma síncrona, o que significa que ele exclui objetos um por um emitindo solicitações de exclusão de objeto único no lado do cliente. Não é uma operação assíncrona do lado servidor. Por exemplo, considere o caso em que você executa o comando e leva muito tempo para terminar. Se você interromper o comando antes de sua execução terminar, apenas alguns dos objetos que deveriam ser excluídos pelo comando serão realmente excluídos. Haverá objetos restantes que ainda precisam ser processados/excluídos.
-
Como posso monitorar o andamento de um comando de exclusão em massa?
Você pode ver o andamento de um comando de exclusão em massa logo após executá-lo. No seu terminal, haverá uma barra com
#
caracteres e, em seguida, uma porcentagem ao lado dele (consulte os exemplos abaixo) - esse é o andamento do comando de exclusão em massa.
Observe os seguintes pontos para excluir objetos em massa usando o OLM:
-
Como o OLM é implementado? É uma operação síncrona ou assíncrona?
O OLM é uma operação assíncrona, o que significa que o trabalho da regra de ciclo de vida é executado em segundo plano com várias nuances por trás de sua implementação. Por exemplo, somente metadados de objeto são excluídos no início, o que significa que você não pode ver objetos que acabaram de ser excluídos. Mas sob o capô, os dados reais do objeto ainda existem em nossos servidores de armazenamento e serão excluídos/limpos por nossos serviços internos de coleta de lixo mais tarde. Do ponto de vista do cliente, eles não serão cobrados se tiverem excluído um objeto, mas internamente, os dados ainda existir em nossos servidores de armazenamento, pois eles aguardam para serem limpos - ou seja, eles não serão cobrados pelo uso do espaço de armazenamento se não puderem ver os objetos em si (via CLI ou Console). Como o OLM é assíncrono, você pode fazer outras coisas com o Object Storage enquanto as regras estão em execução em segundo plano.
-
Como posso monitorar o andamento de uma Regra de Ciclo de Vida do OLM?
No momento, não há como monitorar o andamento de uma regra de Ciclo de Vida do OLM - os jobs do OLM não são mostrados nas Solicitações de Serviço. Dito isto, a capacidade de monitorar o progresso das regras do OLM está no nosso roteiro de produtos e pode estar disponível no futuro.
-
Acabei de criar uma regra de ciclo de vida. Quando a regra realmente começará?
Lembre-se de que as regras de ciclo de vida não são iniciadas imediatamente. Por exemplo, se você criar uma regra de ciclo de vida para objetos com mais de 3 dias a serem excluídos e houver objetos existentes com mais de 3 dias, eles não serão excluídos imediatamente quando a regra for criada. Há um atraso desde o momento em que a regra é criada até que a regra realmente entre em vigor. Podemos esperar que a regra entre em vigor (ou pelo menos comece a entrar em vigor) dentro de 24 horas.
Que método devo usar?
A principal diferença entre os dois métodos de exclusão de objeto em massa/vinculado está na implementação. Para reiterar, o comando de exclusão em massa da CLI do OCI é implementado de forma síncrona no lado do cliente, enquanto o OLM é implementado de forma assíncrona no lado do servidor. Como regra geral, use os critérios a seguir para determinar qual método usar.
Usar exclusão em massa da CLI se: | Usar exclusão em massa do OLM se: |
---|---|
A exclusão pode ocorrer de forma síncrona (porque a CLI é síncrona) | A exclusão deve ocorrer de forma assíncrona (porque o OLM é assíncrono) |
Exclusão única | Exclusão recorrente que deve acontecer para sempre |
Há um pequeno número de objetos | Há um grande número de objetos |
A exclusão do objeto precisa ocorrer imediatamente | A exclusão do objeto pode aguardar (tem um curto atraso) |
Objetivo
- Saiba mais sobre os seguintes métodos para excluir um grande número de objetos do Object Storage:
- Exclusão em lote/em massa por meio da CLI do Oracle Cloud Infrastructure (OCI)
- Exclusão em lote/em massa por meio do Gerenciamento do Ciclo de Vida de Objetos (OLM)
Pré-requisitos
- Verifique Visão Geral do Serviço Object Storage para obter um entendimento básico do serviço Object Storage.
- Revise Usando o Gerenciamento do Ciclo de Vida de Objetos para obter um entendimento básico do recurso OLM do serviço Object Storage.
- Verifique a CLI (Command Line Interface) para obter um entendimento básico de como a CLI do OCI funciona.
Método 1: Exclua objetos em massa/lote via CLI do OCI
Você pode excluir em massa objetos da CLI do OCI usando qualquer um dos métodos a seguir.
Excluir objetos em massa dentro de um bucket
Você pode usar a CLI do OCI para fazer a exclusão em massa de objetos dentro de um bucket usando o seguinte comando:
oci os object bulk-delete -bn <bucket_name>
Observação: Se você não quiser executar a operação de exclusão, mas quiser ver um plano de quais objetos serão excluídos, use a opção --dry-run
.
oci os object bulk-delete -bn <bucket_name> --dry-run
{
"delete-failures": {},
"deleted-objects": [
"1000_sales.csv",
"rick_and_morty.json"
]
}
Excluir objetos em massa por prefixo
Você pode especificar a exclusão somente de objetos que correspondam a um prefixo específico, adicionando a opção --prefix
. O comando a seguir exclui todos os objetos que correspondem ao prefixo <some_prefix>
.
oci os object bulk-delete -bn <bucket_name> --prefix <some_prefix>
Por exemplo, se você quiser excluir objetos que correspondam ao prefixo "rick", use o seguinte comando:
oci os object bulk-delete -bn test-bucket-1 --prefix rick
WARNING: This command will delete at least 1 objects. Are you sure you wish to continue? [y/N]: y
Deleted object rick_and_morty.json [####################################] 100%
{
"delete-failures": {},
"deleted-objects": [
"rick_and_morty.json"
]
}
Excluir objetos em massa por padrão (Inclusão)
Você pode especificar a exclusão somente de objetos que correspondam a um padrão específico, adicionando a opção --include
. O comando a seguir exclui todos os objetos que correspondem ao padrão <some_pattern>
.
oci os object bulk-delete -bn <bucket_name> --include <some_pattern>
Por exemplo, se você quiser excluir somente objetos que sejam do tipo de arquivo JSON, use o seguinte comando:
oci os object bulk-delete -bn test-bucket-1 --include "*.json"
WARNING: This command will delete at least 1 objects. Are you sure you wish to continue? [y/N]: y
Deleted object rick_and_morty.json [####################################] 100%
{
"delete-failures": {},
"deleted-objects": [
"rick_and_morty.json"
]
}
Excluir objetos em massa por Padrão Inverso (Exclusão)
Você pode especificar a exclusão somente de objetos que não correspondem a um padrão específico, adicionando a opção --exclude
. O comando a seguir exclui todos os objetos, exceto aqueles que correspondem ao padrão <some_pattern>
.
oci os object bulk-delete -bn <bucket_name> --exclude <some_pattern>
Por exemplo, se você quiser excluir todos os objetos, exceto os que são do tipo de arquivo JSON, use o seguinte comando:
oci os object bulk-delete -bn test-bucket-1 --exclude "*.json"
WARNING: This command will delete at least 1 objects. Are you sure you wish to continue? [y/N]: y
Deleted object 1000_sales.csv [####################################] 100%
{
"delete-failures": {},
"deleted-objects": [
"1000_sales.csv"
]
}
Método 2: Excluir objetos em massa/lote via OLM
Além da CLI do OCI, você também pode usar o OLM - Gerenciamento do Ciclo de Vida de Objetos - recurso para exclusão em massa de objetos. O recurso OLM permite criar regras de ciclo de vida que especificam a ação a ser tomada se uma condição específica for atendida. Por exemplo, podemos especificar objetos com mais de 30 dias para serem excluídos.
Criar uma regra de ciclo de vida de exclusão em massa na Console/CLI do OCI
É possível criar regras de ciclo de vida por meio da Console do OCI. Isso pode ser feito clicando em um bucket e na guia Regras de Política de Ciclo de Vida do lado. Em seguida, uma caixa de diálogo deve ser exibida, permitindo que o usuário configure sua regra.
Também é possível criar regras de ciclo de vida por meio da CLI do OCI. O comando a seguir é um exemplo de criação de uma regra de Ciclo de Vida usando a CLI do OCI. A regra exclui todos os objetos com mais de 10 dias.
oci os object-lifecycle-policy put --bucket-name test-bucket-1 --items '[
{
"action": "DELETE",
"isEnabled": true,
"name": "lifecycle-rule-delete-all",
"target": "objects",
"timeAmount": 10,
"timeUnit": "DAYS"
}
]'
Criar uma regra de ciclo de vida de exclusão em massa por prefixo
Na Console do OCI, você pode especificar filtros de Nome de Objeto para objetos que serão excluídos, com base em uma condição específica. Ele pode tratar a correspondência de prefixo de nome de objeto. A captura de tela abaixo mostra uma regra de ciclo de vida que excluirá todos os objetos com o prefixo test/
.
Semelhante à console, a CLI do OCI também pode especificar quais objetos excluir por meio de correspondência de prefixo.
oci os object-lifecycle-policy put --bucket-name <test_bucket> --items '[
{
...
"objectNameFilter": {
"exclusionPatterns": [],
"inclusionPatterns": [],
"inclusionPrefixes": [
<some_prefix>
]
},
...
}
]'
Por exemplo, o comando da CLI do OCI cria/atualiza uma regra de ciclo de vida que excluirá todos os objetos com o prefixo test/
. Lembre-se de que o argumento para a opção –-items
deve ser uma lista JSON válida.
oci os object-lifecycle-policy put --bucket-name test-bucket-1 --items '[
{
"action": "DELETE",
"isEnabled": true,
"name": "lifecycle-rule-delete-all",
"objectNameFilter": {
"exclusionPatterns": [],
"inclusionPatterns": [],
"inclusionPrefixes": [
"test/"
]
},
"target": "objects",
"timeAmount": 10,
"timeUnit": "DAYS"
}
]'
Criar uma regra de ciclo de vida de exclusão em massa por Correspondência de Padrões (Inclusões)
Na Console do OCI, você pode especificar Filtros de Nome de Objeto para excluir objetos por correspondência de padrão (inclusões). A captura de tela abaixo mostra uma regra de ciclo de vida que excluirá todos os tipos de arquivo .doc
.
Você também pode excluir apenas arquivos que correspondam a um padrão específico da CLI do OCI.
oci os object-lifecycle-policy put --bucket-name <bucket_name> --items '[
{
...
"objectNameFilter": {
"exclusionPatterns": [],
"inclusionPatterns": [
<some_pattern>
],
"inclusionPrefixes": []
},
...
}
]'
Por exemplo, o comando da CLI do OCI cria/atualiza uma regra de Ciclo de Vida que excluirá todos os tipos de arquivo .doc
.
oci os object-lifecycle-policy put --bucket-name test-bucket-1 --items '[
{
"action": "DELETE",
"isEnabled": true,
"name": "lifecycle-rule-delete-all",
"objectNameFilter": {
"exclusionPatterns": [],
"inclusionPatterns": [
"*.doc"
],
"inclusionPrefixes": []
},
"target": "objects",
"timeAmount": 10,
"timeUnit": "DAYS"
}
]'
Criar uma regra de ciclo de vida de exclusão em massa por Correspondência Inversa de Padrões (Exclusões)
Na Console do OCI, você pode especificar Filtros de Nome de Objeto para excluir objetos por correspondência de padrão inverso (exclusão) - ou seja, excluir todos os objetos, exceto aqueles que correspondem ao padrão. A captura de tela abaixo mostra uma regra de ciclo de vida que excluirá tudo, exceto os tipos de arquivo .txt
.
Você também pode excluir todos os arquivos, exceto aqueles que correspondem a um padrão específico da CLI do OCI.
oci os object-lifecycle-policy put --bucket-name <bucket_name> --items '[
{
...
"objectNameFilter": {
"exclusionPatterns": [
<some_pattern>
],
"inclusionPatterns": [],
"inclusionPrefixes": []
},
...
}
]'
Por exemplo, o comando da CLI do OCI cria/atualiza uma regra de ciclo de vida que excluirá cada objeto, exceto os tipos de arquivo .txt.
oci os object-lifecycle-policy put --bucket-name test-bucket-1 --items '[
{
"action": "DELETE",
"isEnabled": true,
"name": "lifecycle-rule-delete-all",
"objectNameFilter": {
"exclusionPatterns": [
"*.txt"
],
"inclusionPatterns": [],
"inclusionPrefixes": []
},
"target": "objects",
"timeAmount": 10,
"timeUnit": "DAYS"
}
]'
Links Relacionados
Agradecimentos
- Autor - Raymond Lin (Engenheiro de Software)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Delete objects in bulk/batch from Object Storage
F74479-01
November 2022
Copyright © 2022, Oracle and/or its affiliates.