برمجة

rsync

ما هو rsync؟

كتب rsync كل من Andrew Tridgell وPaul Mackerras. أول حديث مفتوح سنة 1996. الأمر يقارن مجلدين. يتخطى الملف الذي لم يتغير. للملف الذي تغيّر يقدر أن يرسل الجزء المختلف فقط. لذلك النسخة الثانية لشجرة كبيرة أقصر من الأولى. حين يذهب إلى جهاز بعيد كثيراً ما يحمل SSH الطريق. rsync ليس SSH نفسه. يحمل الملف فوقه فقط. الشرطة المائلة في آخر السطر تغيّر المعنى. وضع شرطة بعد اسم المجلد ينسخ ما في داخله. عدم وضعها يأخذ المجلد نفسه أيضاً.

فيمَ يُستخدم rsync؟

rsync للنسخة الاحتياطية ولإبقاء مجلدين متماثلين. كي لا تنسخ القرص كله كل مرة.

  • أخذ ملفات الموقع إلى خادم آخر
  • كتابة المتغير فقط في النسخة كل ليلة
  • مقارنة مجلدين
  • متابعة نسخ ملف كبير بقي نصفه

ماذا يمكن فعله باستخدام rsync؟

بـ rsync تبقي المجلد قريباً من مكان آخر. لا يشغّل البرنامج داخل الملف. يحمل البايتات فقط. --delete يحذف الملف الزائد في الجهة البعيدة. تشغيل ذلك في المجلد الخطأ يأخذ الملفات هناك. انظر أولاً بعلم التجربة الجافة. إذا كُتبت كلمة المرور داخل الأمر فقد تبقى في السجل.

هل تعلم rsync صعب؟

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

المزايا والحدود

الميزة: النسخة الثانية قصيرة والملف الذي لم يتغير لا يأتي مرة أخرى ويقدر أن يذهب إلى خادم بعيد. الحد: الحذف الخطأ يصعب إرجاعه. rsync ليس cp وليس SSH.

أفكار أساسية

المصدر مكان خروج الملف. الهدف مكان ذهابه. الفرق الجزء الذي ليس نفسه من قبل.

  • الملف الذي لم يتغير يُتخطى
  • الشرطة المائلة تغيّر معنى المجلد
  • --dry-run يُظهر فقط
  • --delete يحذف الملف الزائد في الهدف

مثال قصير

هذا الأمر يبقي داخل مجلد قريباً من مجلد آخر. لا يحذف. يكتب فقط إلى المسار الذي تُظهره.

rsync -a source/ backup/

أسئلة شائعة

  • هل rsync وcp الشيء نفسه؟ لا. cp ينسخ الملف كما هو. rsync يحاول أن يتخطى ما لم يتغير ويرسل الجزء المختلف.
  • هل rsync وSSH الشيء نفسه؟ لا. SSH يدخل جهازاً بعيداً. rsync يحمل الملف وSSH يقدر أن يحمل الطريق.
  • هل الشرطة المائلة مهمة؟ نعم. source/ يأخذ ما في الداخل. source يأخذ المجلد نفسه أيضاً.