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

نشرت: 2022-06-28
محطة لينكس على شاشة كمبيوتر محمول.
fatmawati achmad zaenuri / Shutterstock.com

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

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

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

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

كيفية إعداد سطح المكتب البعيد على Ubuntu
ذات صلة كيفية إعداد سطح المكتب البعيد على أوبونتو

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

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

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

 ssh -V 

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

نسخ ملف واحد

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

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

 scp ./sample.txt [email protected]: / home / dave / Downloads / 

نسخ ملف واحد إلى كمبيوتر بعيد

الأمر مؤلف من:

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

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

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

 scp ./sample.txt [email protected]: /home/dave/Downloads/different-file.txt 

نسخ ملف واحد إلى كمبيوتر بعيد باسم جديد

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

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

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

لنسخ ملف من خادم بعيد ، ما عليك سوى وضع الخادم البعيد كمصدر ، ووضع المسار المحلي حيث تريد نسخ الملف كهدف. سنقوم بنسخ ملف يسمى "development-plan.md" من الكمبيوتر البعيد إلى الدليل الحالي على الكمبيوتر المحلي.

 scp [email protected]: /home/dave/Downloads/development-plan.md. 

نسخ ملف واحد من خادم بعيد إلى الدليل الحالي للكمبيوتر المحلي

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

 scp [email protected]: /home/dave/Downloads/development-plan.md ./dp-1.md 

نسخ ملف واحد من خادم بعيد إلى الدليل الحالي للكمبيوتر المحلي باسم جديد

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

 ls -hl * .md 

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

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

 scp ./dp-1.md ./dp-2.md ./dp-3.csv [email protected]: / home / dave / Downloads / 

نسخ عدة ملفات مسماة إلى كمبيوتر بعيد

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

 scp ./dp . [email protected]: / home / dave / Downloads / 

نسخ ملفات متعددة إلى كمبيوتر بعيد باستخدام أحرف البدل في اسم الملف

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

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

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

 scp -r ./data [email protected]: / home / dave / Downloads / 

نسخ شجرة دليل إلى كمبيوتر بعيد

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

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

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

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

كيفية إنشاء وتثبيت مفاتيح SSH من Linux Shell
ذات صلة كيفية إنشاء وتثبيت مفاتيح SSH من Linux Shell

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

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

لنسخ الملفات من حساب مستخدم "davem" على كمبيوتر Manjaro إلى حساب "dave" على كمبيوتر Fedora ، عبر أمر scp صادر من كمبيوتر Ubuntu المحلي ، تكون الصيغة كما يلي:

 scp [email protected]: / home / davem / man . [email protected]: / home / dave / 

نسخ الملفات من خادم بعيد إلى آخر.

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

تم استلام الملفات من كمبيوتر Manjaro على كمبيوتر Fedora

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

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

 scp -3 [email protected]: / home / davem / man . [email protected]: / home / dave / 

نسخ الملفات من خادم بعيد إلى آخر عبر الكمبيوتر المحلي

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

خيارات أخرى

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

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

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

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

ذات صلة: كيفية عمل نسخة احتياطية من نظام Linux الخاص بك باستخدام rsync