Usando aws cli sync incluir e excluir com opção de exclusão

Usando aws cli sync incluir e excluir com opção de exclusão
aws s3 sync /WordProcessing/DOCUMENTS s3://mybigbucket --delete --include "*" --exclude ".DS_Store"

Se de alguma forma .DS_Store chegou ao AWS S3 mybigbucket (de um backup anterior), o uso do comando acima não exclui os arquivos .DS_Store do destino, mesmo que eu manualmente:

rm /WordProcessing/DOCUMENTS/.DS_Store

no servidor de arquivos.

Estou perdendo a lógica de como funciona o aws s3 sync? Parece-me que deveria excluir o .DS_Store do destino no bucket S3 se ele tiver sido removido da origem no servidor de arquivos.

Se eu retirar --exclude e executar o comando novamente, ele excluirá .DS_Store do destino quando for removido do servidor de arquivos. Isso não parece certo.

Estou adotando a abordagem errada? O que eu quero fazer é sincronizar todas as noites o servidor de arquivos e fazer com que ele não transfira para o bucket S3 os milhares de arquivos .DS_Store.

Responder1

Parece que você alterou seus parâmetros após a primeira sincronização.

Quando você usa, --excludeele exclui todos os arquivos ou objetos do comando que correspondem ao padrão especificado. Se corresponder, irá ignorar quaisquer ações para esse padrão.

Se o arquivo (.DS_Store) já estiver localizado no bucket s3 e a --excludeopção corresponder a ele, ele será ignorado. Se foi alterado ou desapareceu da fonte de dados.

Você pode fazer:

  1. Use --exclude na primeira e em todas as sincronizações subsequentes (isso mantém o arquivo fora do s3 no início)
  2. Exclua o arquivo do host local primeiro, sincronize e depois coloque a exclusão (isso removerá o arquivo se estiver em s3 e impedirá que ele seja adicionado)
  3. Coloque --exclude e exclua manualmente o arquivo do s3 (isso evitará que o arquivo seja adicionado novamente ao s3)

Referência

AWS cli - sincronização

informação relacionada