Apa cara praktis untuk mencerminkan bucket Amazon S3?

9

Saya ingin mencerminkan ember Amazon S3 saya. Saya ingin melakukan ini karena 1) Saya tidak ingin semua data saya hanya ada dengan satu penyedia; dan 2) jika terjadi kesalahan perangkat lunak atau pelanggaran keamanan, saya ingin data dicadangkan.

Saya bisa mirror ke disk lokal dengan fungsi sinkronisasi s3cmd, tapi itu tidak skala untuk ember yang sangat besar dan tidak berguna untuk pemulihan cadangan cepat. Saya lebih suka data saya dicerminkan ke pesaing seperti Rackspace Cloud Files.

Adakah yang punya saran tentang cara sederhana dan tangguh untuk memfasilitasi mirroring semacam ini dengan cara otomatis pada kotak Linux?

Ben
sumber
Apakah saya benar berasumsi bahwa tidak ada jawaban yang benar-benar memecahkan "1) Saya tidak ingin semua data saya hanya ada dengan satu penyedia", karena semuanya hanya mencerminkan ember di dalam penyedia yang sama?
Chris

Jawaban:

6

Anda dapat menggunakan utilitas " s3cmd " dengan opsi "sinkronisasi", meskipun saya menemukan pertanyaan Anda karena saya mencoba mencari tahu apakah mekanisme sinkronisasi ini mengacaukan cadangan duplikat saya.

jberryman
sumber
ini memang solusi terbaik yang saya temukan s3tools.org/s3cmd-sync
John Bachir
5

Saya mengalami masalah yang sama jadi saya membuat program kecil yang dirancang khusus untuk mencerminkan satu ember S3 ke yang lain; Saya menyebutnya s3s3mirror.

Saya memang mencoba pendekatan "s3cmd sync" dulu, tapi saya punya ember dengan ratusan ribu objek di dalamnya, dan "s3cmd sync" hanya duduk di sana, tidak melakukan apa-apa selain menghabiskan lebih banyak memori hingga sistem saya mati. Saya merancang s3s3mirror untuk segera bekerja, untuk menggunakan 100 thread bersamaan (dapat dikonfigurasi), dan untuk menggunakan CPU dan memori secara sederhana. Jika saya mengatakannya sendiri, itu cukup cepat.

Saya sudah membuatnya tersedia di github di bawah Lisensi Apache. Jika Anda memutuskan untuk mengubahnya, beri tahu saya apa yang Anda pikirkan dan apakah ada sesuatu yang dapat ditingkatkan.

Inilah tautannya: https://github.com/cobbzilla/s3s3mirror

Terima kasih!

  • Jonathan.
cobbzilla
sumber
Terima kasih atas pekerjaan Anda, saya telah membuat sebuah buruh pelabuhan yang dapat dieksekusi dari ini dan sudah menggunakannya dalam produksi: github.com/pmoust/s3s3mirror-docker
Panagiotis Moustafellos
4

Amazon sekarang memiliki alat yang didukung untuk melakukan ini, aws cli .

Itu dapat mencerminkan ke arah mana pun antara lokal dan jarak jauh, atau antara dua lokasi s3.

Sayangnya itu tidak memiliki dukungan langsung untuk lokasi non-S3 seperti rackspace, tapi saya pikir ini akan menjadi jawaban yang berguna bagi sebagian orang yang menemukan pertanyaan ini. Seperti saya, sebelum saya menemukannya.

Khususnya,

aws s3 sync s3://some/s3/path /some/local/path
Dan Pritts
sumber
2

Lihat Jungle Disk Server . Ini bekerja dengan Amazon S3 dan Rackspace Cloud Files. Anda bisa memasang S3 dan CF di lokasi yang berbeda di sistem file Anda dan kemudian menggunakan rsync di antara keduanya.

Alan Ivey
sumber
Terima kasih, tetapi saya seharusnya menyebutkan bahwa saya sedang mencari solusi yang dapat saya jalankan sebagai cron job pada kotak Linux. Saya telah memperbarui pertanyaan.
Ben
2

Anda dapat mencoba memasang ember dengan sekering menggunakan s3fs . Setelah selesai, Anda dapat rsync dari titik mount ke disk lokal Anda.

menggeram
sumber
1
+1 untuk s3fs, saya baru saja melakukan patch untuk mendukung file hingga ukuran 5TB.
ben lemasurier
1

Anda dapat mengatur server Minio , sumber terbuka dan API yang kompatibel S3. Anda dapat mengaturnya di EC2 atau pada penyedia cloud apa pun sebagai server alternatif Anda dan menggunakan perintah Minio clients mc mirror mengambil mirror S3 secara berkala. Anda dapat mengotomatiskan penulisan skrip cron sederhana yang sama.

Semoga ini bisa membantu. Penafian: Saya bekerja untuk Minio

koolhead17
sumber
1

Untuk sinkronisasi bucket secara online, Anda dapat menggunakan replikasi lintas wilayah. Dengan cara ini semua pembaruan ke bucket asli akan secara otomatis disinkronkan ke bucket S3 di wilayah lain: https://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html

Ingatlah bahwa ini membutuhkan versi yang diaktifkan untuk bucket, jadi jika Anda melakukan banyak pembaruan / penghapusan objek dalam ember, Anda akan ingin memungkinkan kebijakan siklus hidup untuk menghapus objek lama.

timurb
sumber
Inilah yang kami pilih untuk digunakan, tetapi perhatikan bahwa replikasi tidak sama dengan mirroring. Perbedaan besar adalah bahwa penghapusan tidak disebarkan antara sumber dan tujuan (tujuan akan memperbarui file yang berubah, tetapi tampaknya tidak pernah menghapusnya).
Scott Gartner