Estou usando o Backblaze como armazenamento S3 e ativei a configuração limpar uploads órfãos. O problema é que, em vez de excluir o upload órfão, foi criado um arquivo duplicado com 0 bytes.
Veja o exemplo abaixo. O (2) indica o número de arquivos com o mesmo nome. Se expandir, verá que o arquivo original ainda existe, juntamente com um arquivo de 0 bytes. Alguém já teve um problema semelhante? É um problema do Backblaze ou da configuração? Obrigado.
O Discourse utiliza a API do S3 e, como funciona perfeitamente com o AWS S3, isso fica como um problema da Backblaze. Talvez você deva entrar em contato com o suporte deles? Vou adicionar uma nota sobre isso em Usando Armazenamento de Objetos para Uploads (S3 e Clones)
Há um reticências que sugere que o nome do arquivo de 0 bytes está sendo truncado. Qual é o nome completo ali? Aposto que o bucket tem uma configuração de ciclo de vida e que esse arquivo é um “marcador de ocultação”, como eles chamam.
Quando o ciclo de vida expirar, ambas as versões devem desaparecer.
A parte truncada está “oculta”. Acho que você está certo. Parece que os arquivos duplicados são todos os que foram carregados recentemente. Vou aguardar um tempo e ver se eles desaparecem. Obrigado.
O problema ainda não foi resolvido. Acabei de excluir manualmente todos os arquivos órfãos do BackBlaze. Acho que vou migrar para o S3 neste momento, porque a limpeza regular do armazenamento é uma tarefa em si.
Apenas uma atualização sobre minha experiência…
Tenho uma conta B2 gratuita (ou seja, os primeiros 10 GB) e não tenho um método de pagamento adicionado.
Os arquivos de backup são rotacionados e os arquivos ‘ocultos’ são removidos permanentemente após alguns dias. Nunca tenho mais do que 7 arquivos ao mesmo tempo (o Discourse tem no máximo 5 rotações de backup diárias). Como meus backups nunca ultrapassam ~500 MB cada, nunca precisei pagar por nada ou excluir manualmente quaisquer arquivos ‘órfãos’.
Mas o problema parece ser com os ‘Uploads’!!
Como os ‘Backups’ não são tantos/têm tantos arquivos para gerenciar. Eles são gerenciáveis, mesmo manualmente.
Obrigado. Vejo que copy_to_tombstone está envolvido aqui. Não consegui encontrar nenhuma documentação sobre tombstone e arquivos órfãos, então só posso presumir como funciona com base no que li no fórum. Por favor, corrija-me se eu estiver errado:
Quando um arquivo órfão é identificado (após o período de carência de uploads órfãos), ele é copiado para a pasta tombstone (copy_object).
Em seguida, ele é excluído (ou deveria ser excluído) com delete_object.
Quando chega a hora (dias de carência para purgar uploads excluídos), ele é excluído da pasta tombstone.
Isso está correto?
Com base no que vejo no Backblaze, parece que ele é copiado para a pasta tombstone. Ele simplesmente não é excluído, mas em vez disso, uma versão oculta e vazia é criada.
Então eu entrei em contato com o suporte e parece que há uma solução para o problema de arquivos órfãos. Eis o que o suporte da Backblaze disse:
Há algumas coisas acontecendo aqui. Olhando para sua conta, você tem suas regras de ciclo de vida do bucket definidas como Manter todos os arquivos. Se você alterasse suas regras de ciclo de vida para Manter apenas a última versão do arquivo, o arquivo oculto seria excluído após 24 horas de ocultação, liberando espaço de armazenamento.
Agora, outra camada a ser adicionada aqui é que, ao usar um serviço compatível com S3, sempre que uma exclusão de objeto é chamada, ele será ocultado. E a partir daqui, dependendo das regras de ciclo de vida do bucket, ele será excluído ou permanecerá oculto. No seu caso, os arquivos permanecem ocultos e não estão sendo excluídos devido a Manter TODOS os arquivos.
Para que um objeto seja excluído quando uma exclusão de objeto é chamada, é necessário ter o ID da versão do arquivo com a chamada de exclusão associada, o que acho que a integração não está fazendo se os arquivos estão apenas sendo ocultados.
Para que esses arquivos sejam excluídos do bucket, você precisará fazer login em sua conta Backblaze, ir ao seu bucket e atualizar sua configuração de ciclo de vida para Manter apenas a última versão do arquivo. Isso excluirá o arquivo oculto do bucket após 24 horas.
Por padrão, o Backblaze define a regra de ciclo de vida “Manter todos os arquivos” para buckets recém-criados. É provavelmente por isso que todos têm problemas com arquivos órfãos. Alterar a regra de ciclo de vida para “Manter apenas a última versão do arquivo” exclui arquivos órfãos após 24 horas, uma vez que ele é ocultado.