سؤال ما هي الاختلافات بين خيارات حذف rsync؟


ارى على صفحة rsync man أن هناك عددا من delete خيارات ، ولكن لا نفهم حقا الاختلافات بينهما. ما هي الاختلافات بين هذه الخيارات؟

 --del                   an alias for --delete-during
 --delete                delete extraneous files from dest dirs
 --delete-before         receiver deletes before transfer (default)
 --delete-during         receiver deletes during xfer, not before
 --delete-delay          find deletions during, delete after
 --delete-after          receiver deletes after transfer, not before
 --delete-excluded       also delete excluded files from dest dirs

101
2018-06-25 12:29


الأصل


لماذا ا --delete-before يوصف كما (default)؟ لا أستطيع أن أفهم ماذا (default) يعني. - Marco Marsala
لم يعد محددًا افتراضيًا في man صفحة لـ rsync version 3.1.2 protocol version 31. ومع ذلك ، فإن تخميني في الإصدار مع النص المقتبس هو أنه إذا كنت تستخدم فقط --delete عوضا عن --delete-WHEN، ثم كما لو كنت قد حددت --delete-WHEN أين WHEN الافتراضيات ل before. - Tom Hale


الأجوبة:


  • --del/--delete_during: حذف الملفات من dir الوجهة أثناء نسخها (يحفظ الذاكرة مقارنة بـ --delete-before: --delete-before يجعل مسح منفصل للبحث عن deleteables)

  • --delete: حذف الملفات في الدليل الوجهة إذا لم تكن موجودة في الدليل المصدر.

  • --delete-before: حذف الملفات في الدليل الوجهة قبل نسخ الملف بنفس الاسم من الدليل المصدر

  • --delete-during: حذف الملفات في الدليل الوجهة أثناء نسخ الملف بنفس الاسم من الدليل المصدر

  • --delete-delay: علامة حذف أثناء النقل ، ولكن انتظر حتى اكتمال النقل

  • --delete-after: يحذف المستلم بعد النقل ، وليس قبل ... إذا نقل جزء آخر من rsync ملفات إضافية في مكان آخر ، فستحتاج إلى ذلك بدلاً من --delete-delay، لان --delete-delay يقرر ما سيحذف في منتصف عملية النقل، بينما --delete-after يتحقق من دليل الملفات التي يجب حذفها بعد الانتهاء من كل شيء.

  • --delete-excluded: حذف الملفات من الدليل الوجهة التي تم استبعادها بشكل صريح من النقل من الدليل المصدر.

نقطة rsync لا تنسخ ، إنها أرشفة. هذا فارق مهم. تعد معالجة الملفات المحذوفة / التي تم تغييرها أمرًا بالغ الأهمية ، وفي كثير من الحالات تكون دقيقة.

ال --delete العلم على وجه الخصوص هو واحد لقد رأيت ثمل مرات عديدة. يستخدم الكثير من الأشخاص rsync لنقل الملفات إلى مساحة تخزين ذات أولوية منخفضة ، وفي هذه الحالة تريد أن تكون الملفات التي تقوم بنقلها إلى EXIST في الدليل الوجهة. هذا ليس ما يفعله الحذف: --delete يتأكد من أنه عندما تقوم بحذف ملف من الدليل المصدر ، فإنه يتم حذفه أيضًا من دليل الوجهة الخاص بك ، بحيث لا تكون وجهتك مليئة بالمحتويات غير المرغوب فيها ... بمجرد رؤية شخص يقوم بمسح النسخ الاحتياطي الخاص به عن طريق وضع محرك أقراص جديد ، وليس إيقاف تشغيل نصه rsync ليلا. رأى Script أن dir المصدر فارغًا الآن ، وحذف كل ملف في dir الوجهة ، بحيث يتطابقان.

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


101
2018-06-25 14:19



فهل - حذف و - حذف قبل نفس الشيء؟ لا يقول رجل rsync متى - حذف حذف الملفات. - ppr
ppr: يعتمد على النظام. السبب في وجود العديد من الخيارات المحددة هو حذف على Solaris! = حذف على HP-UX! = حذف على AIX! = حذف على Linux. - Satanicpuppy
عندما rsyncing دليل كامل ، هل delete-after حذف كل ملف بين المزامنة ، أو فقط بعد أن تم عكس كامل دير؟ اعتقدت delete-after كان كافيا لاحتياجاتي ولكني لم أحصل على أي مساحة على الجهاز عند النسخ الاحتياطي لأحد محركات الأقراص الخاصة بي. - Sridhar-Sarnobat
@ سريدهار سارنوبات: إما. إنها تحرك كل شيء سوف يتحرك ، وعندما يتم ذلك ، يبدأ بحذف الأشياء. إذا كنت تريد حذفه قبل نقله كل شيء ، فاستخدم - حذف - أثناء الاتصال - Satanicpuppy
بعد بعض الخبرة ، أجد ذلك delete-during لا يمنع دائما no space left on device (على لينكس). وبالتالي delete-before هي الطريقة الوحيدة المضمونة لتجنب ذلك (على سبيل المثال عند النسخ المتطابق لمحرك أقراص ممتلئ تقريبًا ، ويكون محرك الأقراص الوجهة ممتلئًا تقريبًا أيضًا). - Sridhar-Sarnobat


هناك شيئان يحدثان:

  1. من الذي حذف
  2. عندما يحدث ذلك

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

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


1
2018-06-25 12:57



أنا متأكد من أن أيا من هذه الخيارات لا علاقة لها بحذف الأشياء من المرسل جانب. كل منهم (AFAIK) تتعلق بحذف الأشياء من المتلقي جانب. أيضا ، أنت تقول: "قبل أن يتم حذف جميع الملفات ، ثم نسخ rsync على الملفات" - هل هذا صحيح؟ كنت أتوقع --delete-before لحذف فقط تلك الملفات التي يجب أن تختفي ، لا الكل الملفات! لكن أظن ذلك ممكن أن rsync حذف كل شيء ثم نقل أكثر من البيانات "الجديدة" (ربما دون تغيير) ... - Quuxplusone
آه ، "الحذف من جانب المرسل" هو بدعم من rsync ، ولكن اسم هذا الخيار هو --remove-source-files. - Quuxplusone


نقطة أخرى تستحق الذكر هي أنه إذا انتهى دليل المصدر الخاص بك /*، ثم سوف تنظر فقط rsync أولئك الملفات وليس الدليل نفسه (وبالتالي عدم وجود الملفات التي تريد حذفها على الوجهة).

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


1
2018-01-17 18:50