Eu tenho que copiar 400G de arquivos de um volume de armazenamento de bloco elástico para um balde s3 ... Esses são cerca de 300k arquivos de ~ 1Mb
Eu tentei s3cmd e s3fuse , os dois são muito, muito lentos. S3cmd correu por um dia inteiro, disse que terminou de copiar e, quando chequei o balde, nada havia acontecido (suponho que algo desse errado, mas pelo menos s3cmd nunca reclamou de nada)
O S3Fuse está trabalhando por mais um dia completo e copiou menos de 10% dos arquivos ...
Existe uma solução melhor para isso?
Estou executando o Linux (ubuntu 12.04) é claro
Respostas:
Existem vários fatores principais que determinam a taxa de transferência de EC2 para S3:
Nos casos de transferência de grandes quantidades de dados, pode ser economicamente prático usar uma instância de computação de cluster, pois o ganho efetivo na taxa de transferência (> 10x) é mais do que a diferença no custo (2-3x).
Embora as idéias acima sejam bastante lógicas (embora o limite por segmento possa não ser), é bastante fácil encontrar referências que as apoiem. Um particularmente detalhado pode ser encontrado aqui .
Usar entre 64 e 128 uploads paralelos (simultâneos) de objetos de 1 MB deve saturar o uplink de 1 Gbps que um m1.xlarge possui e deve saturar o uplink de 10 Gbps de uma instância de computação em cluster (cc1.4xlarge).
Embora seja bastante fácil alterar o tamanho da instância, os outros dois fatores podem ser mais difíceis de gerenciar.
fonte
Então, depois de muitos testes, o s3-parallel-put fez o truque de maneira impressionante. Claramente a solução se você precisar enviar muitos arquivos para o S3. Obrigado a cyberx86 pelos comentários.
fonte
Ajuste os valores de configuração do AWS CLI S3 conforme http://docs.aws.amazon.com/cli/latest/topic/s3-config.html .
A seguir, aumentamos a velocidade de sincronização do S3 em pelo menos 8x!
Exemplo:
fonte
Eu escrevi um aplicativo de console otimizado em C # ( CopyFasterToS3 ) para fazer isso. Eu usei no EBS vol. No meu caso, ele tinha 5 pastas com mais de 2 milhões de arquivos em uma quantidade de 20Gb. O script executado em menos de 30 minutos.
Em este artigo i mostrou como usar uma função recursiva com paralelo. Você pode transcrevê-lo para outro idioma.
Boa sorte!
fonte
Há também: s3funnel , que parece muito antigo (2008) e alguns bugs abertos, mas ainda está listado na própria Amazon: amzn-lnk
fonte
Experimente o s4cmd, é muito mais rápido que o s3cmd. Seu endereço: https://github.com/bloomreach/s4cmd
fonte
Tente usar s3-cli em vez de s3cmd. Usei-o em vez do s3cmd para fazer upload de arquivos para o meu bucket s3 e agilizou minha implantação quase 17 minutos (de 21 a 4 minutos)!
Aqui está o link: https://github.com/andrewrk/node-s3-cli
fonte