Sürümlendirilmiş bir S3 grubunu belirli bir zaman dilimine geri yükleme


16

Diyelim ki kovam için S3 sürüm etkinleştirildi: http://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html

Ardından, birisinin (örneğin, küçük çalışan) S3 kovasını bozduğunu (bazı dosyaları yanlışlıkla siler vb.)

Daha sonra sürüm grubunun tamamını belirli bir zaman dilimine nasıl geri yükleyebilirim? S3'ün API'sı göz önüne alındığında bunun mümkün olması gerektiğine inanıyorum, ancak bir şey eksik korkusuyla kendim böyle bir senaryo yazmak zorunda kalmam (AWS uzmanı değilim).

Bu soruna iyi bir çözüm var mı? S3 kovasını Rails uygulamam için resim mağazası olarak kullanıyorum, bu yüzden Ruby tabanlı bir komisyon görevi olarak kullanabileceğim bir şey ideal olurdu.

Yanıtlar:


17

Kullanabilirsiniz s3-pit-restore

S3 Zamanında Geri Yükleme , bir kovayı veya bir kova alt kümesini belirli bir zaman dilimine geri yüklemek için tam olarak kullanabileceğiniz bir araçtır:

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

S3-Pit-Restore aslında neler sunuyor:

  • Zaman damgası verilen dosyadan daha az olan tüm dosyaları geri yükleme
  • Bir grubun tamamını veya bir kova önekini geri yükleme
  • Çok yüksek toplam hıza sahip birden fazla dosyanın paralel indirilmesi
  • Bant genişliği kullanımını optimize etmek için paralel çalışan sayısının özelleştirilmesi
  • S3 kepçe sürümlerinden veya etkinse buzuldan geri yükleme

Bu benim için işe yaramıyor. Hedef, aracın açıklamasına rağmen yalnızca yerel bir dizin oluşturur.
Arthur

Günümü kurtardın. Harika aracı bize bildirdiğiniz için teşekkür ederiz.
cyberrspiritt

2

Ben anlamak belgelerine doğru dosyayı silmeden etkin sürümlendirmesini ne zaman, sadece "son" sürüm geri bir sürüm numarasını döner. Ancak bu mu değil bütün bir kova geri yetenek kazandırır. Bu, S3'teki önceki sürümleri ihtiyaçlarınız için uygun hale getirmez (yani, silinmekten kurtarma).

Her durumda yedeklemeyi başka bir yerde saklayın. Yığın Taşması'nın bu kullanımla ilgili bir sorusu / cevabı vardır s3cmd. Eminim bir yerde Ruby tabanlı bir komut dosyası bulabilir veya ihtiyacınız varsa bu sitede yardım isteyebilirsiniz.


Doğru. Kovayı bir bütün olarak değil, kovadaki her bir nesneyi sürümlendiriyorsunuz.
EEAA

1
Oh, hepsini anlıyorum. Bu yüzden bunun o kadar basit olmadığını anlıyorum. Muhtemelen kovadaki tüm dosyaları taramak, her dosya için sürüm bilgisi almak ve daha sonra "geri dönmek" istediğiniz tarihi temel alarak (varsa) doğru öğeyi seçmek zorunda kalacak. O kadar basit değil. Amazon'un böylesine yaygın bir kullanım durumu için bir şey olacağını düşündüm, ama ne yazık ki, hayır ... Bu yüzden birinin bu sıkıcı senaryoyu zaten yazıp yazmadığını merak ediyordum. İçine bakacağım s3cmd, ancak S3'te de anlık görüntülere sahip olmayı seviyorum.
elsurudo

bu cevap yanlış bilgiler içeriyor - basit deletebir silme işareti ekliyor ve gelecekteki istekler önceki sürümü değil, 404 döndürüyor. GERİ YÜKLEME için eski bir sürümü yeni bir sürüme kopyalayabilir veya deletegeçerli nesnenin belirli bir sürümüyle yapabilirsiniz - daha sonra geleceğe getikinci ve son sürüm verilir. Adil olmak gerekirse , kova sürümünün etrafındaki docu belirsiz ve eksik olma eğilimindedir ...
istekli

@keen Bu sorunun neredeyse üç yıl önce yanıtlandığını unutmayın ... belgeleri güncellemeleri çok olası. Gerçi iyi yakala.
Nathan C

docu için atıfta bulunulan bağlantı kurtarma (süper yüksek seviye kurtarma görünümü) ve değişmedi - ve adil olmak gerekirse, silme hakkında konuşmaya başladığında biraz kafa karıştırıcı olmaktan daha fazlası. Kimsenin bunu görmediğinden emin olmak istedim ve "sadece bir sürüm s3 kovasından bir nesneyi silmek eski sürümün geri gelmeye başlayacağı anlamına gelir" - bu OLABİLİR, ancak mevcut sürümü özellikle silmeniz gerekir (... / key ? versionId = xyz) bunun olması için ...
istekli

1

İşte sürüm ile bir kova yedekleme benim kova geri yüklemek için kullanılan kullanışlı bir küçük php komut dosyası:

Sürüm oluşturma açık bir kovaya geri dönmek için

#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;

bu iki zaman damgası arasında sürümlendirilmiş dosyalardan yedeklemeyi geri yükle

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

PHP betiğini buradan indirebilirsiniz: http://boulderapps.co/post/backing-up-and-restoring-s3-to-a-versioned-bucket

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.