Qual é uma maneira prática de espelhar um bucket do Amazon S3?

9

Quero espelhar meus buckets do Amazon S3. Quero fazer isso porque 1) não quero que todos os meus dados existam apenas com um provedor; e 2) em caso de erro de software ou violação de segurança, desejo fazer o backup dos dados.

Posso espelhar para um disco local com a função s3cmd sync, mas isso não é dimensionável para buckets muito grandes e não é útil para restaurações rápidas de backup. Prefiro que meus dados sejam espelhados para um concorrente como o Rackspace Cloud Files.

Alguém tem algumas sugestões de uma maneira simples e robusta para facilitar esse tipo de espelhamento de maneira automatizada em uma caixa Linux?

Ben
fonte
Estou correto ao supor que nenhuma das respostas realmente resolve "1) não quero que todos os meus dados existam apenas com um provedor", porque todos eles apenas espelham baldes no mesmo provedor?
23418 Chris

Respostas:

6

Você pode usar o utilitário " s3cmd " com a opção "sync", embora eu tenha tropeçado na sua pergunta porque estou tentando descobrir se esse mecanismo de sincronização está estragando meus backups de duplicidade.

jberryman
fonte
esta é realmente a melhor solução que eu encontrei s3tools.org/s3cmd-sync
John Bachir
5

Eu estava tendo o mesmo problema, então criei um pequeno programa projetado especificamente para espelhar um bucket S3 para outro; Eu chamo isso de s3s3mirror.

Tentei primeiro a abordagem "s3cmd sync", mas tinha um balde com centenas de milhares de objetos e a "s3cmd sync" estava lá, sem fazer nada além de consumir mais e mais memória até a morte do sistema. Projetei o s3s3mirror para começar imediatamente, usar 100 threads simultâneos (configuráveis) e fazer uso modesto da CPU e da memória. Se eu digo, é muito rápido.

Disponibilizei isso no github sob uma licença Apache. Se você decidir fazer um giro, informe-me o que pensa e se há algo que possa ser melhorado.

Aqui está o link: https://github.com/cobbzilla/s3s3mirror

obrigado!

  • Jonathan.
cobbzilla
fonte
Obrigado pelo seu trabalho, eu fiz um contêiner do docker executável com isso e já o uso na produção: github.com/pmoust/s3s3mirror-docker
Panagiotis Moustafellos
4

A Amazon agora tem uma ferramenta suportada para fazer isso, o aws cli .

Pode espelhar em qualquer direção entre local e remoto ou entre dois locais s3.

Infelizmente, ele não tem suporte direto para locais não S3, como rackspace, mas achei que essa seria uma resposta útil para alguns que encontrarem essa pergunta. Como eu, antes de encontrá-lo.

Em particular,

aws s3 sync s3://some/s3/path /some/local/path
Dan Pritts
fonte
2

Confira o Jungle Disk Server . Ele funciona com o Amazon S3 e o Rackspace Cloud Files. Você pode montar o S3 e o CF em locais diferentes no seu sistema de arquivos e depois usar o rsync entre os dois.

Alan Ivey
fonte
Obrigado, mas eu deveria ter mencionado que estou procurando uma solução que possa ser executada como um trabalho cron em uma caixa Linux. Eu atualizei a pergunta.
Ben
2

Você pode tentar montar os baldes com fusível usando s3fs . Feito isso, você pode sincronizar novamente do ponto de montagem para o disco local.

crescer
fonte
1
+1 para s3fs, acabei de enviar um patch para suportar arquivos com tamanho de até 5 TB.
ben lemasurier
1

Você pode configurar o servidor Minio , código aberto e API compatível com S3. Você pode configurá-lo no EC2 ou em qualquer provedor de nuvem como seu servidor alternativo e, usando o comando Minio clients, mc mirror espelhe o S3 periodicamente. Você pode automatizar a mesma gravação de um script cron simples.

Espero que ajude. Disclaimer: Trabalho para Minio

koolhead17
fonte
1

Para sincronização online de buckets, você pode usar a replicação entre regiões. Dessa forma, todas as atualizações do bloco original serão sincronizadas automaticamente com o bloco S3 em outra região: https://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html

Lembre-se de que ele requer a versão ativada para o bucket, portanto, se você fizer atualizações / exclusões de objetos nos buckets, precisará ativar a política do ciclo de vida para excluir objetos antigos.

timurb
fonte
Foi isso que escolhemos usar, mas observe que replicação não é a mesma coisa que espelhamento. A grande diferença é que as exclusões não são propagadas entre a origem e o destino (o destino atualizará os arquivos que mudam, mas parece nunca removê-los).
Scott Gartner