كيفية استخدام الأمر scp على Linux

النقاط الرئيسية

  • SCP هي طريقة آمنة وبسيطة لنسخ الملفات بين أجهزة كمبيوتر Linux باستخدام SSH. وهي سهلة الاستخدام ويمكن أن تكون وسيلة آمنة لنقل الملفات.
  • تم اعتبار SCP قديمًا منذ إصدار OpenSSH 8.8، وتستخدم التطبيقات الحديثة بروتوكول SFTP لنقل الملفات بشكل افتراضي. ومع ذلك، يظل بناء الجملة كما هو.
  • على الرغم من أن rsync مفضل على scp، إلا أن scp لا يزال خيارًا مناسبًا لنسخ الملفات بين أجهزة الكمبيوتر على شبكة مستقلة. يجب تشغيل SSH على جميع أجهزة الكمبيوتر المشاركة في النقل.



ال scp يجعل الأمر نسخ الملفات بين أجهزة كمبيوتر Linux أمرًا سهلاً وآمنًا. فهو يستخدم أمان SSH، ولكن الأفضل من ذلك كله أنه بسيط. إذا كنت تستطيع استخدام cp، يمكنك استخدام scp.


ما هو scp وبروتوكول النسخ الآمن؟

دعونا نحدد بعض المصطلحات: هناك SCP وهناك scp. يشير الحرف الكبير SCP إلى بروتوكول النسخ الآمن.الأحرف الصغيرة scp تعني آمن cpبعبارة أخرى، SCP هو بروتوكول و scp هو برنامج.

scp تم تصميمه ليكون وسيلة آمنة ومأمونة لنسخ الملفات بين أجهزة كمبيوتر Linux البعيدة. ويستخدم SSH لإنشاء اتصالات آمنة. SSH، أو Secure Shell، هو بروتوكول شبكة تشفير يستخدم غالبًا للوصول إلى أجهزة كمبيوتر Linux البعيدة وتسجيل الدخول إليها. في توزيعات Linux، يتم توفير وظيفة SSH بواسطة OpenSSH.


إن SCP قديم بعض الشيء، وقد تم التعبير عن مخاوف بشأن استخدامه في الوقت الحاضر. منذ إصدار OpenSSH 8.8، تم اعتبار SCP قديمًا. التطبيقات الحديثة لـ scp يتم استخدام بروتوكول نقل الملفات الآمن افتراضيًا. لا يزال يتم استخدام SSH للاتصال الآمن، ولكن يتم التعامل مع عمليات نقل الملفات بواسطة SFTP. كل هذا غير مرئي ويحدث بطريقة سحرية تحت الغطاء، ويتم نقل الملفات عبر SSH. scp لقد ظل بناء الجملة كما هو.

الrsyncالبرنامج مفضل على scp ولكن قد تواجه جهاز كمبيوتر لا يحتوي على rsync مثبتًا، ولا تتمتع بامتيازات الجذر، مما يعني أنه لا يمكنك المضي قدمًا وتثبيته. لنسخ الملفات من جهاز كمبيوتر إلى آخر على شبكة مستقلة، scp إنه جيد تمامًا. scp لكي يعمل هذا، يجب تشغيل SSH على كافة أجهزة الكمبيوتر التي ستنسخ منها وإليها.

لرؤية إصدار OpenSSH المثبت على جهاز الكمبيوتر الخاص بك، اكتب:

ssh -V

الحصول على نسخة OpenSSH


نسخ ملف واحد باستخدام scp

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

لإرسال ملف يسمى “sample.txt” إلى جهاز كمبيوتر يسمى “fedora-34” على الشبكة المحلية، يكون بناء الجملة على النحو التالي:

scp ./sample.txt dave@fedora-34.local:/home/dave/Downloads/

الحصول على نسخة OpenSSH

يتكون الأمر من:


  • إس سي بي:أمر scp
  • ./sample.txt:الملف الذي سنرسله موجود في الدليل الحالي.
  • ديف@:حساب المستخدم على الكمبيوتر البعيد الذي سنرسل الملف إليه.
  • فيدورا-34. محلي:اسم الشبكة للكمبيوتر البعيد.
  • :/home/dave/التنزيلات/:الموقع الذي سيتم نسخ الملف إليه على الكمبيوتر البعيد. لاحظ علامة النقطتين “:” التي تفصل بين اسم الكمبيوتر والمسار.

سيُطلب منك إدخال كلمة المرور للحساب على الكمبيوتر البعيد، ثم سيتم نسخ الملف.

إذا كنت تريد أن يكون للملف اسم مختلف على الكمبيوتر البعيد، يمكنك إضافة اسم ملف إلى مسار الهدف. لنسخ نفس الملف وتسميته “different-file.txt”، استخدم بناء الجملة التالي:

scp ./sample.txt dave@fedora-34.local:/home/dave/Downloads/different-file.txt

الحصول على نسخة OpenSSH


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

إذا لم يكن الكمبيوتر المستهدف يستخدم منفذ SSH الافتراضي 22، فيمكنك استخدام -P (رقم المنفذ) خيار لتوفير رقم المنفذ المناسب.

استرجاع ملف واحد

لنسخ ملف من خادم بعيد، ما عليك سوى وضع الخادم البعيد كمصدر، ووضع المسار المحلي الذي تريد نسخ الملف إليه كهدف. سننسخ ملفًا يسمى “development-plan.md” من الكمبيوتر البعيد إلى الدليل الحالي على الكمبيوتر المحلي.

scp dave@fedora-34.local:/home/dave/Downloads/development-plan.md .

الحصول على نسخة OpenSSH


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

scp dave@fedora-34.local:/home/dave/Downloads/development-plan.md ./dp-1.md

الحصول على نسخة OpenSSH

تم نسخ الملف ولكن تمت إعادة تسميته إلى اسم الملف المحدد.

ls -hl *.md

الحصول على نسخة OpenSSH

نسخ ملفات متعددة

إن نسخ ملفات متعددة في أي اتجاه أمر سهل. يمكنك إدراج عدد لا حصر له من ملفات المصدر. هنا، نقوم بنسخ ملفين بتنسيق Markdown وملف CSV.


scp ./dp-1.md ./dp-2.md ./dp-3.csv dave@fedora-34.local:/home/dave/Downloads/

الحصول على نسخة OpenSSH

يتم نسخ الملفات الثلاثة إلى الكمبيوتر البعيد. يمكنك أيضًا استخدام أحرف البدل. يقوم هذا الأمر بنفس الشيء تمامًا مثل الأمر الأخير.

scp ./dp. dave@fedora-34.local:/home/dave/Downloads/

الحصول على نسخة OpenSSH

نسخ الدلائل بشكل متكرر عبر scp

ال -r يتيح لك الخيار (recursive) نسخ أشجار الدليل بالكامل باستخدام أمر واحد. لقد وضعنا ملفين في دليل يسمى “data” وأنشأنا دليلاً يسمى “CSV” داخل دليل “data”. لقد وضعنا ملف CSV في دليل “data/CSV”.


يقوم هذا الأمر بنسخ الملفات وإعادة إنشاء بنية الدليل على الكمبيوتر البعيد.

scp -r ./data dave@fedora-34.local:/home/dave/Downloads/

الحصول على نسخة OpenSSH

نسخ الملفات بين الخوادم البعيدة

يمكنك حتى أن تعطي تعليمات scp نسخ الملفات من خادم بعيد إلى آخر. بناء الجملة بسيط للغاية. تقوم بتوفير اسم الحساب وعنوان الشبكة لخادم المصدر واسم الحساب وعنوان الشبكة لخادم الهدف. يتم نسخ الملفات من خادم المصدر ونسخها إلى الموقع على خادم الهدف.

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


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

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

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


لنسخ الملفات من حساب المستخدم “davem” على كمبيوتر Manjaro إلى حساب “dave” على كمبيوتر Fedora، عبر scp الأمر الصادر من جهاز الكمبيوتر المحلي الخاص بنا الذي يعمل بنظام التشغيل Ubuntu، يكون بناء الجملة على النحو التالي:

scp davem@manjaro20-0-1.local:/home/davem/man. dave@fedora-34.local:/home/dave/

الحصول على نسخة OpenSSH

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


الحصول على نسخة OpenSSH

افتراضيًا، يتم نسخ الملفات مباشرةً من الكمبيوتر المصدر إلى الكمبيوتر المستهدف. يمكنك تجاوز هذا باستخدام -3 خيار (ثلاثي الاتجاه).

باستخدام هذا الخيار، يتم نقل الملفات من الهدف إلى المصدر عبر الكمبيوتر المحلي لديك. ولكي يحدث ذلك، يجب أن يكون هناك وصول سلس عبر SSH من الكمبيوتر المحلي لديك إلى الكمبيوتر المستهدف.

scp -3 davem@manjaro20-0-1.local:/home/davem/man. dave@fedora-34.local:/home/dave/

الحصول على نسخة OpenSSH


لا يزال لا يوجد ما يشير إلى حدوث أي شيء، حتى عند توجيه الملفات عبر الكمبيوتر المحلي. والدليل على نجاح الأمر بالطبع هو التحقق من الكمبيوتر المستهدف.

خيارات SCP الأخرى

ال -p (الحفاظ على سمات الملف) سيحافظ على علامات إنشاء الملف الأصلي والملكية والوصول إلى الملفات المنقولة. سيكون لها نفس البيانات الوصفية مثل الملفات الأصلية على الكمبيوتر المصدر.

إذا رأيت رسائل خطأ، فحاول تكرار الأمر واستخدم -v (verbose) flag لعرض معلومات تفصيلية حول محاولة النقل. يجب أن تكون قادرًا على تحديد نقطة الفشل في الإخراج.

ال -C يقوم خيار (الضغط) بضغط الملفات أثناء نسخها وفك ضغطها عند استلامها. وهذا شيء يعود تاريخه إلى عصر الاتصالات البطيئة بين أجهزة الكمبيوتر عبر المودم. إن تقليل حجم الحمولة قد يقلل من أوقات الإرسال.


في الوقت الحاضر، من المرجح أن يستغرق ضغط الملفات وفك ضغطها وقتًا أطول من الفرق بين عمليات النقل المضغوطة وغير المضغوطة. ولكن نظرًا لأن scp من الأفضل استخدامه لنسخ الملفات بين أجهزة الكمبيوتر الموجودة على نفس الشبكة المحلية (LAN)، ولا ينبغي أن تكون سرعة النقل مصدر قلق كبير.

أضف تعليق