Kembalikan ember S3 versi ke titik waktu tertentu

16

Katakanlah saya mengaktifkan versi S3 untuk bucket saya: http://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html

Lalu, katakanlah seseorang (misalnya, karyawan junior) mengacaukan bucket S3 (menghapus beberapa file secara tidak sengaja, dll.)

Bagaimana saya bisa mengembalikan seluruh ember berversi ke titik waktu tertentu? Saya percaya ini harus dimungkinkan mengingat API S3, tapi saya lebih suka tidak harus menulis skrip sendiri, karena takut kehilangan sesuatu (saya bukan ahli AWS).

Apakah ada solusi yang baik untuk masalah ini? Saya menggunakan bucket S3 sebagai toko gambar untuk aplikasi Rails saya, jadi sesuatu berbasis Ruby yang bisa saya gunakan sebagai tugas menyapu akan ideal.

elsurudo
sumber

Jawaban:

17

Kamu bisa memakai s3-pit-restore

S3 Point in Time Restore adalah alat yang dapat Anda gunakan dengan tepat untuk mengembalikan ember atau subset ember ke titik waktu tertentu, seperti ini:

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

Apa yang sebenarnya ditawarkan oleh s3-pit-restore:

  • Pulihkan semua file dengan stempel waktu kurang dari yang diberikan
  • Pulihkan seluruh bucket atau awalan bucket
  • Pengunduhan paralel beberapa file dengan kecepatan keseluruhan yang luar biasa
  • Kustomisasi pekerja paralel dihitung untuk mengoptimalkan penggunaan bandwidth
  • Pulihkan dari versi bucket s3 atau dari gletser jika diaktifkan
Angelo
sumber
Ini sepertinya tidak berhasil untuk saya. Tujuan hanya membuat direktori lokal terlepas dari deskripsi alat.
Arthur
Anda telah menyelamatkan hari saya. Terima kasih telah memberi tahu kami alat yang luar biasa.
cyberrspiritt
2

Jika saya memahami dokumentasi dengan benar, ketika Anda mengaktifkan versi menghapus file cukup dengan mengembalikan versi "terbaru" kembali satu nomor versi. Namun ini tidak memberikan kemampuan untuk mengembalikan seluruh ember. Ini membuat versi sebelumnya di S3 tidak cocok untuk kebutuhan Anda (yaitu, pemulihan dari penghapusan).

Simpan cadangan di tempat lain juga untuk berjaga-jaga. Stack Overflow memiliki pertanyaan / jawaban tentang penggunaan ini s3cmd. Saya yakin Anda dapat menemukan skrip berbasis Ruby di suatu tempat atau meminta bantuan di situs itu jika Anda membutuhkannya.

Nathan C
sumber
Benar. Anda memvariasikan setiap objek individual dalam ember, bukan ember secara keseluruhan.
EEAA
1
Oh, aku mengerti semua itu. Itulah sebabnya saya menyadari itu tidak sesederhana itu. Saya mungkin harus menelusuri semua file dalam bucket, mendapatkan info versi untuk setiap file, dan kemudian memilih item yang benar (jika ada) berdasarkan tanggal saat saya ingin "mengembalikan". Tidak sesederhana itu. Saya pikir Amazon akan memiliki sesuatu untuk kasus penggunaan yang umum, tetapi sayangnya, tidak ... Jadi saya bertanya-tanya apakah seseorang telah menulis skrip yang membosankan ini. Saya akan melihat ke dalam s3cmd, tapi saya suka memiliki snapshot versi pada S3 juga.
elsurudo
jawaban ini mengandung informasi yang salah - sebuah deletesisipan sederhana penanda penghapusan dan permintaan di masa depan mengembalikan 404, bukan versi sebelumnya. Untuk KEMBALIKAN Anda dapat menyalin versi lama ke versi baru atau Anda dapat deletedengan versi tertentu dari objek saat ini - maka masa depan getdiberikan versi kedua hingga terbaru. docs.aws.amazon.com/AmazonS3/latest/dev/... agar adil, dokumen seputar versi bucket cenderung tidak jelas dan kurang ...
tajam
@keen Perhatikan bahwa pertanyaan ini dijawab hampir tiga tahun yang lalu ... sangat mungkin mereka memperbarui dokumentasinya. Tangkapan yang bagus.
Nathan C
tautan yang dirujuk untuk docu adalah tentang pemulihan (tampilan pemulihan tingkat sangat tinggi) dan belum berubah - dan untuk bersikap adil, itu lebih dari sedikit membingungkan ketika mulai berbicara tentang penghapusan. hanya ingin memastikan tidak ada yang melihat ini dan berpikir "hanya menghapus objek dari ember s3 versi berarti versi lama akan mulai dikembalikan" - itu BISA terjadi, tetapi Anda harus secara khusus menghapus versi saat ini (... / kunci ? versionId = xyz) agar hal itu terjadi ...
tajam
1

Berikut ini adalah skrip php kecil yang berguna yang saya gunakan untuk memulihkan ember dari cadangan dengan versi:

Untuk menjalankan kembali ke dalam ember dengan versi dihidupkan

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

pulihkan cadangan dari file yang diversi di antara kedua cap waktu ini

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

Anda dapat mengunduh skrip PHP di sini: http://boulderapps.co/post/backing-up-and-restoring-s3-to-a-versioned-bucket

pengguna278847
sumber