Mc: `mc rm` com a sinalização --older-than remove baldes também

Criado em 29 dez. 2018  ·  15Comentários  ·  Fonte: minio/mc

Comportamento esperado

Deve haver uma maneira de excluir todos os objetos em um intervalo usando o sinalizador --older-than , mas não o próprio intervalo .
Eu esperaria que isso acontecesse ao executar mc rm -r --older-than 30 --force minio/bucket/ .

Comportamento real

O balde também foi excluído. (Só para constar, tinha mais de 30 dias.)

Passos para reproduzir o comportamento

  1. Tenha um balde com mais de x dias.
  2. Execute mc rm -r --older-than x --force minio/bucket/ .

Alternativamente:

mc mb minio/bucket/
mc rm -r --older-than 0 --force minio/bucket/

versão mc

$ mc version
Version: 2018-12-27T00:37:49Z
Release-tag: RELEASE.2018-12-27T00-37-49Z
Commit-id: 4e7eeb0725abcd36b54a37636ff89f29c3238fd8

Informação do sistema

Fedora 29

community medium

Todos 15 comentários

Solução alternativa: mc find minio/bucket --older 30d --exec "mc rm {}"

@nikwen, esse é o comportamento esperado por enquanto. você quer preservar os baldes?

@harshavardhana Obrigado por sua resposta rápida!

Meu caso de uso: Eu tenho um intervalo onde regularmente preciso excluir todos os objetos com mais de x dias. Não quero excluir o próprio balde e seus outros conteúdos.

Melhorias que eu sugeriria:

  • Adicione um sinalizador --ignore-buckets a mc rm para excluir apenas objetos.
  • Documentação: ajuste a seção de sinalizadores da documentação mc rm , de modo que diga "objetos e depósitos":
    --older-than value remove objects older than N days (default: 0) --newer-than value remove objects newer than N days (default: 0)

Eu tendo a pensar que não devemos remover baldes tão rapidamente, os usuários podem perder muitas configurações de baldes por engano (política de baldes, notificação, ciclo de vida posterior, etc.)

Também precisamos discutir como o mc deve se comportar quando o controle de versão está habilitado. Atualmente, não é possível remover um balde com mc nesse caso. Portanto --remove-bucket pode ser útil neste caso para corrigir os dois problemas, mas isso precisa de mais discussão.

Eu tendo a pensar que não devemos remover baldes tão rapidamente, os usuários podem perder muitas configurações de baldes por engano (política de baldes, notificação, ciclo de vida posterior, etc.)

@vadmeste Concordo totalmente!

Além disso, sinta-se à vontade para alterar o título ou corpo do problema para o que você precisar. :piscadela:

@nikwen Decidimos adicionar um novo comando

mc rb myaliaas/bucket com um sinalizador opcional --force . rb removerá um balde. Com o sinalizador --force , ele o removerá mesmo se houver objetos no intervalo.

@kannappanr Eu gosto disso. Presumo que rm não removerá mais os baldes. :corar:

Obrigado pessoal. Você é tão incrível!

Oi,

Estou tentando limpar objetos expirados usando o seguinte comando:

mc rm --recursive --force --older-than 1d /data/upload

Isso também remove o depósito upload , mas eu gostaria de mantê-lo. Há algo que estou fazendo de errado? Meus objetos não têm um prefixo específico, eu só quero verificar o balde em busca de objetos expirados.

A versão é RELEASE.2020-04-04T05-28-55Z.

Obrigado,
Cam

mc rm --recursive --force --older-than 1d /data/upload

Esta é uma pasta local, não um bucket @tuscland

Obrigado @harshavardhana !
Compreendido, mas ... por que o comportamento deveria ser diferente dependendo do alvo?

Sim, um está se comportando para um sistema de arquivos, outro para um armazenamento de objeto, ambos são entidades diferentes com significados diferentes.

O que mc faz abstração da interação entre dois sistemas diametralmente opostos, ele não tenta generalizar o comportamento, pois as preocupações são diferentes para cada sistema em questão.

O comportamento ainda é enganoso porque quando a opção --fake é especificada, a lista de objetos que serão excluídos está correta (não indica que excluirá o depósito). É apenas quando você realmente executa (não fingindo) que o mc exclui o balde e até tenta excluir a pasta raiz (mas falha devido ao bloqueio de fs subjacente).

Não é enganoso, é de acordo com o que queríamos fazer com mc @tuscland , você pode não querer desta forma. Mas é assim que está de acordo com nossos requisitos. Como afirmei, abstração não é generalização.

Agora, com relação à diferenciação no que é exibido durante --fake pode ser corrigido, sinta-se à vontade para abrir um novo problema para isso.

Esta página foi útil?
0 / 5 - 0 avaliações