كيفية استخدام أمر SCP في Linux

برنامج تعليمي سهل لمساعدتك في نقل الملفات إلى نظام بعيد من نظام Linux الخاص بك باستخدام الأمر scp.

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

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

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

في هذا البرنامج التعليمي ، سنرى أمثلة مختلفة من scp يأمر. سننظر أيضًا في بعض الخيارات المستخدمة بشكل متكرر مع امتداد scp يأمر.

الشروع في العمل مع الأمر scp

باستخدام scp أمر يمكنك نقل الملفات / الدلائل:

  • من جهازك المحلي إلى آلة بعيدة.
  • بين جهازين عن بعد.
  • من آلة بعيدة إلى جهازك المحلي.

بناء الجملة العام:

scp [خيار] [source_file_name] [user @ destination_Host]: destination_folder

دعونا نفهم السمات الأساسية لهذا الأمر واحدة تلو الأخرى.

  • [source_file_name] هذا هو الملف المصدر الذي تريد نسخه.
  • [المستخدم @ وجهة_هوست] هذا هو اسم مستخدم النظام البعيد حيث تريد نسخ الملف. يتم استخدام عنوان IP الخاص بالجهاز البعيد أيضًا في هذه السمة بعد "@' رمز.
  • [مجلد الوجهة] هذا هو الدليل الذي تريد حفظ الملف المنسوخ فيه.

ملحوظة: القولون (:) يستخدم الرمز في بناء الجملة لأنه يميز بين المواقع المحلية والبعيدة. نستخدم القولون (:) مع النظام البعيد لتحديد الدليل الذي يجب نسخ الملفات إليه. في حالة عدم تحديد الدليل الهدف ، سيتم نسخ الملفات إلى الدليل الرئيسي لمستخدم النظام البعيد.

الخيارات المستخدمة مع scp

بعض الخيارات الأكثر شيوعًا المستخدمة مع scp الأمر مذكور أدناه.

خياروصف
تسمح بضغط الملف المراد نقله
-الخامسإعطاء الإخراج المطول
-rنسخ الملفات والدلائل بشكل متكرر
-pالحفاظ على الأذونات والأوضاع وأوقات الوصول للملفات
-Pتغيير المنفذ الافتراضي المستخدم من قبل scp يأمر

سنرى أمثلة على هذه الخيارات ، في المزيد من البرنامج التعليمي.

نسخ ملف من محلي إلى نظام بعيد

scp يسمح لك بنقل الملفات من نظامك المحلي إلى نظام بعيد باستخدام الصيغة التالية. يتيح لك ذلك نقل ملفاتك أو تحميلها إلى خادم تم وضعه عن بُعد.

بناء الجملة العام:

scp [اسم_الملف] remote_user @ host: [destination_folder]

مثال:

scp apache-tomcat-9.0.8.tar.gz [email protected]: gaurav

في هذا المثال ، نقوم بنسخ ملف "apache-tomcat-9.0.8.tar.gz" من النظام المحلي إلى النظام البعيد الذي عنوان IP الخاص به هو "143.110.178.221".

في النظام البعيد ، سيتم نسخ الملف الآن في الدليل المسمى "gaurav".

انتاج:

gaurav @ ubuntu: ~ $ scp apache-tomcat-9.0.8.tar.gz [email protected]: كلمة مرور gaurav [email protected]: apache-tomcat-9.0.8.tar.gz 100٪ 9589 كيلو بايت 79.8 كيلو بايت / s 02:00 gaurav @ ubuntu: ~ $ 

دعونا نتحقق من الإخراج على النظام البعيد للملف.

الجذر @ ubuntu-s-1vcpu-1gb-blr1-01: ~ / gaurav # ls apache-tomcat-9.0.8.tar.gz root @ ubuntu-s-1vcpu-1gb-blr1-01: ~ / gaurav #

وبالتالي ، يتم نسخ الملف بنجاح إلى النظام البعيد باستخدام امتداد scp يأمر.

نسخ ملفات متعددة إلى نظام بعيد

في المثال السابق ، تعلمنا نقل ملف إلى النظام البعيد باستخدام امتداد scp يأمر. سنرى الآن طريقة نقل ملفات متعددة من نظامك المحلي إلى نظام بعيد باستخدام هذا الأمر.

بناء الجملة العام:

scp [ملف 1] [ملف 2] [ملف n] remote_username @ remote_host: [دليل محدد]

دعونا نفهم هذه العملية البسيطة بمثال.

مثال:

scp ath.html abc.txt ppa-purge_0.2.8 + bzr56_all.deb [email protected]: gaurav

هنا ، تم ذكر ملفات متعددة في الأمر المراد نسخها على النظام البعيد.

انتاج:

gaurav @ ubuntu: ~ $ scp ath.html abc.txt ppa-purge_0.2.8 + bzr56_all.deb [email protected]: كلمة مرور gaurav [email protected]: ath.html 100٪ 199 كيلوبايت 94.7 كيلوبايت / ثانية 00: 02 abc.txt 100٪ 0 0.0KB / ثانية 00:00 ppa-purge_0.2.8 + bzr56_all.deb 100٪ 4360 42.2KB / ثانية 00:00 gaurav @ ubuntu: ~ $

على النظام البعيد:

root @ ubuntu-s-1vcpu-1gb-blr1-01: ~ / gaurav # ls -l total 9800 -rw-r - r - 1 root root 0 Oct 5 08:58 abc.txt -rw-r-- r-- 1 root root 9818695 Oct 5 08:35 apache-tomcat-9.0.8.tar.gz -rw-r - r-- 1 root root 204057 Oct 5 08:58 ath.html -rw-r-- r-- 1 جذر 4360 أكتوبر 5 08:58 ppa-purge_0.2.8 + bzr56_all.deb root @ ubuntu-s-1vcpu-1gb-blr1-01: ~ / gaurav #

يتم الآن نسخ جميع الملفات الثلاثة على النظام البعيد.

نسخ دليل إلى النظام البعيد

يمكنك استخدام scp الأمر لنسخ دليل من نظامك المحلي إلى النظام البعيد. تشبه هذه العملية عملية نسخ ملف. لنسخ محتوى الدليل أيضًا ، يمكنك استخدام ملحق -r الخيار مع scp يأمر.

ال -r يستخدم الخيار لنسخ الدليل بشكل متكرر. هذا يعني أنه سيتم أيضًا نسخ جميع المجلدات الفرعية والملفات الموجودة داخل الدليل.

بناء الجملة العام:

scp -r [مسار الدليل] remote_username @ remote_host: [target_directory]

مثال:

scp -r PycharmProjects [email protected]: gaurav

انتاج:

gaurav @ ubuntu: ~ $ scp -r PycharmProjects [email protected]: كلمة مرور gaurav [email protected]: __main__.py 100٪ 623 7.8KB / s 00:00 __init__.py 100٪ 23 0.4KB / s 00 : 00 complete.py 100٪ 2929 28.1KB / s 00:00 search.py ​​100٪ 4728 38.7KB / s 00:00 uninstall.py 100٪ 2963 32.5KB / s 00:00 hash.py 100٪ 1681 21.3KB / s 00:00 check.py 100٪ 1430 16.8KB / s 00:00 config.py 100٪ 7125 50.4KB / s 00:00 show.py 100٪ 6289 49.8KB / s 00:00 download.py 100٪ 6623 48.2 كيلوبايت / ثانية 00:00 gaurav @ ubuntu: ~ $ 

باستخدام -r الخيار مع scp يقوم الأمر بنسخ جميع المجلدات الفرعية والملفات الموجودة داخل الدليل من الجهاز المحلي إلى النظام البعيد.

عرض معلومات مفصلة حول عملية scp

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

عند استخدام هذا الخيار ، يتم عرض معلومات التصحيح الكاملة حول الملف على الشاشة.

بناء الجملة العام:

scp -v [اسم_الملف] user_name @ user_host:

مثال:

scp -v apache-tomcat-9.0.8.tar.gz [email protected]: team

انتاج:

gaurav @ ubuntu: ~ $ scp -v apache-tomcat-9.0.8.tar.gz [email protected]: تنفيذ الفريق: program / usr / bin / ssh host 159.89.170.11، user root، command scp -v -t فريق OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 ، OpenSSL 1.0.2n 7 ديسمبر 2017 debug1: قراءة بيانات التكوين /home/gaurav/.ssh/config debug1: قراءة بيانات التكوين / etc / ssh / ssh_config debug1: / etc / ssh / ssh_config السطر 19: تطبيق خيارات * debug1: الاتصال بمنفذ 159.89.170.11 [159.89.170.11] 22. debug1: تم إنشاء الاتصال. debug1: key_load_public: لا يوجد مثل هذا الملف أو الدليل debug1: ملف الهوية /home/gaurav/.ssh/id_rsa type -1 apache-tomcat-9.0.8.tar.gz 100٪ 9589KB 99.8KB / s 01:36 debug1: client_input_channel_req: القناة 0 rtype exit-status response 0 debug1: القناة 0: مجانًا: جلسة العميل ، nchannels 1 debug1: fd 0 مسح O_NONBLOCK debug1: fd 1 مسح O_NONBLOCK تم التحويل: أرسل 9826736 ، تلقى 4016 بايت ، في 97.2 ثانية بايت في الثانية: إرسال 101133.9 ، تلقى 41.3 debug1: حالة الخروج 0 gaurav @ ubuntu: ~ $ 

هنا ، في الإخراج ، يمكنك أن ترى أنه يتم عرض معلومات تصحيح الملف على الجهاز الطرفي عندما يكون ملف scp يتم استخدام الأمر مع -الخامس اختيار.

نقل الملفات بين مضيفين عن بعد

يتيح لك Linux الاتصال بالعديد من المضيفين البعيدين. يمكنك نقل الملفات والدلائل بين جهازي مضيفين عن بعد باستخدام امتداد scp يأمر.

بناء الجملة العام:

scp remote_user_1 @ host_1: / [اسم_الملف] remote_user_2 @ host_2: [folder_to_save]

قد يبدو بناء الجملة أوسع قليلاً ولكنه بسيط جدًا. هنا ، الجزء الأول من الأمر يعطي مدخلات حول المستخدم البعيد من مكان نسخ الملف. نقطتان (:) و / يستخدم لتحديد اسم الملف أو اسم الدليل الذي سيتم نقله بين الجهازين البعيدين.

الجزء الثاني يعطي معلومات حول النظام البعيد الهدف حيث سيتم نسخ الملف.

مثال:

scp -r [email protected]: gaurav [email protected]: / team

هنا ، سنقوم بنسخ دليل يسمى "gaurav" بشكل متكرر من النظام المحلي إلى نظام بعيد. سيتم نسخ الملف إلى مجلد "فريق" على النظام البعيد.

انتاج:

gaurav @ ubuntu: ~ $ scp -r [email protected]: / gaurav [email protected]: / team [email protected] كلمة مرور: 1.py 100٪ 134261.3KB / s 00:00 variables.py 100٪ 377949.2 كيلو بايت / ثانية 00:00 abc.txt 100٪ 0 0.0 كيلو بايت / ثانية 00:00 ath.html 100٪ 199 كيلو بايت 41.8 ميجا بايت / ثانية 00:00 gaurav @ ubuntu: ~ $

هنا ، استخدمنا ملف scp الأمر على النظام المحلي لنقل دليل يسمى "gaurav" من خادم بعيد إلى آخر.

انقل الملفات من النظام البعيد إلى نظامك المحلي

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

بناء الجملة العام:

scp remote_username @ user_host: /files/file.txt / [folder_of_local_system]

انتاج:

gaurav @ ubuntu: ~ $ scp [email protected]: how.txt. كلمة مرور [email protected]: how.txt 100٪ 11 0.1KB / s 00:00 gaurav @ ubuntu: ~ $

هنا ، قمت بتنزيل (نسخ) الملف من الخادم البعيد إلى دليلي الرئيسي. ومن ثم ، فقد استخدمت النقطة (.) للتحديد في الأمر لنسخ الملف إلى دليلي الرئيسي.

إخراج العينة:

gaurav @ ubuntu: ~ $ ls -l how.txt -rw-r - r-- 1 gaurav gaurav 11 أكتوبر 6 09:49 how.txt gaurav @ ubuntu: ~ $ 

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

بنفس الطريقة ، يمكنك تنزيل ملفات أو أدلة متعددة من الخادم البعيد باستخدام ملف scp الأمر مع الخيارات المناسبة.

ضغط الملفات لإجراء عمليات نقل أسرع

في بعض الأحيان ، قد يستغرق نقل الملفات الكبيرة وقتًا طويلاً. يمكن معالجة هذه المشكلة أثناء استخدام scp الأمر مع (الأحرف الكبيرة ج) اختيار.

باستخدام الخيار ، يضغط الملفات ذات الحجم الأكبر مما يسهل النقل الأسرع وبالتالي يوفر الوقت.

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

بناء الجملة العام:

scp -C [اسم_الملف] user_name @ user_host: [target_folder]

دعونا نرى مثالاً مقارناً لفهم الاختلاف.

التحويل بدون خيار C:

gaurav @ ubuntu: ~ $ scp -rv dlink [email protected]: تنفيذ الفريق: program / usr / bin / ssh host 68.183.82.183 ، جذر المستخدم ، الأمر scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3 ، OpenSSL 1.0.2n 7 ديسمبر 2017 debug1: قراءة بيانات التكوين / home/trinity/.ssh/config debug1: قراءة بيانات التكوين / etc / ssh / ssh_config debug1: / etc / ssh / ssh_config line 19: تطبيق خيارات * debug1 : الاتصال بـ 68.183.82.183 [68.183.82.183] المنفذ 22. debug1: تم إنشاء الاتصال. debug1: client_input_channel_req: قناة 0 نوع رد حالة الخروج 0 تصحيح 1: القناة 0: مجاني: جلسة عميل ، nchannels 1 debug1: fd 0 مسح O_NONBLOCK تصحيح 1: fd 1 مسح O_NONBLOCK تم التحويل: أرسل 7516504 ، تم استلام 4008 بايت ، في 74.6 ثانية بايت في الثانية: إرسال 100693.7 ، استلام 53.7 تصحيح 1: حالة الخروج 0 gaurav @ ubuntu: ~ $ 

مما سبق يمكننا أن نرى أن الوقت المطلوب للنقل هو 74.6 ثانية. سنحاول نقل نفس الملف باستخدام الخيار -C ونلاحظ الفرق.

التحويل مع خيار C:

gaurav @ ubuntu: ~ $ scp -Crv dlink [email protected]: تنفيذ الفريق: program / usr / bin / ssh host 68.183.82.183 ، جذر المستخدم ، الأمر scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3 ، OpenSSL 1.0.2n 7 ديسمبر 2017 debug1: قراءة بيانات التكوين / home/trinity/.ssh/config debug1: قراءة بيانات التكوين / etc / ssh / ssh_config debug1: / etc / ssh / ssh_config line 19: تطبيق خيارات * debug1 : الاتصال بـ 68.183.82.183 [68.183.82.183] المنفذ 22. debug1: تم إنشاء الاتصال. . . webupload.img 100٪ 1834KB 98.7KB / s 00:18 أوضاع إرسال الملفات: C0664 1877552 router.img المغسلة: C0664 1877552 router.img router.img 100٪ 1834KB 100.3KB / s 00:18 المغسلة: E أوضاع ملف الإرسال: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip Sink: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip DSL-2750U-Release-IN-T-01.00.07.zip 100٪ 3666 كيلو بايت 218.5 كيلو بايت / ثانية 00:16 حوض: E debug1: client_input_channel_req: قناة 0 rtype exit-status response 0 debug1: channel 0: free: client-session، nchannels 1 debug1: fd 0 مسح O_NONBLOCK debug1: fd 1 مسح O_NONBLOCK تم التحويل: إرسال 7518864 ، استلام 3828 بايت ، في 51.0 ثانية بايت في الثانية: إرسال 100245.4 ، استلام 51.0 تصحيح أخطاء 1: حالة الخروج 0 تصحيح 1: ضغط صادر: بيانات خام 7511925 ، مضغوط 7513136 ، عامل 1.00 debug1: ضغط وارد: بيانات خام 1467 ، مضغوط 999 ، العامل 0.68 gaurav @ ubuntu: ~ $

هنا ، يمكننا بسهولة ملاحظة ذلك باستخدام الخيار مع scp لقد سمح لنا الأمر بضغط الملف عبر الشبكة مما يثبت أنه خيار يوفر الوقت.

استخدام منفذ ssh مختلف لنقل الملفات

أثناء استخدام ملف scp أمر المنفذ الافتراضي الذي تم نشره هو المنفذ 22. للمستخدم حرية تخصيص اختيار المنفذ هذا. يمكنك استعمال ال -P (الخيار P الكبير) مع scp الأمر لاستخدام المنفذ الذي تختاره.

بناء الجملة العام:

cp -P [new_port_number] [file_name / directory_name] remote_user @ host: [destination_folder]

مثال:

scp -P 4248 dlink [email protected]: team

باستخدام الأمر أعلاه ، سيتم نقل الملف إلى الخادم البعيد. لكن هذه المرة ، سيكون المنفذ المستخدم المنفذ 4248 بدلا من الافتراضي المنفذ 22.

استنتاج

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