Aws-cli: Adicione a opção --no-overwrite ao aws s3 cp/mv

Criado em 6 out. 2017  ·  43Comentários  ·  Fonte: aws/aws-cli

Seria bom ter uma função de conveniência --no-overwrite para comandos aws s3 cp/mv , que verificaria se o destino de destino ainda não existe antes de colocar um arquivo em um bucket s3.

É claro que essa lógica não pode ser garantida pela API da AWS (afaik...) e é vulnerável a condições de corrida, etc. Mas seria útil evitar erros não intencionais!

feature-request s3

Comentários muito úteis

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

Todos 43 comentários

Marcando como uma solicitação de recurso. A parte complicada se fizermos isso em cp ou mv é que a CLI pode ter que consultar o S3 para ver se o arquivo existe antes de tentar carregá-lo. Portanto, pode fazer mais sentido adicioná-lo a sync , pois já faz isso.

Eu gostaria de ver isso em cp e/ou mv também.

A razão pela qual eu não uso sync para isso agora é que sync tem grandes problemas de desempenho se o bucket de destino tiver muitos arquivos existentes no diretório de destino.

Quando você executa aws s3 cp --recursive newdir s3://bucket/parentdir/ , ele apenas visita cada um dos arquivos que está realmente copiando.

Quando você executa aws s3 sync newdir s3://bucket/parentdir/ , ele visita os arquivos que está copiando, mas também percorre toda a lista de arquivos em s3://bucket/parentdir (que já pode conter milhares ou milhões de arquivos) e obtém metadados para cada arquivo existente .

Em um bucket de destino suficientemente grande, aws s3 cp --recursive pode levar segundos e aws s3 sync pode levar horas para copiar os mesmos dados.

Obviamente, corrigir sync seria bom, mas se adicionar uma consulta "verificar se o arquivo já existe" a cp é um problema mais tratável do que reformular o código sync para torná-lo rápido, pode fazer sentido fazer isso em vez disso.

Eu também estou muito interessado neste recurso. Um prompt interativo opcional para sobrescrever arquivos também seria bom ter.

sim @sgrimm-sg, faz sentido. Também estou interessado em ver o comando CLI cp que pode realmente lidar com essas condições.

Seria extremamente útil que isso fosse uma opção em aws s3 sync . rsync tem esta funcionalidade disponível como --ignore-existing . Minha preferência seria tentar usar os mesmos nomes de opções que rsync , pois suspeito que muitas pessoas já estão familiarizadas com rsync .

Bom Dia!

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

Isso nos permitirá obter os recursos mais importantes para você, facilitando a pesquisa e a exibição de suporte para os recursos mais importantes para você, sem diluir a conversa com relatórios de bugs.

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

Importamos solicitações de recursos existentes do GitHub - Pesquise 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 discussões que já existem aqui no problema do GitHub.

O GitHub continuará sendo o canal para relatar bugs.

Mais uma vez, esse problema 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

Essa entrada pode ser encontrada especificamente no UserVoice em: https://aws.uservoice.com/forums/598381-aws-command-line-interface/suggestions/33168406-add-no-overwrite-option-to-aws-s3- cp-mv

Relacionado:

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

@jamesls que ótimo! você pode por favor responder à sugestão em mãos? --no-overwrite seria uma ótima adição e evitará envolver as chamadas com scripts

+1 para este problema. Proponho -n, --no-clobber para corresponder às opções de comando cp existentes do Linux.

Houve alguma implementação deste pedido? Tentando trabalhar com arquivos em lote do Windows para fazer backup local> S3, esse é o método mais fácil, um simples sem substituição ou sinalizador semelhante.

Alguma atualização sobre esse recurso?

Alguma atualização sobre esse recurso? Obrigado

Alguma atualização sobre esse recurso?

Alguma atualização sobre esse recurso?

sev3, +1

Realmente preciso desse recurso adicionado, pois a sincronização do S3 parece não carregar todos os arquivos.

Alguma atualização ou solução?

Alguma atualização ou solução?

Eu tive que escrever um script python para carregar todos os itens do bucket em uma matriz (lista), carregar todos os itens do diretório que quero sincronizar, comparar as matrizes e fazer upload dos itens locais que não estão na matriz S3 .

Eu tive que escrever um script python para carregar todos os itens do bucket em uma matriz (lista), carregar todos os itens do diretório que quero sincronizar, comparar as matrizes e fazer upload dos itens locais que não estão na matriz S3 .

@southpaw5271 - gostaria de compartilhar seu script e me poupar algum tempo? ; )

Eu tive que escrever um script python para carregar todos os itens do bucket em uma matriz (lista), carregar todos os itens do diretório que quero sincronizar, comparar as matrizes e fazer upload dos itens locais que não estão na matriz S3 .

@southpaw5271 - gostaria de compartilhar seu script e me poupar algum tempo? ; )

Parece que não tenho mais :( Desculpe!

Este sinalizador também seria valioso para o comando cp , pois sync não permite copiar um arquivo enquanto altera o nome de destino.

aws s3 cp --no-overwrite ./somefile s3://bucket/othername

Também precisamos da opção --no-overwrite de s3 para local. Fomos queimados por substituições acidentais de indivíduos bem-intencionados, e essa seria uma maneira muito apreciada de colocar um "guarda-corpo" para eles. Obrigado!

Qualquer atualização?

Alguma atualização sobre esse recurso? Obrigado

+1

+1

Estou migrando arquivos do sistema antigo. Eu tenho um script python que gera caminhos diferentes de acordo com as colunas db (ou seja, cada organização agora tem sua própria pasta em um bucket específico), então não posso confiar no comando sync. Eu poderia executar um script para fazer migrações parciais se um -skip-duplicate ou algum tipo de parâmetro estivesse disponível.

+1

Isso é muito necessário. Por que ainda não está lá?

+1

+10

Alguma atualização sobre esse recurso? Obrigado

Também votando para este recurso, por favor!

+1

+1

+1

++1

alguma atualização sobre isso?

+1

Eu não posso acreditar que ainda não é uma coisa. É quase impossível criar um armazenamento imutável no S3 :(

Iniciamos os dados copiados do bucket do S3 para a montagem linux local e o tamanho no destino é ~40 GB menor que o bucket do S3. Encontre maneiras de copiar apenas o que está faltando. Parece que não há uma maneira fácil de fazer isso em vez de copiar tudo.

Uma opção de aws s3 sync que pode realizar algo semelhante é o sinalizador booleano --size-only , que substituirá no destino somente se o tamanho for diferente entre a origem e o objeto de destino,

 --size-only (boolean) Makes the size of each key the only criteria used
       to decide whether to sync from source to destination.

O comando que usei,

aws s3 sync s3://<source bucket> s3://<destination bucket> --size-only 

_Importante_: Sugiro fortemente executar o comando acima com o sinalizador booleano --dry-run primeiro, para ver o que este comando pretende fazer antes de realmente executá-lo, especialmente se envolver seus sistemas de produção. Isso é uma abundância de cautela.

não me ajuda, esperando o #5456 ser endereçado pelo DH

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