نقل الملفات باستخدام 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 المقدم كيفية الاستخدام لنسخ مجلد من خادم بعيد إلى جهاز محلي. أولاً، يقوم بتعريف المتغيرات لاسم المستخدم البعيد والمضيف والدليل، بالإضافة إلى الدليل المحلي. ثم ينفذ البرنامج النصي الأمر، الذي يرمز إلى "نسخة آمنة" ويسمح بالنسخ المتكرر للأدلة. بناء الجملة يحدد مسار المصدر، في حين ${LOCAL_DIR} يحدد مسار الوجهة على الجهاز المحلي. ويختتم النص بترديد رسالة النجاح.
يحقق برنامج Python النصي نفس الهدف ولكنه يستخدم مكتبة للتعامل مع اتصالات SSH و المكتبة لتنفيذ النسخة الآمنة. بعد استيراد المكتبات الضرورية، يقوم بتعيين المتغيرات للمجلدات البعيدة والمحلية. يقوم البرنامج النصي بإنشاء مثيل عميل SSH باستخدام ويتصل بالخادم البعيد باستخدام connect طريقة. ثم يقوم بإنشاء مثيل عميل SCP باستخدام ويستخدم طريقة لنسخ الدليل البعيد إلى الجهاز المحلي. وأخيرًا، يقوم البرنامج النصي بإغلاق عميل SCP.
أتمتة عمليات نقل الملفات باستخدام Ansible
يعد Ansible playbook طريقة أخرى لنسخ الملفات من خادم بعيد إلى جهاز محلي. يستخدم Ansible التكوين المستند إلى YAML لتحديد المهام. يبدأ دليل التشغيل بتسمية المهمة وتحديد المضيفين، وهو في هذه الحالة المضيف المحلي. ثم يحدد مهمة لجلب مجلد بعيد باستخدام الملف وحدة. ال تحدد السمة الدليل البعيد، بينما تحدد السمة تحدد السمة الوجهة المحلية. ال flat: no يضمن الخيار الحفاظ على بنية الدليل أثناء النسخ.
ال يضمن الخيار أن دليل التشغيل سوف يفشل في حالة عدم وجود الدليل المصدر، مما يوفر طبقة إضافية من معالجة الأخطاء. بالإضافة إلى ذلك، يتحقق الخيار من سلامة الملفات المنسوخة عن طريق التحقق من مجاميعها الاختبارية، مما يضمن نقل الملفات بشكل صحيح ودون تلف. يعد هذا الأسلوب مفيدًا بشكل خاص لأتمتة مهام نقل الملفات المتكررة بطريقة متسقة وموثوقة.
استخدام 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 العديد من الميزات والخيارات المتقدمة التي يمكن أن تكون لا تقدر بثمن للمهام الأكثر تعقيدًا. إحدى هذه الميزات هي القدرة على استخدام أحرف البدل لتحديد ملفات أو أدلة متعددة. على سبيل المثال، باستخدام سيتم نسخ جميع ملفات .txt من الدليل البعيد إلى الدليل المحلي. يمكن أن يؤدي ذلك إلى توفير الوقت وتبسيط سير العمل عند التعامل مع العديد من الملفات.
ميزة أخرى مفيدة هي الخيار الذي يسمح لك بتحديد رقم منفذ لاتصال SCP. يعد هذا مفيدًا بشكل خاص إذا كانت خدمة SSH الخاصة بك تعمل على منفذ غير قياسي. على سبيل المثال، باستخدام سيتم الاتصال بالمضيف البعيد على المنفذ 2222. بالإضافة إلى ذلك، سيتم توصيل يمكن استخدام الخيار لضغط البيانات أثناء النقل، مما يمكن أن يقلل بشكل كبير من أوقات النقل للملفات الكبيرة. يتم تحقيق ذلك عن طريق إضافة -C إلى أمر SCP، كما هو الحال في .
- كيف يمكنني نسخ دليل كامل باستخدام SCP؟
- استخدم الأمر لنسخ الدليل بشكل متكرر.
- هل يمكنني نسخ الملفات من منفذ معين باستخدام SCP؟
- نعم يمكنك تحديد المنفذ به .
- كيف يمكنني نسخ ملفات متعددة باستخدام SCP؟
- استخدم أحرف البدل مثل لنسخ ملفات متعددة.
- هل من الممكن ضغط الملفات أثناء نقل SCP؟
- نعم أضف الخيار لأمر SCP الخاص بك، مثل .
- كيف أتعامل مع عمليات نقل الملفات الكبيرة باستخدام SCP؟
- استخدم ال خيار ضغط الملفات، وضمان اتصال مستقر لمنع الانقطاعات.
- هل يمكن أتمتة SCP باستخدام البرامج النصية؟
- نعم، يمكنك استخدام البرامج النصية لـ Shell، أو البرامج النصية لـ Python، أو كتب التشغيل Ansible لأتمتة عمليات نقل ملفات SCP.
- ماذا علي أن أفعل إذا فشلت عملية نقل SCP؟
- تحقق من اتصال الشبكة، وتأكد من المسار والأذونات الصحيحة، وتحقق من تكوين SSH.
- هل يمكن لـ SCP استئناف عملية النقل المتقطعة؟
- لا، SCP لا يدعم استئناف عمليات النقل. فكر في استخدام rsync لعمليات النقل القابلة للاستئناف.
- كيف يمكنني التأكد من سلامة الملف أثناء نقل SCP؟
- استخدم ال الخيار في Ansible أو التحقق من المجاميع الاختبارية يدويًا بعد النقل.
يعد إتقان استخدام SCP لنقل الملفات بين الأجهزة البعيدة والمحلية مهارة أساسية لإدارة الخادم بكفاءة. من خلال استخدام نصوص shell ونصوص Python وإرشادات Ansible، يمكنك أتمتة هذه المهام وتبسيطها، مما يوفر الوقت ويقلل الأخطاء. تعمل الخيارات المتقدمة مثل النسخ العودي ومواصفات المنفذ وضغط البيانات على تعزيز تعدد استخدامات SCP. سواء بالنسبة للعمليات اليومية أو عمليات ترحيل البيانات واسعة النطاق، فإن فهم هذه التقنيات يضمن عمليات نقل آمنة وموثوقة للملفات.