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

نسخ المجلدات والملفات من جهاز التحكم عن بعد إلى الجهاز المحلي باستخدام SCP
Shell

نقل الملفات باستخدام SCP: دليل سريع

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

في هذا الدليل، سنستكشف كيفية استخدام SCP لنسخ المجلد البعيد المسمى foo إلى جهازك المحلي، على وجه التحديد /الصفحة الرئيسية/المستخدم/سطح المكتب. يفترض هذا البرنامج التعليمي فهمًا أساسيًا لـ SSH والأوامر الطرفية.

يأمر وصف
scp -r نسخ الدليل ومحتوياته بشكل آمن من مضيف بعيد إلى جهاز محلي بشكل متكرر.
paramiko.SSHClient() إنشاء مثيل عميل SSH في Python لتسهيل عمليات SSH.
scp.get() يستخدم عميل SCP في Python لاسترداد الملفات أو الدلائل من مضيف بعيد إلى مسار محلي.
ansible.builtin.fetch وحدة Ansible لجلب الملفات من الأجهزة البعيدة إلى الجهاز المحلي.
flat: no خيار في وحدة الجلب Ansible للحفاظ على بنية الدليل أثناء النسخ.
validate_checksum: yes يضمن سلامة الملفات المنسوخة عن طريق التحقق من صحة المجاميع الاختبارية الخاصة بهم.

فهم SCP لنقل الملفات

يوضح البرنامج النصي Shell المقدم كيفية الاستخدام scp لنسخ مجلد من خادم بعيد إلى جهاز محلي. أولاً، يقوم بتعريف المتغيرات لاسم المستخدم البعيد والمضيف والدليل، بالإضافة إلى الدليل المحلي. ثم ينفذ البرنامج النصي scp -r الأمر، الذي يرمز إلى "نسخة آمنة" ويسمح بالنسخ المتكرر للأدلة. بناء الجملة ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR} يحدد مسار المصدر، في حين ${LOCAL_DIR} يحدد مسار الوجهة على الجهاز المحلي. ويختتم النص بترديد رسالة النجاح.

يحقق برنامج Python النصي نفس الهدف ولكنه يستخدم paramiko مكتبة للتعامل مع اتصالات SSH و scp المكتبة لتنفيذ النسخة الآمنة. بعد استيراد المكتبات الضرورية، يقوم بتعيين المتغيرات للمجلدات البعيدة والمحلية. يقوم البرنامج النصي بإنشاء مثيل عميل SSH باستخدام paramiko.SSHClient() ويتصل بالخادم البعيد باستخدام connect طريقة. ثم يقوم بإنشاء مثيل عميل SCP باستخدام SCPClient(ssh.get_transport()) ويستخدم scp.get طريقة لنسخ الدليل البعيد إلى الجهاز المحلي. وأخيرًا، يقوم البرنامج النصي بإغلاق عميل SCP.

أتمتة عمليات نقل الملفات باستخدام Ansible

يعد Ansible playbook طريقة أخرى لنسخ الملفات من خادم بعيد إلى جهاز محلي. يستخدم Ansible التكوين المستند إلى YAML لتحديد المهام. يبدأ دليل التشغيل بتسمية المهمة وتحديد المضيفين، وهو في هذه الحالة المضيف المحلي. ثم يحدد مهمة لجلب مجلد بعيد باستخدام الملف ansible.builtin.fetch وحدة. ال src تحدد السمة الدليل البعيد، بينما تحدد السمة dest تحدد السمة الوجهة المحلية. ال flat: no يضمن الخيار الحفاظ على بنية الدليل أثناء النسخ.

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

استخدام SCP لنقل الملفات من جهاز التحكم عن بعد إلى الجهاز المحلي

برنامج Shell النصي لنقل ملفات SCP

# Copying a remote folder to local directory using SCP
#!/bin/bash
# Define variables
REMOTE_USER="your_username"
REMOTE_HOST="your_server_address"
REMOTE_DIR="/path/to/remote/folder"
LOCAL_DIR="/home/user/Desktop"
# Execute SCP command
scp -r ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR} ${LOCAL_DIR}
echo "Folder copied successfully to ${LOCAL_DIR}"

أتمتة عمليات نقل ملفات SCP باستخدام بايثون

برنامج Python النصي لنقل SCP الآلي

import paramiko
from scp import SCPClient
# Define variables
remote_user = "your_username"
remote_host = "your_server_address"
remote_dir = "/path/to/remote/folder"
local_dir = "/home/user/Desktop"
# Create SSH client and connect
ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.connect(remote_host, username=remote_user)
# Create SCP client and transfer files
scp = SCPClient(ssh.get_transport())
scp.get(remote_dir, local_dir, recursive=True)
scp.close()

استخدام Ansible لإدارة عمليات نقل ملفات SCP

Ansible Playbook لنقل ملفات SCP

--- 
- name: Copy folder from remote to local
  hosts: localhost
  tasks:
    - name: Copy remote folder to local directory
      ansible.builtin.fetch:
        src: "/path/to/remote/folder"
        dest: "/home/user/Desktop"
        flat: no
        fail_on_missing: yes
        validate_checksum: yes

تقنيات واعتبارات SCP المتقدمة

بالإضافة إلى عمليات نقل الملفات الأساسية، يقدم SCP العديد من الميزات والخيارات المتقدمة التي يمكن أن تكون لا تقدر بثمن للمهام الأكثر تعقيدًا. إحدى هذه الميزات هي القدرة على استخدام أحرف البدل لتحديد ملفات أو أدلة متعددة. على سبيل المثال، باستخدام scp user@remote_host:/path/to/files/*.txt /local/path/ سيتم نسخ جميع ملفات .txt من الدليل البعيد إلى الدليل المحلي. يمكن أن يؤدي ذلك إلى توفير الوقت وتبسيط سير العمل عند التعامل مع العديد من الملفات.

ميزة أخرى مفيدة هي -P الخيار الذي يسمح لك بتحديد رقم منفذ لاتصال SCP. يعد هذا مفيدًا بشكل خاص إذا كانت خدمة SSH الخاصة بك تعمل على منفذ غير قياسي. على سبيل المثال، باستخدام scp -P 2222 user@remote_host:/path/to/file /local/path/ سيتم الاتصال بالمضيف البعيد على المنفذ 2222. بالإضافة إلى ذلك، سيتم توصيل -C يمكن استخدام الخيار لضغط البيانات أثناء النقل، مما يمكن أن يقلل بشكل كبير من أوقات النقل للملفات الكبيرة. يتم تحقيق ذلك عن طريق إضافة -C إلى أمر SCP، كما هو الحال في scp -C user@remote_host:/path/to/largefile /local/path/.

أسئلة شائعة حول عمليات نقل ملفات SCP

  1. كيف يمكنني نسخ دليل كامل باستخدام SCP؟
  2. استخدم الأمر scp -r user@remote_host:/path/to/remote/dir /local/path/ لنسخ الدليل بشكل متكرر.
  3. هل يمكنني نسخ الملفات من منفذ معين باستخدام SCP؟
  4. نعم يمكنك تحديد المنفذ به scp -P port_number user@remote_host:/path/to/file /local/path/.
  5. كيف يمكنني نسخ ملفات متعددة باستخدام SCP؟
  6. استخدم أحرف البدل مثل scp user@remote_host:/path/to/files/*.txt /local/path/ لنسخ ملفات متعددة.
  7. هل من الممكن ضغط الملفات أثناء نقل SCP؟
  8. نعم أضف -C الخيار لأمر SCP الخاص بك، مثل scp -C user@remote_host:/path/to/file /local/path/.
  9. كيف أتعامل مع عمليات نقل الملفات الكبيرة باستخدام SCP؟
  10. استخدم ال -C خيار ضغط الملفات، وضمان اتصال مستقر لمنع الانقطاعات.
  11. هل يمكن أتمتة SCP باستخدام البرامج النصية؟
  12. نعم، يمكنك استخدام البرامج النصية لـ Shell، أو البرامج النصية لـ Python، أو كتب التشغيل Ansible لأتمتة عمليات نقل ملفات SCP.
  13. ماذا علي أن أفعل إذا فشلت عملية نقل SCP؟
  14. تحقق من اتصال الشبكة، وتأكد من المسار والأذونات الصحيحة، وتحقق من تكوين SSH.
  15. هل يمكن لـ SCP استئناف عملية النقل المتقطعة؟
  16. لا، SCP لا يدعم استئناف عمليات النقل. فكر في استخدام rsync لعمليات النقل القابلة للاستئناف.
  17. كيف يمكنني التأكد من سلامة الملف أثناء نقل SCP؟
  18. استخدم ال validate_checksum الخيار في Ansible أو التحقق من المجاميع الاختبارية يدويًا بعد النقل.

الأفكار النهائية حول عمليات نقل SCP:

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