Restaure um bucket do S3 com versão para um determinado ponto no tempo

13

Digamos que eu tenha o controle de versão S3 ativado para meu grupo: link

Então, digamos que alguém (por exemplo, funcionário júnior) bagunça o balde S3 (apaga alguns arquivos acidentalmente, etc.)

Como posso restaurar o intervalo de versão inteiro para um determinado ponto no tempo? Eu acredito que isso deveria ser possível, dada a API do S3, mas eu prefiro não ter que escrever um roteiro como esse por medo de perder alguma coisa (eu não sou um especialista da AWS).

Existem boas soluções para este problema? Estou usando o bucket do S3 como um repositório de imagens para o meu aplicativo Rails, então algo baseado em Ruby que eu poderia usar como uma tarefa de rake seria ideal.

    
por elsurudo 17.04.2014 / 14:02

3 respostas

14

Você pode usar s3-pit-restore

S3 Restauração point-in-time é uma ferramenta que você pode usar exatamente para restaurar um bucket ou um subconjunto de um bucket para um determinado ponto no tempo, assim:

s3-pit-restore --bucket my-bucket --dest my-restored-bucket --timestamp "06-17-2016 23:59:50 +2"

O que o s3-pit-restore realmente oferece:

  • Restauração de todos os arquivos com registro de data e hora menor que o fornecido
  • Restaurar um intervalo inteiro ou um prefixo de intervalo
  • Download paralelo de vários arquivos com uma excelente velocidade geral
  • A personalização de trabalhadores paralelos conta para otimizar o uso da largura de banda
  • Restaurar a partir de versões do bucket s3 ou do glacier, se ativado
por 11.10.2016 / 15:52
2

Se eu entendi a documentação corretamente, quando você tiver o controle de versão ativado, exclua o arquivo simplesmente reverte a versão "mais recente" de volta um número de versão. No entanto, isso não não permite restaurar um depósito inteiro. Isso faz com que as versões anteriores do S3 não sejam adequadas às suas necessidades (por exemplo, recuperação da exclusão).

Mantenha um backup em outro lugar também, apenas por precaução. Stack Overflow tem uma pergunta / resposta sobre isso usando s3cmd . Tenho certeza que você poderia encontrar um script baseado em Ruby em algum lugar ou pedir ajuda nesse site se precisar.

    
por 17.04.2014 / 14:08
2

Aqui está um prático pequeno script PHP que usei para restaurar meu bucket de um repositório de backup com controle de versão:

Para voltar a executar um balde com o controle de versão ativado

#CONFIGURATION
export bucket_to_backup='example-of-a-bucket-name';
export backup_bucket='example-of-a-backup-bucket-name'; 
export AWS_ACCESS_KEY_ID=ASDFDSAFADSFDASF;
export AWS_SECRET_ACCESS_KEY=adsfdsaf86adsf5adsf568aadf75ads;
#you will need to download and install the s3cmd tool at the following url:
#http://s3tools.org/
s3cmd --access_key=$AWS_ACCESS_KEY_ID --secret_key=$AWS_SECRET_ACCESS_KEY --recursive sync s3://$bucket_to_backup s3://$backup_bucket;

restaure o backup de arquivos que foram versionados entre esses dois timestamps

export startSnapShotTimeStamp=1427577934;
export endSnapShotTimeStamp=1427577939;
#do the restore with php script
php awsUtil.php sync example-of-a-backup-bucket-name example-of-a-bucket-name $startSnapShotTimeStamp-$endSnapShotTimeStamp

você pode baixar o script PHP aqui: link

    
por 29.03.2015 / 05:14