RSYNC: كيف يمكنني المزامنة في كلا الاتجاهين؟
سؤال
أريد استخدام rsync تزامن دليلان في كلا الاتجاهين.
أشير إلى التزامن بالمعنى الكلاسيكي (ليس كيف المقصود في أدلة RSYNC):
أريد تحديث الدلائل في كلا الاتجاهين، اعتمادا على أي منهم أحدث.
هل يمكن أن يتم ذلك بواسطة RSYNC (من الأفضل في Linux-Way)?
إذا لم يكن كذلك ، فما هي الحلول الأخرى الموجودة؟
المحلول
فقط قم بتشغيله مرتين ، مع وضع "أحدث" (-u أو -update flag) زائد -T (لنسخ الوقت المعدل للملف) ، -r (للمجلدات العودية) ، و -V (لإخراج المطوّل لمعرفة ما هو عليه عمل):
rsync -rtuv /path/to/dir_a/* /path/to/dir_b
rsync -rtuv /path/to/dir_b/* /path/to/dir_a
هذا لن يتعامل مع الحذف ، لكنني لست متأكدًا من وجود حل جيد لتلك المشكلة مع التزامن الدوري فقط.
نصائح أخرى
هل تعرف تلاشي ملف مزامنة?
انسجام تام هي أداة تزامن الملفات لـ UNIX و Windows. يسمح بتخزين نسخة طبق الأصل من مجموعة من الملفات والدلائل على مضيفين مختلفين (أو أقراص مختلفة على نفس المضيف) ، وتعديلها بشكل منفصل ، ثم تحديث عن طريق نشر التغييرات في كل نسخة طبق الأصل إلى الآخر. ...
لاحظ أيضًا أنه من المرونة الفشل:
انسجام تام مرن للفشل. من الحريص على ترك النسخ المتماثلة وهياكلها الخاصة في حالة معقولة في جميع الأوقات ، حتى في حالة الإنهاء غير الطبيعي أو فشل الاتصال.
شكرا Jsight
rsync -urv --progress dir_a dir_b && rsync -urv --progress dir_b dir_a
سيؤدي ذلك إلى حدوث مزامنة ثانية مباشرة بعد انتهاء المزامنة الأولى. في حال كان هيكل الدليل ضخمًا ، فإن هذا سيوفر الوقت ، حيث لا يحتاج المرء إلى الجلوس أمام الكمبيوتر. إذا كان الهيكل ضخمًا ، فقم بإزالة الأشياء المطوورة والتقدم
rsync -ur dir_a dir_b && rsync -ur dir_b dir_a
يستخدم rsync <OPTIONS> [hostname:]source-dir [hostname:]dest-dir
فمثلا:
rsync -pogtEtvr --progress --bwlimit=2000 xxx-files different-stuff
سوف تتم مزامنة ملفات XXX مع ملفات مختلفة/xxx. إذا لم تكن ملفات مختلفة من طراز STUFF/XXX ، فسيقوم بإنشائها-أي نسخها.
-pogtEtv
- مجرد مجموعة من الخيارات للحفاظ على بيانات تعريف الملف ، بالإضافة
--progress
- إظهار تقدم المزامنة في الوقت الحقيقي - مفيد للغاية إذا قمت بنسخ الملفات الكبيرة
--bwlimit=2000
- يحدد أقصى سرعة للنسخ/المزامنة (BW = عرض النطاق الترددي)
ملاحظة RSYNC مهمة للغاية عند العمل عبر الشبكة في حالة الجهاز المحلي ، يمكنك استخدام أوامر مثل CP.
حظا طيبا وفقك الله!
أنا استخدم rsync
مع inotifywait
. عند تغيير أي ملف ، rsync
سيتم تنفيذها.
inotifywait -m --exclude "$_LOG_FILE" -r -e create,delete,delete_self,modify,moved_to --format "%w%f" "$folder"
تحتاج إلى تشغيل inotifywait
على كلا المضيف. يرجى التحقق من مثال inotifyWait
ما تحتاجه هو rclone. RCLONE ("RSYNC for Cloud Storage") هو برنامج Linux لسطر الأوامر لمزامنة الملفات والأدلة من وإلى مزودي التخزين السحابي المختلفين (Box و Dropbox و FTP وما إلى ذلك) وأنظمة الملفات المحلية. Rlone يدعم المزامنة المرآة فقط.
حل آخر أكثر رسوما والذي يتضمن مزامنة في الوقت الفعلي هو الاستخدام Freefilesync, والتي تشمل برنامج realtimsync. تدعم FreeFileSync مزامنة ثنائية الاتجاه ثنائية الاتجاه والتي تشمل معالجة الحذف.