لمقارنة مجلد مشروع على جهاز Mac الخاص بك بنسخة موجودة على خادم يمكن الوصول إليه عبر SSH، استخدم rsync في وضع التجربة (dry-run). يمكنه إدراج الملفات التي تبدو غير متزامنة دون نقلها أو تعديلها. لمعرفة الفروق النصية داخل ملف واحد، استخدم diff بعد جلب كلا الإصدارين إلى جهاز Mac. يركز هذا الدليل على مقارنة دليل مشروع محلي مع دليل بعيد؛ ولا يفترض أن النسختين متزامنتان أو يحدد لك الإصدار الذي يجب اعتماده.
تحقق من الاتصال والمسارات أولاً
افتح Terminal على جهاز Mac الخاص بك. توثق Apple بروتوكول SSH كأحد البروتوكولات التي يمكن لـ Terminal استخدامها للاتصال بالخوادم البعيدة؛ وباستخدام عميل سطر الأوامر ssh، يمكنك أيضًا تشغيل أمر على الجهاز البعيد. ستحتاج إلى اسم الخادم، وحساب بعيد، وإمكانية الوصول إلى دليل المشروع، ومصادقة SSH صالحة للعمل. يشرح دليل Terminal من Apple ودليل ssh الخاص بـ OpenBSD خيارات الاتصال هذه.
استبدل الحساب والمضيف وأسماء المجلدات التوضيحية أدناه بما يطابق بياناتك. يجب أن يحتوي الجهاز البعيد على rsync مثبتًا ومتاحًا لحسابك. يعرض الأمر rsync --version الإصدار المحلي؛ ويمكن التحقق من الإصدار البعيد باستخدام ssh user@host rsync --version.
ssh user@server.example.com
إذا فشل تسجيل الدخول، فقم بحل مشكلة المضيف أو المصادقة أو الشبكة أو الوصول قبل مقارنة الملفات. ثم حدد دليلي المشروع بدقة. في الأمثلة، المسار المحلي هو /Users/you/Projects/site والمسار البعيد هو /srv/projects/site. احتفظ بالشرطة المائلة في نهاية مسار كل دليل لمقارنة محتويات الأدلة بنفس الترتيب النسبي. ضع المسارات التي تحتوي على مسافات بين علامتي اقتباس.
معاينة الملفات التي تختلف
قم بتشغيل هذا الأمر من جهاز Mac الخاص بك:
rsync -rnic --out-format='%i %n' \
user@server.example.com:/srv/projects/site/ \
/Users/you/Projects/site/
المسار البعيد هو المصدر ومسار Mac هو الوجهة. يستخدم الأمر التكرار الحلقي (-r)، وإخراج التغييرات المفصلة عنصرًا بعنصر (-i)، ومقارنة المجموع الاختباري (checksum) عبر (-c)، ووضع التجربة (-n). تشير وثائق Rsync إلى أن وضع التجربة (dry run) لا يُجري أي تغييرات؛ ويوفر الإخراج المفصل قائمة موجزة بالتحديثات المقترحة. في هذا الاتجاه، يعني العنصر المدرج أن المصدر البعيد يختلف عن الوجهة المحلية أو مفقود فيها. يوثق دليل rsync أوضاع التجربة والتغييرات المفصلة ومقارنة المجموع الاختباري.
يقرأ وضع المجموع الاختباري (Checksum) بيانات الملفات على كلا الجانبين لمقارنة المحتوى، لذلك قد يستغرق وقتًا أطول ويستهلك المزيد من عمليات القراءة والكتابة على القرص (I/O) مقارنة بالفحص السريع الافتراضي لـ rsync، والذي يعتمد على حجم الملف ووقت التعديل. استخدم -nic عندما تكون المحتويات مهمة حتى لو لم تُظهر الطوابع الزمنية أو الأحجام أي تغيير. للحصول على فحص أولي أسرع، استخدم -rin بدلاً من ذلك؛ حيث يُبلغ عن التغييرات التي يكتشفها الفحص السريع لـ rsync، ولكنه قد يغفل عن تغييرات المحتوى إذا تطابق كل من الحجم ووقت التعديل. لا تعرض المعاينة الأسطر المعدلة داخل الملفات.
اعكس المسارين إذا كان يجب التعامل مع نسخة Mac على أنها المصدر والنسخة البعيدة على أنها الوجهة. الاتجاه مهم: تعكس علامات rsync المفصلة ما سيقوم بتحديثه في الوجهة. احتفظ بالخيار -n أثناء فحص النتائج. ولا تقم بإزالته إلا إذا قررت عن قصد إجراء عملية النقل؛ فإن rsync هي أداة نسخ وليست أداة دمج ثنائي الاتجاه.
قراءة محتويات الفروق في ملف نصي
لفحص التغييرات الفعلية في الأسطر، قارن بين ملفين محليين باستخدام diff -u. انسخ أولاً أحد الإصدارين إلى موقع مؤقت منفصل باستخدام طريقة النقل المعتمدة العادية لديك، أو استخدم نسخة مشروع موجودة لديك بالفعل محليًا. ثم قم بتشغيل:
diff -u \
"/Users/you/Projects/site/config/settings.yml" \
"/Users/you/Desktop/settings-remote.yml"
يضع الإخراج الموحد (Unified output) سياقًا للأجزاء المجاورة حول الأسطر المعدلة. الأسطر المسبوقة بـ - مأخوذة من الملف الأول؛ والأسطر المسبوقة بـ + مأخوذة من الملف الثاني. diff هي أداة لمقارنة المحتوى، لذا لن تنقل التعديلات أو تدمجها. بالنسبة لشجرة دليل محلي كاملة، يقوم diff -ru local-folder remote-folder بمقارنة الملفات المتطابقة تكراريًا، ولكن يجب أن يكون المجلد البعيد متصلاً (mounted) أو متاحًا بأي شكل آخر كمسار محلي. يشرح دليل GNU Diffutils المقارنة التكرارية للأدلة والإخراج الموحد؛ وقد تختلف خيارات أوامر macOS، لذا راجع man diff على جهاز Mac الخاص بك إذا تم رفض أحد الخيارات. دليل GNU Diffutils.
فهم الحدود قبل اتخاذ أي إجراء
تعني معاينة rsync النظيفة أنه لم يتم اكتشاف أي فروق باستخدام قواعد المقارنة والمسارات التي حددتها. وهي لا توفر مراجعة جنبًا إلى جنب، أو تحل التعديلات المتعارضة، أو تضمن تطابق كل خصائص نظام الملفات. يقارن خيار المجموع الاختباري (checksum) في rsync محتويات الملفات، بينما تعتمد البيانات الوصفية (metadata) مثل الأذونات والطوابع الزمنية على الخيارات التي تختارها. كذلك، قد تتغير هياكل شجرة الملفات بعد المعاينة إذا قام شخص ما بتعديل أي من النسختين.
إذا كان النظام البعيد لا يوفر إمكانية الوصول عبر SSH أو rsync، فلن يعمل سير العمل هذا كما هو موضح. استخدم طريقة وصول مسموحًا بها من قبل ذلك النظام، وأنشئ نسختين محليتين يمكن الوصول إليهما، ثم قارنهما باستخدام diff أو أداة مقارنة مناسبة أخرى. لا تقم بتشغيل أمر نقل بدلاً من المعاينة ما لم تكن تقصد تطبيق سلوك التحديث من المصدر إلى الوجهة.
المصادر
الاتصال بالخوادم في تطبيق الوحدة الطرفية على الـ Mac — دعم Apple
ssh(1) — صفحات دليل OpenBSD — OpenBSD
صفحة دليل rsync(1) — The Samba Project
مقارنة الملفات ودمجها — مشروع GNU