Desejo usar o AWS S3 CLI para copiar uma estrutura de diretório completa para um bucket do S3.
Até agora, tudo o que tentei copia os arquivos para o bucket, mas a estrutura de diretórios está recolhida. (para dizer de outra maneira, cada arquivo é copiado no diretório raiz do bucket)
O comando que eu uso é:
aws s3 cp --recursive ./logdata/ s3://bucketname/
Eu também tentei deixar de fora a barra à direita na minha designação de origem (ou seja, a cópia do argumento). Também usei um curinga para designar todos os arquivos ... cada coisa que tento simplesmente copia os arquivos de log no diretório raiz do bucket.
amazon-web-services
amazon-s3
agentv
fonte
fonte
aws s3 cp --recursive mylocalsrcdir s3://bucket/
simplesmente colocar os arquivos em seu repositório local no bucket "diretório raiz". Se você o fizeraws s3 cp --recursive mydirectory s3://bucket/mydirectory
, ele recriará a estrutura de diretórios no final do destino.Respostas:
Acredito que a sincronização é o método que você deseja. Tente isso:
fonte
aws s3 sync ./logdata s3://bucketname/logdata
Obrigado pela liderança. --- vEu havia enfrentado esse erro ao usar um desses comandos.
Eu até pensei em montar o bucket S3 localmente e depois executar o rsync, mesmo que tenha falhado (ou travado por algumas horas), pois tenho milhares de arquivos.
Finalmente, o s3cmd funcionou como um encanto.
Isso não apenas funciona bem e mostra uma saída bastante detalhada no console, mas também carrega arquivos grandes em partes.
fonte
O seguinte funcionou para mim:
aws s3 cp ~/this_directory s3://bucketname/this_directory --recursive
A AWS "cria"
this_directory
e copia todo o conteúdo local para ele.fonte
Use o seguinte script para copiar a estrutura de pastas:
fonte
Não consegui obter
s3 sync
ous3 cp
trabalhar em uma pasta de 55 GB com milhares de arquivos e mais de duas dúzias de subdiretórios. Tentar sincronizar a pasta inteira causaria uma falha silenciosa do awscli sem fazer upload de nada para o bucket.Acabamos fazendo isso para sincronizar primeiro todos os subdiretórios e seu conteúdo (a estrutura da pasta é preservada):
Fiz isso para obter os 30.000 arquivos no nível superior:
Observe a carga no servidor (protip que você pode usar
w
para apenas mostrar a carga) ectrl-z
suspenda o comando se a carga ficar muito alta. (fg
para continuar novamente).Colocar isso aqui, caso ajude alguém em uma situação semelhante.
Notas:
-mindepth 1
exclui.
-maxdepth 1
impede a localização de listar o conteúdo dos subdiretórios, poiss3 sync
trata-os com êxito.cut -c 3-
remove o "./" do início de cada resultado da localização.fonte
Como alternativa, você também pode tentar o minio client aka mc
Espero que ajude.
PS: Eu sou um dos colaboradores do projeto.
fonte
(Melhorando a solução de Shishir )
s3Copy.sh
)/PATH/TO/s3Copy.sh /PATH/TO/ROOT/DIR/OF/SOURCE/FILESandDIRS PATH/OF/S3/BUCKET
Por exemplo, se
s3Copy.sh
estiver armazenado no diretório inicial e desejar copiar todos os arquivos e diretórios localizados no diretório atual, execute o seguinte procedimento:~/s3Copy.sh . s3://XXX/myBucket
Você pode facilmente modificar o script para permitir a outros argumentos
s3 cp
, tais como--include
,--exclude
...fonte