Akan menyenangkan untuk memiliki fungsi kenyamanan --no-overwrite
untuk perintah aws s3 cp/mv
, yang akan memeriksa tujuan target yang belum ada sebelum memasukkan file ke dalam ember s3.
Tentu saja logika ini tidak dapat dijamin oleh AWS API (afaik...) dan rentan terhadap kondisi balapan, dll. Tetapi akan sangat membantu untuk mencegah kesalahan yang tidak disengaja!
Menandai sebagai permintaan fitur. Bagian yang sulit jika kita melakukannya di cp
atau mv
adalah bahwa CLI mungkin harus meminta S3 untuk melihat apakah file tersebut ada sebelum mencoba mengunggahnya. Jadi mungkin lebih masuk akal untuk menambahkannya ke sync
karena sudah melakukannya.
Saya ingin melihat ini di cp
dan/atau mv
juga.
Alasan saya tidak menggunakan sync
untuk saat ini adalah karena sync
memiliki masalah kinerja yang besar jika bucket tujuan memiliki banyak file yang ada di bawah direktori target.
Saat Anda menjalankan aws s3 cp --recursive newdir s3://bucket/parentdir/
, itu hanya mengunjungi setiap file yang sebenarnya disalin.
Saat Anda menjalankan aws s3 sync newdir s3://bucket/parentdir/
, ia mengunjungi file yang disalin, tetapi juga menelusuri seluruh daftar file di s3://bucket/parentdir
(yang mungkin sudah berisi ribuan atau jutaan file) dan mendapatkan metadata untuk setiap file yang ada .
Pada bucket tujuan yang cukup besar, aws s3 cp --recursive
membutuhkan waktu beberapa detik dan aws s3 sync
membutuhkan waktu berjam-jam untuk menyalin data yang sama.
Jelas memperbaiki sync
akan menyenangkan, tetapi jika menambahkan kueri "periksa untuk melihat apakah file sudah ada" ke cp
adalah masalah yang lebih mudah ditangani daripada mengubah kode sync
menjadi membuatnya cepat, mungkin masuk akal untuk melakukan itu sebagai gantinya.
Saya juga sangat tertarik dengan fitur ini. Prompt interaktif opsional untuk menimpa file juga akan menyenangkan untuk dimiliki.
ya @sgrimm-sg, masuk akal. Saya juga tertarik untuk melihat perintah cp CLI yang benar-benar dapat menangani kondisi ini.
Ini akan sangat berguna untuk menjadi opsi pada aws s3 sync
. rsync
memiliki fungsi ini tersedia sebagai --ignore-existing
. Preferensi saya akan mencoba menggunakan nama opsi yang sama dengan rsync
karena saya menduga ada banyak orang yang sudah akrab dengan rsync
.
Selamat pagi!
Kami menutup masalah ini di sini di GitHub, sebagai bagian dari migrasi kami ke UserVoice untuk permintaan fitur yang melibatkan AWS CLI.
Ini akan memungkinkan kami mendapatkan fitur yang paling penting bagi Anda, dengan mempermudah pencarian dan menunjukkan dukungan untuk fitur yang paling Anda pedulikan, tanpa mengurangi percakapan dengan laporan bug.
Sebagai primer UserVoice cepat (jika belum terbiasa): setelah sebuah ide diposting, orang-orang dapat memilih ide tersebut, dan tim produk akan langsung menanggapi saran yang paling populer.
Kami telah mengimpor permintaan fitur yang ada dari GitHub - Cari masalah ini di sana!
Dan jangan khawatir, masalah ini akan tetap ada di GitHub demi anak cucu. Karena ini adalah impor teks saja dari posting asli ke UserVoice, kami akan tetap mengingat komentar dan diskusi yang sudah ada di sini pada masalah GitHub.
GitHub akan tetap menjadi saluran untuk melaporkan bug.
Sekali lagi, masalah ini sekarang dapat ditemukan dengan mencari judul di: https://aws.uservoice.com/forums/598381-aws-command-line-interface
-Tim Alat & SDK AWS
Entri ini secara khusus dapat ditemukan di UserVoice di: https://aws.uservoice.com/forums/598381-aws-command-line-interface/suggestions/33168406-add-no-overwrite-option-to-aws-s3- cp-mv
Terkait:
Berdasarkan umpan balik komunitas, kami telah memutuskan untuk mengembalikan permintaan fitur ke masalah GitHub.
@jamesls itu bagus! dapatkah Anda menanggapi saran yang ada? --no-overwrite akan menjadi tambahan yang bagus dan itu akan menghindari membungkus panggilan dengan skrip
+1 untuk masalah ini. Saya mengusulkan -n, --no-clobber untuk mencocokkan opsi perintah cp Linux yang ada.
Apakah sudah ada implementasi dari permintaan ini? Mencoba bekerja dengan file batch Windows untuk melakukan pencadangan lokal > S3, ini adalah metode termudah, tanpa penimpaan sederhana atau tanda serupa.
Adakah pembaruan terkait fitur ini?
Adakah pembaruan mengenai fitur ini? Terima kasih
Adakah pembaruan terkait fitur ini?
Adakah pembaruan terkait fitur ini?
sev3, +1
Sangat membutuhkan fitur ini ditambahkan karena sinkronisasi S3 tampaknya tidak mengunggah setiap file.
Ada pembaruan atau solusi?
Ada pembaruan atau solusi?
Saya harus menulis skrip python untuk memuat semua item dalam ember ke dalam array (daftar), lalu memuat semua item dari direktori yang ingin saya sinkronkan, lalu membandingkan array dan mengunggah item lokal yang tidak ada dalam array S3 .
Saya harus menulis skrip python untuk memuat semua item dalam ember ke dalam array (daftar), lalu memuat semua item dari direktori yang ingin saya sinkronkan, lalu membandingkan array dan mengunggah item lokal yang tidak ada dalam array S3 .
@southpaw5271 - maukah Anda membagikan skrip Anda dan menghemat waktu saya? ; )
Saya harus menulis skrip python untuk memuat semua item dalam ember ke dalam array (daftar), lalu memuat semua item dari direktori yang ingin saya sinkronkan, lalu membandingkan array dan mengunggah item lokal yang tidak ada dalam array S3 .
@southpaw5271 - maukah Anda membagikan skrip Anda dan menghemat waktu saya? ; )
Sepertinya saya tidak memilikinya lagi :( Maaf!
Bendera ini juga berguna untuk perintah cp
, karena sync
tidak mengizinkan penyalinan file saat mengubah nama tujuan.
aws s3 cp --no-overwrite ./somefile s3://bucket/othername
Kami juga membutuhkan opsi --no-overwrite dari s3 ke lokal. Kami telah dibakar oleh penimpaan yang tidak disengaja dari individu yang bermaksud baik, dan ini akan menjadi cara yang sangat dihargai untuk memasang "pagar pembatas" bagi mereka. Terima kasih!
perubahan apapun?
Adakah pembaruan terkait fitur ini? Terima kasih
+1
+1
Saya memigrasikan file dari sistem lama. Saya memiliki skrip python yang menghasilkan jalur berbeda sesuai dengan kolom db (yaitu setiap org sekarang memiliki foldernya sendiri di ember tertentu), jadi saya tidak dapat mengandalkan perintah sinkronisasi. Saya dapat menjalankan skrip untuk melakukan migrasi parsial jika -skip-duplicate atau semacam parameter akan tersedia.
+1
Ini sangat dibutuhkan. Kenapa belum ada?
+1
+10
Adakah pembaruan terkait fitur ini? Terima kasih
Juga berikan suara untuk fitur ini!
+1
+1
+1
+1
ada update tentang ini?
+1
Aku tidak percaya itu masih bukan apa-apa. Hampir tidak mungkin membuat penyimpanan yang tidak dapat diubah di S3 :(
Kami telah memulai data yang disalin dari ember S3 ke mount linux lokal dan ukuran di tujuan adalah ~40 GB kurang dari S3 Bucket. Temukan cara untuk menyalin hanya yang hilang. Sepertinya tidak ada cara mudah untuk melakukannya daripada menyalin semua..
Salah satu opsi dari aws s3 sync
yang dapat mencapai sesuatu yang serupa adalah --size-only
flag boolean, yang akan ditimpa di tujuan hanya jika ukurannya berbeda antara sumber dan objek tujuan,
--size-only (boolean) Makes the size of each key the only criteria used
to decide whether to sync from source to destination.
Perintah yang saya gunakan,
aws s3 sync s3://<source bucket> s3://<destination bucket> --size-only
_Penting_: Sangat disarankan untuk menjalankan perintah di atas dengan flag boolean --dry-run
terlebih dahulu, untuk melihat apa yang ingin dilakukan perintah ini sebelum benar-benar menjalankannya, terutama jika melibatkan sistem produksi Anda. Ini karena banyak kehati-hatian.
tidak membantu saya, menunggu #5456 ditangani oleh DH
Komentar yang paling membantu
Berdasarkan umpan balik komunitas, kami telah memutuskan untuk mengembalikan permintaan fitur ke masalah GitHub.