Aws-cli: s3 sync - excluir não excluir pastas vazias

Criado em 28 jun. 2017  ·  37Comentários  ·  Fonte: aws/aws-cli

Acompanhamento até # 2533

Estamos usando o aws-cli no OS X para sincronizar o balde com a pasta local. Portanto, se houver um arquivo dentro da pasta, ele será sincronizado corretamente. O problema é quando o arquivo é excluído - a pasta vazia permanece localmente, o que com o tempo pode resultar em muitas pastas vazias.

aws s3 sync --delete s3://bucket/folder .

feature-request

Comentários muito úteis

É bastante ridículo que esse recurso básico não tenha sido implementado até hoje. Especialmente para clientes pagantes.

Todos 37 comentários

Marcando como uma solicitação de recurso.

+1

+1

+1

+1

Também estou experimentando isso ao executar o comando AWS no CentOS.

Temos um balde S3 que contém backups de banco de dados diários. Estamos usando o gerenciamento de ciclo de vida S3 no balde para expirar cada pasta de backup diário após 7 dias.

Temos então um servidor CentOS no GCP que sincroniza periodicamente o intervalo usando o seguinte comando ...

aws s3 sync s3://bucket-name /backups/s3/bucket-name --delete

Os arquivos de backup de banco de dados individuais estão sendo excluídos, mas as pastas diárias permanecem ...

# du -h --max-depth=1
0       ./2017-10-10_2300
0       ./2017-10-11_2300
0       ./2017-10-12_2300
0       ./2017-10-13_2300
0       ./2017-10-14_2300
0       ./2017-10-15_2300
0       ./2017-10-16_2300
0       ./2017-10-17_2300
0       ./2017-10-18_2300
0       ./2017-10-19_2300
0       ./2017-10-20_2300
0       ./2017-10-21_2300
0       ./2017-10-22_2300
0       ./2017-10-23_2300
0       ./2017-10-24_2300
0       ./2017-10-25_2300
5.6G    ./2017-10-26_2300
5.6G    ./2017-10-27_2300
5.6G    ./2017-10-28_2300
5.6G    ./2017-10-29_2300
5.6G    ./2017-10-30_2300
5.6G    ./2017-10-31_2300
5.5G    ./2017-11-01_2300
39G     .

Essas pastas não existem mais no S3 ....

[root<strong i="14">@backups</strong> ~]# aws s3 ls bucket-name/mysql-backups/
                           PRE 2017-10-26_2300/
                           PRE 2017-10-27_2300/
                           PRE 2017-10-28_2300/
                           PRE 2017-10-29_2300/
                           PRE 2017-10-30_2300/
                           PRE 2017-10-31_2300/
                           PRE 2017-11-01_2300/

Eu esperaria sync --delete para excluir as pastas também.

+1

+1

+1

+1

+1

Bom Dia!

Estamos encerrando esse problema aqui no GitHub, como parte de nossa migração para o UserVoice para solicitações de recursos envolvendo o AWS CLI.

Isso nos permitirá fornecer os recursos mais importantes para você, tornando mais fácil pesquisar e mostrar suporte para os recursos que você mais gosta, sem diluir a conversa com relatórios de bug.

Como uma cartilha rápida do UserVoice (se ainda não for familiar): depois que uma ideia é postada, as pessoas podem votar nas ideias e a equipe de produto responderá diretamente às sugestões mais populares.

Importamos solicitações de recursos existentes do GitHub - procure por esse problema lá!

E não se preocupe, esse problema ainda existirá no GitHub para o bem da posteridade. Como é uma importação somente de texto da postagem original para o UserVoice, ainda teremos em mente os comentários e a discussão que já existem aqui sobre o problema do GitHub.

O GitHub continuará sendo o canal para relatar bugs.

Mais uma vez, esse problema agora pode ser encontrado pesquisando o título em: https://aws.uservoice.com/forums/598381-aws-command-line-interface

- A equipe de SDKs e ferramentas da AWS

Esta entrada pode ser encontrada especificamente no UserVoice em: https://aws.uservoice.com/forums/598381-aws-command-line-interface/suggestions/33168367-s3-sync-delete-not-deleting-empty-folders

Com base no feedback da comunidade, decidimos retornar as solicitações de recursos para os problemas do GitHub.

+1

+1

+1

+1

+1

+1

+1

+1
E, como uma observação rápida para qualquer pessoa que esteja procurando uma solução alternativa rápida, o seguinte excluirá todas as pastas vazias como uma etapa de limpeza:
find . -type d -empty -delete

+1

Definitivamente +1

O inverso também é verdadeiro: aws s3 sync --delete. s3: // balde / pasta
Ao sincronizar de um sistema de arquivos local para o S3, todas as pastas excluídas localmente NÃO são excluídas do S3 como seria de se esperar.

+1

Espero que esta solicitação de recurso seja considerada.

aws s3 sync --delete . s3://bucket

Para o comando acima, não faz sentido deixar "pastas" vazias no balde s3 se vamos seguir o que a definição de sincronização de aws significa. Olhando para a descrição do aws sync cli, ele diz:

Sincroniza diretórios e prefixos S3. Copia recursivamente os arquivos novos e atualizados do diretório de origem para o destino. Só cria pastas no destino se elas contiverem um ou mais arquivos.

Acho que a inconsistência está no que essa linha realmente significa "Sincroniza diretórios e prefixos S3.".
Para mim, eu esperaria que a pasta no S3 fosse excluída se nenhum arquivo nessa pasta existir no diretório local.

É bastante ridículo que esse recurso básico não tenha sido implementado até hoje. Especialmente para clientes pagantes.

É bastante ridículo que esse recurso básico não tenha sido implementado até hoje. Especialmente para clientes pagantes.

Eu não poderia concordar mais!

+1

Também estou encontrando esse bug.
Este não é um pedido de recurso. É claramente um bug.

Minha situação:

  1. Excluir diretório local: dist/test/
  2. Execute aws s3 sync dist s3://bucket-name/ --acl public-read --delete

Resultado esperado:

  • O diretório test deve ser excluído do balde

Resultado observado:

  • O diretório test ainda existe no depósito como um diretório vazio. Todos os arquivos que ele continha anteriormente foram excluídos.

+1

+1

+1

FWIW, o mesmo acontece com aws s3 mv /local/path/ s3://uri/

/local/path conterá diretórios vazios após a conclusão.

+1

Por favor, faça algo sobre isso. Ter que fazer um script de exclusão de pastas vazias é uma tolice de IMO.

+1

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