برنامج scp موجود منذ الأزل في حزمة ssh وهو بروتوكول نقل الملفات الآمن الأشهر من نار على علم، ولكن كما هي سنة الحياة، كل ما له بداية، له نهاية. وهذه الأيام تقترب نهاية هذا البروتوكول الشهير ونقدم لكم البدائل العصرية الأكثر تقدما وقدرة على مجاراة تطورات العصر الحديث.
بروتوكول scp مختصر لـ Secure Copy موجود منذ زمن طويل جدا ويستخدم في نقل البيانات بين الأجهزة من خلال طبقة آمنة تقاعد وبشكل شبه رسمي في شهر أبريل من العام 2019 عندما صرح مطوري OpenSSH أنه برنامج قديم ويجب استخدام بدائل أحدث منه مثل sftp أو rsync.
بسبب وجود البرنامج منذ زمن طويل جدا، الكثير من مستخدمي لينيكس يعتمدون عليه بشكل كلي في نقل البيانات بشكل آمن ولكن البرنامج متهالك ولا يتم إصدار أي تحديثات حقيقية له وبالتالي هو مجرد إضاعة لوقت المبرمجين والمستخدمين على حد سواء. بسبب العديد من المشاكل التي قد تواجهها مع هذا البرنامج تقرر عدم ارفاقه مع النسخة الثامنة من OpenSSH وهذه ستكون بداية النهاية.
في الأسطر المقبلة سنقدم شرح بسيط عن برنامج rsync ونقارن عمله مع برنامج scp ومن خلاله نقدم لكم وسيلة لبدء تعلم العمل على rsync في حال كنتم من مستخدمي scp.
نسخ ملفات من جهازك الى جهاز بعيد
في برنامج scp نستخدم الصيغة التالية:
scp file.ext [email protected]:/path/to/file/
و في برنامج rsync نستخدم نفس الصيغة:
rsync file.ext [email protected]:/path/to/file/
نسخ المجلدات
scp -r folder/ [email protected]:/path/to/folder/
و في برنامج rsync نستخدم نفس الصيغة لنسخ مجلد فيه ملفات عادية:
rsync -r folder/ [email protected]:/path/to/folder/
أما لنسخ ملفات غير عادية مثل الإختصارات، سيقوم برنامج scp بنقل الملفات كما هي مما يتسبب في توقف عملها على النظام المنسوخ اليه. أما برنامج rsync سيقوم بتخطي نسخ الملف مع عرض رسالة تحذيرية. لنسخ مجلد فيه ملفات غير اعتيادية يمكنك استخدام الأمر التالي:
rsync -a folder/ [email protected]:/path/to/folder/
الإتصال من منفذ غير قياسي
العنوان الإفتراضي لبرنامج scp هو 22 وعندما نقوم بنقل ملفات من بين الأجهزة من خلال rsync سوف يفترض هو الآخر أن المنفذ الإفتراضي هو 22.
لنقل الملفات بإستخدام منفذ غير افتراضي باستخدام scp نستخدم الأمر التالي:
scp -P 0000 file.ext [email protected]:/path/to/file/
أما في rsync يصبح الأمر معقد بعض الشيء ولكن ليس بالشكل الذي قد يمنعك من استخدام الامر:
rsync -e 'ssh -p 0000' file.ext [email protected]:/path/to/file
لماذا تترك scp وتستخدم rsync؟
سؤال ممتاز جدا. على الرغم من إحالة البرنامج الى التقاعد إلا أنه يمكنك استخدامه لسنوات في المستقبل ولكن ما الذي يدفعك بحق الى ترك scp والانتقال الى rync؟
ضغط الملفات
يمتلك برنامج rsync قدرة على ضغط الملفات خلال ارسالها وبالتالي تقليل استهلاك البيانات خلال الإرسال. هذه الخاصية تتطلب استهلاك أعلى لقدرات المعالج ولكنها قد توفر عليك الوقت والبيانات.
النقل الذكي
في حال قمت بنسخ نفس الملف الى نفس المكان أكثر من مره، لن يقوم البرنامج بعملية النسخ أكثر من مرة. البرنامج يتفحص الملفات الموجودة على الكمبيوتر المصدر والكمبيوتر الهدف ولا يقوم بعمل نسخ جديد الا اذا حصل تغيير في الملف. بالتالي في حال نسخ نفس المجلد أكثر من مرة للتأكد من نسخ جميع الملفات او في حال تعديل جزء من الملفات، سيتم نسخ الملفات الجديدة أو التي تم التعديل عليها فقط ولن يتم اعادة نسخ الملفات التي بقيت كما هي.
المزامنة
من اسم البرنامج نفهم أن البرنامج لا يقوم بالنسخ بشكل عام بل يقوم بالمزامنة. وكما يوحي لنا الاسم، البرنامج بالفعل قادر على المزامنة. عند نسخ مجلد بشكل طبيعي يمكنك اضافة الإختيار delete الى الأمر وبالتالي يكون الأمر كالتالي:
rsync -a -delete folder/ [email protected]:/path/to/folder/
ما سيقوم البرنامج بعمله هو أنه سيقوم بنسخ المجلد من الكمبيوتر المصدر الى الكمبيوتر الهدف. ثم سيقوم بنقل الملفات الموجودة في المجلد المصدر الى المجلد الهدف. في حال قمت بحذف ملفات من المجلد المصدر وقمت بتنفيذ الأمر من جديد سيتم نقل الملفات الجديدة في حال واحدة وسيتم الكتابة على الملفات التي تم تعديلها إن وجدت وبعد ذلك سيتم حذف الملفات الزائدة في المجلد الهدف والغير موجودة في المجلد المصدر.