Saya telah mencari alat untuk membantu saya menyalin konten dari bucket AWS S3 ke dalam bucket AWS S3 kedua tanpa mengunduh konten terlebih dahulu ke sistem file lokal.
Saya telah mencoba menggunakan opsi salinan konsol AWS S3 tetapi itu mengakibatkan beberapa file bersarang hilang.
Saya telah mencoba menggunakan aplikasi Transmit (oleh Panic). Perintah duplikat mengunduh file terlebih dahulu ke sistem lokal kemudian mengunggahnya kembali ke keranjang kedua, yang cukup tidak efisien.
amazon-s3
copy
amazon-web-services
cnicolaou.dll
sumber
sumber
aws configure set default.s3.max_concurrent_requests 200
Lihat posting ini untuk detail dan opsi lebih lanjut stackoverflow.com/questions/4663016/…Jawaban:
Salin antara S3 Bucket
AWS (baru-baru ini) merilis antarmuka baris perintah untuk menyalin antar bucket.
http://aws.amazon.com/cli/
Ini akan menyalin dari satu keranjang target ke keranjang lain.
Lihat dokumentasi di sini: Dokumentasi CLI S3
sumber
A client error (PermanentRedirect) occurred when calling the ListObjects operation: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
Contoh sederhana menggunakan permata aws-sdk:
Jika Anda ingin melakukan penyalinan di antara keranjang yang berbeda, tentukan nama keranjang target:
sumber
Anda sekarang dapat melakukannya dari antarmuka admin S3. Cukup masuk ke satu ember pilih semua folder Anda
actions->copy
. Kemudian pindah ke keranjang baru Andaactions->paste
.sumber
Mungkin saja dengan permata aws-sdk terbaru , lihat contoh kode:
detail lebih lanjut: Cara menyalin file di seluruh ember menggunakan permata aws-s3
sumber
Salin di antara keranjang di berbagai wilayah
Perintah di atas menyalin file dari bucket di Eropa (eu-west-1) ke Jepang (ap-east-east). Anda bisa mendapatkan nama kode untuk wilayah bucket Anda dengan perintah ini:
Omong-omong, menggunakan Salin dan Tempel di konsol web S3 itu mudah, tetapi tampaknya mengunduh dari keranjang sumber ke dalam browser, lalu mengunggah ke keranjang tujuan. Bagi saya, menggunakan "aws s3" jauh lebih cepat.
sumber
Saya telah membuat Docker yang dapat dieksekusi dari alat s3s3mirror . Utilitas untuk menyalin dan mencerminkan dari bucket AWS S3 ke yang lain.
Itu berulir memungkinkan COPY paralel dan sangat efisien memori, itu berhasil di mana s3cmd benar-benar gagal.
Pemakaian:
Untuk daftar lengkap opsi coba:
sumber
Lihat dokumentasi di bawah ini. Saya rasa itulah yang Anda cari. http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectCOPY.html
S3Interface permata RightAws memiliki fungsi salin yang melakukan hal di atas.
http://rubydoc.info/gems/right_aws/3.0.0/RightAws/S3Interface#copy-instance_method
sumber
Saya membayangkan Anda mungkin telah menemukan solusi yang baik sekarang, tetapi bagi orang lain yang mengalami masalah ini (seperti yang saya baru-baru ini), saya telah membuat utilitas sederhana khusus untuk tujuan mencerminkan satu ember S3 ke yang lain di dengan cara yang sangat konkuren, namun dengan CPU dan memori yang efisien.
Ada di github di bawah Lisensi Apache di sini: https://github.com/cobbzilla/s3s3mirror
Jika Anda memiliki bucket yang sangat besar dan mencari performa maksimal, mungkin ada baiknya Anda mencoba.
Jika Anda memutuskan untuk mencobanya, beri tahu saya jika Anda memiliki masukan.
sumber
Jika Anda berada di shell dan ingin menyalin banyak file tetapi tidak semua file: s3cmd cp --recursive s3: // BUCKET1 / OBJECT1 s3: // BUCKET2 [/ OBJECT2]
sumber
Saya menulis skrip yang mencadangkan bucket S3: https://github.com/roseperrone/aws-backup-rake-task
Saya menggunakan ini dalam tugas menyapu (untuk aplikasi Rails):
sumber
Saya mendengar ada modul node untuk itu jika Anda menyukai javascript: p
Dari dokumen knox-copy :
sumber
Saya diberitahu bahwa Anda juga dapat melakukan ini menggunakan s3distcp pada cluster EMR. Ini seharusnya lebih cepat untuk data yang berisi file besar. Ini berfungsi cukup baik pada kumpulan data kecil - tetapi saya lebih suka solusi lain mengingat kurva pembelajaran yang diperlukan untuk menyiapkan data yang sangat sedikit (saya belum pernah bekerja dengan EMR sebelumnya).
Berikut tautan dari Dokumentasi AWS: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_s3distcp.html
Pembaruan: Untuk kumpulan data yang sama, s3s3mirror jauh lebih cepat daripada s3distcp atau AWS cli. Jauh lebih mudah untuk disiapkan juga.
sumber
Untuk menyalin dari satu bucket S3 ke bucket S3 yang sama atau lainnya tanpa mengunduh ke lokal, itu cukup sederhana. Gunakan perintah shell di bawah ini.
Ini akan menyalin semua file dari
SourceFoldername
folder keranjang sumber ke folder keranjang targetTargetFoldername
. Pada kode di atas, harap gantiAccessKey
,SecurityKey
danExternalBucket
dengan nilai Anda yang sesuai.sumber
hdfs
?dari AWS cli https://aws.amazon.com/cli/ bisa Anda lakukan
aws s3 ls
- Ini akan mencantumkan semua bucket S3aws cp --recursive s3://<source bucket> s3://<destination bucket>
- Ini akan menyalin file dari satu wadah ke wadah lainCatatan * Sangat berguna saat membuat keranjang replikasi lintas wilayah, dengan melakukan hal di atas, semua file Anda terlacak dan pembaruan ke file wilayah sumber akan disebarkan ke keranjang yang direplikasi. Semuanya kecuali penghapusan file disinkronkan.
Untuk CRR, pastikan Anda telah mengaktifkan pembuatan versi di bucket.
sumber
Bagaimana dengan
aws s3 sync
perintah cli. aws s3 sync s3: // bucket1 / s3: // bucket2 /sumber
Seperti yang dijelaskan Neel Bhaat di blog ini , ada banyak alat berbeda yang dapat digunakan untuk tujuan ini. Beberapa di antaranya disediakan AWS, di mana sebagian besar adalah alat pihak ketiga. Semua alat ini mengharuskan Anda untuk menyimpan kunci dan rahasia akun AWS Anda di alat itu sendiri. Berhati-hatilah saat menggunakan alat pihak ketiga, karena kredensial yang Anda simpan mungkin membebani Anda, seluruh nilai Anda, dan membuat Anda mati.
Oleh karena itu, saya selalu merekomendasikan penggunaan AWS CLI untuk tujuan ini. Anda cukup menginstal ini dari tautan ini . Selanjutnya, jalankan perintah berikut dan simpan kunci Anda, nilai rahasia di AWS CLI.
Dan gunakan perintah berikut untuk menyinkronkan AWS S3 Bucket Anda ke mesin lokal Anda. (Mesin lokal harus menginstal AWS CLI)
Contoh:
1) Untuk AWS S3 ke Penyimpanan Lokal
2) Dari Penyimpanan Lokal ke AWS S3
3) Dari ember AWS s3 ke ember lain
sumber
Cara terbaik untuk menyalin bucket S3 menggunakan AWS CLI .
Ini melibatkan 3 langkah ini:
Jika Anda menyalin keranjang di antara dua akun AWS, Anda perlu melampirkan kebijakan yang benar dengan setiap keranjang.
Setelah ini gunakan perintah ini untuk menyalin dari satu wadah ke wadah lain.
Rincian langkah 2 dan langkah 3 diberikan di tautan ini:
sumber
Anda dapat menulis Aplikasi Java - bahkan mungkin Aplikasi GUI SWING yang menggunakan API Java AWS Untuk menyalin objek, lihat -
https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/s3/src/main/java/com/example/s3/CopyObject.java
sumber