Aws-cli: أضف خيار - no-overwrite إلى aws s3 cp / mv

تم إنشاؤها على ٦ أكتوبر ٢٠١٧  ·  43تعليقات  ·  مصدر: aws/aws-cli

سيكون من الجيد أن يكون لديك وظيفة ملائمة للأوامر $ # --no-overwrite aws s3 cp/mv ، والتي ستتحقق من أن الوجهة المستهدفة غير موجودة بالفعل قبل وضع ملف في حاوية s3.

بالطبع لا يمكن ضمان هذا المنطق بواسطة AWS API (afaik ...) وهو عرضة لظروف السباق ، وما إلى ذلك ، ولكن سيكون من المفيد منع الأخطاء غير المقصودة!

feature-request s3

التعليق الأكثر فائدة

بناءً على تعليقات المجتمع ، قررنا إعادة طلبات الميزات إلى مشكلات GitHub.

ال 43 كومينتر

بمناسبة كطلب ميزة. الجزء الصعب إذا قمنا بذلك في cp أو mv هو أنه قد يتعين على CLI الاستعلام عن S3 لمعرفة ما إذا كان الملف موجودًا قبل محاولة تحميله. لذلك قد يكون من المنطقي إضافته إلى sync لأنه يفعل ذلك بالفعل.

أرغب في رؤية هذا في cp و / أو mv أيضًا.

السبب في عدم استخدامي sync لهذا الآن هو أن sync يعاني من مشاكل أداء كبيرة إذا كانت حاوية الوجهة بها الكثير من الملفات الموجودة ضمن الدليل الهدف.

عندما تقوم بتشغيل aws s3 cp --recursive newdir s3://bucket/parentdir/ ، فإنه يزور فقط كل ملف من الملفات التي يقوم بنسخها بالفعل.

عندما تقوم بتشغيل aws s3 sync newdir s3://bucket/parentdir/ ، فإنه يزور الملفات التي ينسخها ، ولكنه أيضًا يمشي في القائمة الكاملة للملفات في s3://bucket/parentdir (والتي قد تحتوي بالفعل على آلاف أو ملايين الملفات) ويحصل على البيانات الوصفية لكل ملف موجود .

في حاوية وجهة كبيرة بما فيه الكفاية ، يمكن أن يستغرق aws s3 cp --recursive ثوانٍ ويمكن أن يستغرق aws s3 sync ساعات لنسخ نفس البيانات.

من الواضح أن إصلاح sync سيكون أمرًا رائعًا ، ولكن إذا كانت إضافة استعلام "تحقق لمعرفة ما إذا كان الملف موجودًا بالفعل" إلى cp يمثل مشكلة أكثر قابلية للتتبع من تجديد الرمز sync لـ اجعله سريعًا ، فقد يكون من المنطقي القيام بذلك بدلاً من ذلك.

أنا أيضًا مهتم جدًا بهذه الميزة. سيكون من الجيد أيضًا وجود موجه تفاعلي اختياري للكتابة فوق الملفات.

نعم @ sgrimm-sg ، هذا منطقي. أنا مهتم أيضًا برؤية الأمر CLI cp الذي يمكنه بالفعل التعامل مع هذه الشروط.

سيكون من المفيد للغاية أن يكون هذا خيارًا على aws s3 sync . تتوفر هذه الوظيفة في rsync كـ --ignore-existing . أفضّل أن أحاول استخدام نفس أسماء الخيارات مثل rsync حيث أظن أن هناك الكثير من الأشخاص المألوفين بالفعل مع rsync .

صباح الخير!

نحن نغلق هذه المشكلة هنا على GitHub ، كجزء من ترحيلنا إلى UserVoice لطلبات الميزات التي تتضمن AWS CLI.

سيتيح لنا ذلك الحصول على أهم الميزات لك ، من خلال تسهيل البحث عن الميزات التي تهتم بها وإظهار الدعم لها ، دون إضعاف المحادثة مع تقارير الأخطاء.

ككتاب تمهيدي سريع لبرنامج UserVoice (إن لم يكن مألوفًا بالفعل): بعد نشر الفكرة ، يمكن للأشخاص التصويت على الأفكار ، وسيستجيب فريق المنتج مباشرةً للاقتراحات الأكثر شيوعًا.

لقد قمنا باستيراد طلبات الميزات الحالية من GitHub - ابحث عن هذه المشكلة هناك!

ولا تقلق ، ستظل هذه المشكلة موجودة على GitHub من أجل الأجيال القادمة. نظرًا لأنه استيراد نصي فقط للمنشور الأصلي في UserVoice ، سنظل نضع في اعتبارنا التعليقات والمناقشات الموجودة بالفعل هنا حول مشكلة GitHub.

سيظل GitHub هو القناة للإبلاغ عن الأخطاء.

مرة أخرى ، يمكن الآن العثور على هذه المشكلة من خلال البحث عن العنوان على: https://aws.uservoice.com/forums/598381-aws-command-line-interface

- فريق أدوات وأدوات AWS SDK

يمكن العثور على هذا الإدخال على وجه التحديد في UserVoice على: https://aws.uservoice.com/forums/598381-aws-command-line-interface/suggestions/33168406-add-no-overwrite-option-to-aws-s3- cp-mv

متعلق ب:

بناءً على تعليقات المجتمع ، قررنا إعادة طلبات الميزات إلى مشكلات GitHub.

jamesls هذا رائع! هل يمكنك الرد على الاقتراح في متناول اليد؟ - no-overwrite ستكون إضافة رائعة وستتجنب تغليف المكالمات بالنصوص

+1 لهذه المشكلة. أقترح -n، --no-clobber لمطابقة خيارات أوامر Linux cp الحالية.

هل كان هناك أي تنفيذ لهذا الطلب؟ محاولة العمل مع ملفات Windows الدفعية لإجراء نسخ احتياطي محلي> S3 ، فهذه هي أسهل الطرق ، وهي علامة عدم الكتابة الفوقية البسيطة أو علامة مماثلة.

أي تحديث بخصوص هذه الميزة؟

أي تحديث بخصوص هذه الميزة؟ شكرا

أي تحديث بخصوص هذه الميزة؟

أي تحديث بخصوص هذه الميزة؟

sev3, +1

تحتاج حقًا إلى إضافة هذه الميزة حيث لا يبدو أن مزامنة S3 تقوم بتحميل كل ملف.

أي تحديثات أو حلول؟

أي تحديثات أو حلول؟

اضطررت إلى كتابة برنامج نصي من نوع python لتحميل جميع العناصر الموجودة في الحاوية في مصفوفة (قائمة) ، ثم تحميل جميع العناصر من الدليل الذي أريد مزامنته ، ثم مقارنة المصفوفات وتحميل العناصر المحلية غير الموجودة في مجموعة S3 .

اضطررت إلى كتابة برنامج نصي من نوع python لتحميل جميع العناصر الموجودة في الحاوية في مصفوفة (قائمة) ، ثم تحميل جميع العناصر من الدليل الذي أريد مزامنته ، ثم مقارنة المصفوفات وتحميل العناصر المحلية غير الموجودة في مجموعة S3 .

@ southpaw5271 - هل ترغب في مشاركة السيناريو الخاص بك وتوفير بعض الوقت؟ ؛ )

اضطررت إلى كتابة برنامج نصي من نوع python لتحميل جميع العناصر الموجودة في الحاوية في مصفوفة (قائمة) ، ثم تحميل جميع العناصر من الدليل الذي أريد مزامنته ، ثم مقارنة المصفوفات وتحميل العناصر المحلية غير الموجودة في مجموعة S3 .

@ southpaw5271 - هل ترغب في مشاركة السيناريو الخاص بك وتوفير بعض الوقت؟ ؛ )

لا يبدو أنني أمتلكها بعد الآن :( آسف!

ستكون هذه العلامة ذات قيمة أيضًا للأمر cp ، نظرًا لأن sync لا يسمح بنسخ ملف أثناء تغيير اسم الوجهة.

aws s3 cp --no-overwrite ./somefile s3://bucket/othername

نحتاج أيضًا إلى خيار - no-overwrite من s3 إلى local. لقد أحرقنا بسبب عمليات الكتابة غير المقصودة من الأفراد ذوي النوايا الحسنة ، وستكون هذه طريقة محل تقدير كبير لوضع "حاجز حماية" لهم. شكرا!

أي تحديث؟

أي تحديث بخصوص هذه الميزة؟ شكرا لك

+1

+1

أنا أقوم بترحيل الملفات من النظام القديم. لدي برنامج نصي من نوع python يقوم بإنشاء مسارات مختلفة وفقًا لأعمدة db (أي أن كل مؤسسة لديها الآن مجلدها الخاص في دلو معين) ، لذلك لا يمكنني الاعتماد على أمر المزامنة. يمكنني تشغيل برنامج نصي لإجراء عمليات ترحيل جزئية إذا كان هناك نوع من المعلمات متاحًا.

+1

هذا مطلوب بشدة. لماذا لم يكن هناك بالفعل؟

+1

+10

أي تحديث بخصوص هذه الميزة؟ شكرا لك

أيضا الإدلاء بصوت لهذه الميزة من فضلك!

+1

+1

+1

++ 1

أي تحديثات على هذا؟

+1

لا أصدق أنه لا يزال ليس شيئًا. إنشاء وحدة تخزين غير قابلة للتغيير على S3 أقرب إلى المستحيل :(

لقد بدأنا البيانات المنسوخة من حاوية S3 إلى حامل Linux المحلي والحجم في الوجهة أقل بحوالي 40 جيجا بايت من S3 Bucket. ابحث عن طرق لنسخ المفقود فقط. يبدو أنه لا توجد طريقة سهلة للقيام بذلك بدلاً من نسخ الكل ..

أحد خيارات aws s3 sync التي قد تحقق شيئًا مشابهًا هي العلامة المنطقية --size-only ، والتي ستتجاوز الوجهة فقط إذا اختلف الحجم بين المصدر وكائن الوجهة ،

 --size-only (boolean) Makes the size of each key the only criteria used
       to decide whether to sync from source to destination.

الأمر الذي استخدمته ،

aws s3 sync s3://<source bucket> s3://<destination bucket> --size-only 

_Important_: اقترح بقوة تشغيل الأمر أعلاه باستخدام العلامة المنطقية --dry-run أولاً ، لمعرفة ما ينوي هذا الأمر القيام به قبل تشغيله بالفعل ، خاصةً إذا كان يتضمن أنظمة الإنتاج الخاصة بك. هذا ناتج عن وفرة من الحذر.

لا يساعدني ، في انتظار معالجة رقم 5456 من قبل DH

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات