Mencadangkan data yang disimpan di Amazon S3

16

Saya memiliki instance EC2 menjalankan server web yang menyimpan file yang diunggah pengguna ke S3. File ditulis sekali dan tidak pernah berubah, tetapi kadang-kadang diambil oleh pengguna. Kami kemungkinan akan mengakumulasikan sekitar 200-500GB data per tahun. Kami ingin memastikan data ini aman, terutama dari penghapusan tidak disengaja dan ingin dapat memulihkan file yang dihapus tanpa alasan apa pun.

Saya telah membaca tentang fitur versi untuk bucket S3, tetapi sepertinya saya tidak dapat menemukan apakah pemulihan dapat dilakukan untuk file tanpa riwayat modifikasi. Lihat dokumen AWS di sini pada versi:

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

Dalam contoh-contoh itu, mereka tidak menunjukkan skenario di mana data diunggah, tetapi tidak pernah dimodifikasi, dan kemudian dihapus. Apakah file yang dihapus dalam skenario ini dapat dipulihkan?

Kemudian, kami pikir kami dapat mencadangkan file S3 ke Glacier menggunakan manajemen siklus hidup objek:

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

Tapi, sepertinya ini tidak akan bekerja untuk kita, karena objek file tidak disalin ke Glacier tetapi dipindahkan ke Glacier (lebih tepatnya sepertinya itu adalah atribut objek yang diubah, tetapi toh ...).

Jadi sepertinya tidak ada cara langsung untuk mencadangkan data S3, dan mentransfer data dari S3 ke server lokal mungkin memakan waktu dan dapat menimbulkan biaya transfer yang signifikan dari waktu ke waktu.

Akhirnya, kami pikir kami akan membuat ember baru setiap bulan untuk berfungsi sebagai cadangan penuh bulanan, dan menyalin data ember asli ke yang baru pada Hari 1. Kemudian menggunakan sesuatu seperti duplikat ( http://duplicity.nongnu.org/ ) kami akan menyinkronkan ember cadangan setiap malam. Pada akhir bulan kami akan meletakkan isi ember cadangan di penyimpanan Gletser, dan membuat ember cadangan baru menggunakan salinan ember asli yang baru ... dan ulangi proses ini. Sepertinya ini akan berhasil dan meminimalkan biaya penyimpanan / transfer, tetapi saya tidak yakin apakah duplikat memungkinkan transfer bucket ke bucket secara langsung tanpa membawa data ke klien pengendali terlebih dahulu.

Jadi, saya kira ada beberapa pertanyaan di sini. Pertama, apakah versi S3 memungkinkan pemulihan file yang tidak pernah dimodifikasi? Apakah ada cara untuk "menyalin" file dari S3 ke Glacier yang saya lewatkan? Bisakah duplikasi atau alat lain mentransfer file antara bucket S3 secara langsung untuk menghindari biaya transfer? Akhirnya, apakah saya jauh dari sasaran dalam pendekatan saya untuk mencadangkan data S3?

Terima kasih sebelumnya atas segala wawasan yang bisa Anda berikan!

Memperbarui

Amazon baru-baru ini mengumumkan bahwa versi sekarang berfungsi dengan aturan siklus hidup

Uang kertas lima dolar
sumber
aws.amazon.com/blogs/aws/archive-s3-to-glacier/... + ada yang bagus youtube video singkat di bagian bawah menjelaskan s3 ke gletser
equivalent8

Jawaban:

10

Saya telah membaca tentang fitur versi untuk bucket S3, tetapi sepertinya saya tidak dapat menemukan apakah pemulihan mungkin untuk file yang tidak memiliki riwayat modifikasi. Lihat dokumen AWS di sini di> versi:

Saya baru saja mencoba ini. Ya, Anda dapat memulihkan dari versi aslinya. Ketika Anda menghapus file itu membuat penanda hapus dan Anda dapat mengembalikan versi sebelum itu, yaitu: satu-satunya, revisi.

Kemudian, kami pikir kami dapat mencadangkan file S3 ke Glacier menggunakan manajemen siklus hidup objek>:

Tapi, sepertinya ini tidak akan bekerja untuk kita, karena objek file tidak disalin ke Glacier> tetapi dipindahkan ke Glacier (lebih tepatnya sepertinya itu adalah atribut objek yang diubah, tetapi> tetap ...).

Gletser benar-benar dimaksudkan untuk penyimpanan jangka panjang, yang jarang diakses. Ini juga bisa menjadi sangat mahal untuk mengambil sebagian besar data Anda dalam sekali jalan, karena itu tidak dimaksudkan untuk pemulihan banyak data secara point-in-time (berdasarkan persentase).

Akhirnya, kami pikir kami akan membuat ember baru setiap bulan untuk berfungsi sebagai cadangan penuh> bulanan, dan menyalin data ember asli ke yang baru pada Hari 1. Kemudian menggunakan sesuatu seperti duplikat ( http: //duplicity.nongnu. org / ) kami akan menyinkronkan ember cadangan setiap> malam.

Jangan lakukan ini, Anda hanya dapat memiliki 100 ember per akun, jadi dalam 3 tahun Anda akan mengambil sepertiga dari uang saku ember Anda hanya dengan cadangan.

Jadi, saya kira ada beberapa pertanyaan di sini. Pertama, apakah versi S3 memungkinkan pemulihan file yang tidak pernah dimodifikasi?

Iya

Apakah ada cara untuk "menyalin" file dari S3 ke Glacier yang saya lewatkan?

Tidak yang saya tahu

Sirex
sumber
Terima kasih Sirex, satu klarifikasi: kami bermaksud menyimpan satu ember cadangan pada satu waktu (bulan ini), dan mengarsipkan cadangan bulan lalu ke Glacier, dan kemudian menghapus salinan Glacier pada beberapa kebijakan penyimpanan umum (setiap bulan selama 3 bulan kemudian triwulanan selama satu tahun). Apakah Anda pikir ini mungkin, atau adakah batasan AWS lain yang mencegah strategi ini?
Fiver
hmm, kurasa itu masuk akal. Saya belum pernah mencobanya dalam kemarahan (atau gletser dalam hal ini, kami menggunakan Sydney dan itu tidak tersedia ketika kami melihatnya)
Sirex
3

Saya tidak suka memiliki s3 mount, karena lambat dan dapat menggantung dan melakukan seperti nfs sekolah lama. lebih baik naik / turun sesuai kebutuhan.

http://s3tools.org/s3cmd

mudah untuk skrip ... jangan lupa file ~ / .s3cfg Anda

nandoP
sumber
Wow, ini terlihat keren!
JakeGould
@nandoP +1 Saya sudah berpikir untuk menggunakan s3cmd dan menggulirkan sendiri
Fiver
1

Kedengarannya seperti Anda mungkin perlu S3FS yang pada dasarnya memasang ember S3 Anda seolah-olah mereka adalah sistem file lokal:

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

Saya lebih suka menggunakan versi bercabang ini karena ia mempertahankan struktur folder yang sama dengan apa yang dibuat di panel kontrol web untuk Amazon S3:

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

Kemudian saya memiliki beberapa skrip shell di tempat yang pada dasarnya digunakan rsyncuntuk menyinkronkan data ke pengaturan lokal saya.

Secara umum, saya menemukan S3FS berfungsi paling baik untuk membaca konten yang ditempatkan di dalam ember S3 Amazon. Menulis tidak konsisten. Tetapi untuk keperluan mencadangkan ember S3, garpu Tony Wang dari S3FS sangat bagus.

JakeGould
sumber
1
Ini terdengar bermanfaat. Apakah transfer langsung antar bucket, tanpa mengunduh ke klien?
Fiver
Mungkin ya. Saya terutama menggunakannya untuk me-mount di server lokal & cadangan ke mesin lokal kami. Tapi karena memang memiliki kemampuan menulis, saya tidak akan mengesampingkan menggunakannya sebagai "pergi antara" untuk mengacak data antar ember. Pada dasarnya pada mesin perantara, pasang satu ember pada satu titik pemasangan. Kemudian pasang ember lainnya sebagai titik pemasangan lainnya. Dan kemudian lakukan rsync. Tapi seperti yang saya katakan, waktu modifikasi / tanggal bisa aneh dengan Amazon S3 karena ini bukan sistem file. Tapi percobaan.
JakeGould