Fazendo backup de dados armazenados no Amazon S3

16

Eu tenho uma instância do EC2 executando um servidor Web que armazena os arquivos enviados pelos usuários no S3. Os arquivos são gravados uma vez e nunca mudam, mas são recuperados ocasionalmente pelos usuários. Provavelmente, acumularemos algo em torno de 200 a 500 GB de dados por ano. Gostaríamos de garantir que esses dados sejam seguros, principalmente contra exclusões acidentais e que possamos restaurar arquivos que foram excluídos, independentemente do motivo.

Eu li sobre o recurso de versão dos buckets do S3, mas não consigo descobrir se é possível recuperar arquivos sem histórico de modificações. Consulte os documentos da AWS aqui sobre controle de versão:

http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectVersioning.html

Nesses exemplos, eles não mostram o cenário em que os dados são carregados, mas nunca modificados e, em seguida, excluídos. Os arquivos excluídos nesse cenário são recuperáveis?

Então, pensamos que poderíamos simplesmente fazer backup dos arquivos S3 no Glacier usando o gerenciamento do ciclo de vida do objeto:

http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html

Mas parece que isso não funcionará para nós, pois o objeto de arquivo não é copiado para o Glacier, mas movido para o Glacier (com mais precisão, parece que é um atributo do objeto que foi alterado, mas de qualquer maneira ...).

Portanto, parece que não há uma maneira direta de fazer o backup dos dados do S3, e a transferência dos dados do S3 para os servidores locais pode consumir muito tempo e incorrer em custos de transferência significativos ao longo do tempo.

Por fim, pensamos em criar um novo depósito todos os meses para servir como backup completo mensal e copiar os dados do depósito original para o novo no dia 1. Em seguida, usar algo como duplicidade ( http://duplicity.nongnu.org/ ) sincronizamos o intervalo de backup todas as noites. No final do mês, colocaríamos o conteúdo do depósito de backup no armazenamento do Glacier e criaríamos um novo depósito de backup usando uma nova cópia atual do depósito original ... e repetiríamos esse processo. Parece que isso funcionaria e minimizaria os custos de armazenamento / transferência, mas não tenho certeza se a duplicidade permite transferências de balde para balde diretamente sem trazer primeiro os dados para o cliente de controle.

Então, acho que há algumas perguntas aqui. Primeiro, o versionamento do S3 permite a recuperação de arquivos que nunca foram modificados? Existe alguma maneira de "copiar" arquivos do S3 para o Glacier que eu perdi? A duplicidade ou qualquer outra ferramenta pode transferir arquivos entre os buckets do S3 diretamente para evitar custos de transferência? Finalmente, estou muito errado em minha abordagem de backup de dados S3?

Agradecemos antecipadamente por qualquer insight que você possa fornecer!

Atualizar

A Amazon anunciou recentemente que o controle de versão agora funciona com regras de ciclo de vida

Fiver
fonte
aws.amazon.com/blogs/aws/archive-s3-to-glacier/... + não é agradável curta youtube vídeo na parte inferior explicando s3 a geleira
equivalent8

Respostas:

10

Eu li sobre o recurso de controle de versão dos buckets S3, mas não consigo descobrir se a recuperação é possível para arquivos sem histórico de modificações. Consulte os documentos da AWS aqui em> versionamento:

Eu apenas tentei isso. Sim, você pode restaurar a partir da versão original. Quando você exclui o arquivo, ele cria um marcador de exclusão e você pode restaurar a versão anterior, ou seja: a única revisão.

Então, pensamos que poderíamos apenas fazer backup dos arquivos S3 no Glacier usando o gerenciamento do ciclo de vida do objeto:

Mas, parece que isso não funcionará para nós, pois o objeto de arquivo não é copiado para o Glacier, mas movido para o Glacier (mais precisamente, parece que é um atributo do objeto que foi alterado, mas, de qualquer maneira ...).

A geleira é realmente destinada ao armazenamento de longo prazo, que é acessado com pouca frequência. Também pode ser muito caro recuperar uma grande parte de seus dados de uma só vez, pois não se destina à restauração pontual de muitos dados (porcentagem).

Por fim, pensamos em criar um novo depósito todos os meses para servir como backup completo mensal e copiar os dados do depósito original para o novo no dia 1. Em seguida, usar algo como duplicidade ( http: //duplicity.nongnu. org / ) sincronizamos o balde de backup todas as noites.

Não faça isso, você pode ter apenas 100 buckets por conta; portanto, em três anos, você terá um terço de seu limite de buckets apenas com backups.

Então, acho que há algumas perguntas aqui. Primeiro, o versionamento do S3 permite a recuperação de arquivos que nunca foram modificados?

sim

Existe alguma maneira de "copiar" arquivos do S3 para o Glacier que eu perdi?

Não que eu saiba

Sirex
fonte
Obrigado Sirex, um esclarecimento: pretendemos manter apenas um depósito de backup por vez (o mês atual) e arquivar o backup do último mês no Glacier e, em seguida, excluir as cópias do Glacier em alguma política geral de retenção (a cada mês durante 3 meses) trimestralmente por um ano). Você acha que isso é possível ou há alguma outra limitação da AWS que impede essa estratégia?
Fiver 12/11/13
hmm, acho que é razoável. Eu não tentei que com raiva embora (ou geleira para que o assunto, usamos Sydney e não estava disponível quando olhamos para ele)
Sirex
3

Eu não gosto de ter s3 montado, porque é lento e pode travar e funciona como NFS da velha escola. melhor apenas para cima / baixo, conforme necessário.

http://s3tools.org/s3cmd

é fácil de escrever ... não esqueça o arquivo ~ / .s3cfg

nandoP
fonte
Uau, isso parece legal!
JakeGould
@nandoP +1 Eu tinha pensado em usar o s3cmd e rolando minha própria
Fiver
1

Parece que você pode precisar do S3FS, que basicamente monta seus buckets S3 como se fossem sistemas de arquivos locais:

http://code.google.com/p/s3fs/wiki/FuseOverAmazon

Prefiro usar esta versão bifurcada, pois ela mantém a mesma estrutura de pastas que é criada no painel de controle da web para o Amazon S3:

https://github.com/tongwang/s3fs-c

Depois, tenho alguns scripts de shell que basicamente usam rsyncpara sincronizar os dados com minhas configurações locais.

Em geral, acho que o S3FS funciona melhor para ler o conteúdo colocado nos buckets do Amazon S3. Escrever não é tão consistente. Mas, com o objetivo de fazer backup de buckets S3, o garfo Tony Wang do S3FS funciona muito bem.

JakeGould
fonte
11
Isso parece útil. Ele é transferido diretamente entre os buckets, sem fazer o download para o cliente?
Fiver 7/07/13
Possivelmente sim. Eu o uso principalmente para montar em um servidor local e fazer backup em nossas máquinas locais. Mas como ele possui capacidade de gravação, eu não recomendaria usá-lo como um "intervalo" para embaralhar dados entre os buckets. Basicamente, em uma máquina intermediária, monte um balde em um ponto de montagem. Em seguida, monte o outro balde como outro ponto de montagem. E então apenas faça um rsync. Mas, como eu disse, os horários / datas das modificações podem ser estranhos no Amazon S3, pois não é realmente um sistema de arquivos. Mas experimente.
precisa saber é o seguinte