Como faço backup de um bucket da AWS S3 sem versionar o bucket de origem [fechado]

43

Existe alguma maneira de se recuperar de exclusões acidentais de um Amazon S3 Bucket?

Temos informações críticas em nossos buckets e preciso reduzir o risco de exclusões acidentais ou maliciosas do próprio bucket.

Eu sei que posso sincronizar todo o bucket localmente, mas isso não é muito prático se o tamanho do meu bucket for 100 GB.

Alguma idéia sobre estratégias de backup?

anon
fonte
Aqui está um guia de estratégia de backup S3 escrevi: eladnava.com/backing-up-your-amazon-s3-buckets-to-ec2
Elad Nava

Respostas:

23

Outra abordagem é habilitar a versão S3 no seu bucket. Você pode restaurar os arquivos excluídos etc. Consulte a documentação do S3 para saber como habilitar este

O uso de ferramentas de terceiros como o BucketExplorer torna o trabalho com versionamento bastante trivial (em vez de chamar a API diretamente).

Você também pode ativar a exclusão de autenticação multifator para seus buckets S3 - o que dificulta um pouco a "exclusão acidental";)

Mais informações sobre autenticação multifator Excluir
mais informações sobre exclusão de objetos

snarkyboojum
fonte
2
A questão é conseguir isso sem controle de versão.
Anuruddha 10/01
13

Você poderia usar o s3cmd http://s3tools.org/s3cmd

Então, para fazer backup de um balde chamado mybucket

s3cmd mb s3://mybucket_backup
s3cmd --recursive cp s3://mybucket s3://mybucket_backup
Ian Purton
fonte
3
Existe uma maneira mais rápida de fazer isso? Se houver n chaves no intervalo, há pelo menos n solicitações de cópia e algumas para listagem (e provavelmente verificando os resultados). Isso pode demorar um pouco para baldes grandes.
Kariem
1
Você poderia detalhar a operação de backup quando o mybucket estiver corrompido e precisar restaurar o mybucket_backup?
Augustin Riedinger
7

Essa não é uma solução barata, mas se seus buckets forem realmente críticos, veja como você faz isso: inicialize uma instância do Amazon EC2 e sincronize o conteúdo periodicamente.

O Amazon EC2 é seu provedor de hospedagem de virtualização. Você pode criar instâncias do Linux, Windows, etc e executar o que quiser. Você paga por hora e obtém um espaço de armazenamento bastante grande localmente para esse servidor. Por exemplo, eu uso a instância de tamanho "grande", que vem com 850 GB de espaço em disco local.

O legal é que ele está na mesma rede do S3 e você obtém transferências ilimitadas entre o S3 e o EC2. Uso o software Jungle Disk de US $ 20 em uma instância do Windows EC2, que permite acessar meus buckets S3 como se fossem pastas de disco local. Em seguida, posso fazer arquivos em lote agendados para copiar coisas do S3 e no espaço em disco do EC2 local. Você pode automatizá-lo para manter backups de hora em hora, se quiser, ou se quiser jogar, configure o JungleDisk (ou seus equivalentes Linux) para sincronizar uma vez por hora. Se alguém excluir um arquivo, você terá pelo menos alguns minutos para recuperá-lo do EC2. No entanto, eu recomendaria os backups regulares com script - é fácil manter alguns dias de backup se você os estiver compactando em um volume de 850 GB.

Isso é realmente útil para o envio de logs do SQL Server, mas também posso ver como ele alcançaria seu objetivo.

Brent Ozar
fonte
Eu acho que você poderia usar uma micro instância e adicionar o EBS (Elastic Block Storage) conforme necessário. Pode ser uma opção mais barata.
Shawn Vader
Na verdade, você não deveria, porque a largura de banda dedicada de e para o S3 depende do tamanho da instância do EC2. Se você deseja grande taxa de transferência, precisa de uma instância grande (= $$$$). Meu ex-empregador descobriu isso da maneira mais difícil.
John Cowan
6

Uma solução possível poderia ser apenas criar um "depósito de backup" e duplicar suas informações confidenciais. Em teoria, seus dados são mais seguros no S3 do que no disco rígido.

Além disso, não tenho certeza se as exclusões acidentais são um problema real, pois você precisará excluir acidentalmente todas as chaves do seu balde antes de poder excluí-lo.

ENTALHE
fonte
+1, pois seria muito difícil excluir "acidentalmente" tudo em um depósito e, em seguida, excluir também o depósito.
10
se você estiver usando uma ferramenta como s3cmd, ele não é mais difícil é que é para eliminar uma árvore de diretórios inteiro comrm -rf
jberryman
E o Amazon Glacier? É uma opção?
Tony
6

Outra solução possível é replicar seu bucket para a zona da Europa no S3. Isso pode persistir no intervalo após a exclusão acidental por tempo suficiente para se recuperar.

shawnswaner
fonte
1
A replicação de bucket é uma ótima opção. Para uma camada extra de proteção, use a replicação entre contas para garantir que qualquer violação da conta de origem não resulte em perda de dados.
Gareth Oakley #
6

Modificar um pouco a resposta (excelente) de Brent; você não precisa manter a instância em execução. Crie uma AMI do EC2 que abaixa seus dados, sincroniza-os com um volume EBS, captura instantâneos desse volume e desliga-se.

Você também pode manter o volume em execução sozinho, mas a captura de imagem deve ser suficiente para um backup. Se a sua AMI personalizada fizer tudo isso (incluindo o desligamento após a conclusão) sem interação, o script 'backup' precisará apenas 'ec2run -n 1 -t m1.small ami-' e disparar e esquecer.

Andrew Lusk
fonte
Eu gosto dessa idéia de que outros, essa é uma solução mais razoável e mais barata.
BMW