إصلاح خطأ SCP: ليس ملفًا عاديًا
تشير رسالة الخطأ “scp not a regular file” إلى أنك تحاول استخدام أمر `SCP` لنسخ ملف، ولكن المصدر أو الوجهة المحددة ليست ملفًا عاديًا. يُستخدم أمر `SCP` على نطاق واسع لنقل الملفات بأمان بين المضيفين عبر اتصالات SSH (Secure Shell). يتطلب هذا الأمر تحديد كل من المصدر والوجهة لعملية نقل الملفات. لذلك، يحدث الخطأ عادةً بسبب مسار ملف غير صحيح.
يمكن أن تظهر رسالة الخطأ “scp not a regular file” على أنظمة تشغيل مختلفة، بما في ذلك الأنظمة الشبيهة بـ `Unix` مثل `Linux` و `macOS` و `BSD`. يمكن أن تحدث أيضًا على أنظمة `Windows` التي تم تثبيت أمر `SCP` عليها، وعادةً ما يكون ذلك كجزء من برامج طرف ثالث مثل `PuTTY` أو `Cygwin`.
لمساعدتك في حل هذا الخطأ، قمنا بإعداد دليل استكشاف الأخطاء وإصلاحها الذي سيساعدك على معالجة هذه المشكلة بالتفصيل.
1. مشاكل بناء الجملة (Syntax)
تشتهر `Unix` و `Linux` بالالتزام الصارم بقواعد بناء الجملة (syntax) والمعايير المحددة جيدًا التي تحكم الأوامر، وبرمجة الشل (shell scripting)، وملفات التكوين. يعد اتباع بناء الجملة (syntax) المحدد أمرًا بالغ الأهمية لضمان التنفيذ الصحيح والسلوك المتوقع في أنظمة التشغيل هذه.
لذلك، إذا تم اكتشاف خلل في بناء الجملة (syntax)، يقوم النظام تلقائيًا بتنبيه المستخدم بخطأ؛ في هذه الحالة، الخطأ هو “scp: not a regular file.” هناك عدد من الاعتبارات التي يجب مراعاتها عند محاولة نسخ ملف.
1.1 التحقق من المسافات
يعد التحقق من وجود مسافات في أسماء الملفات أو الأدلة مهمة أساسية في `Unix`/`Linux`. يضمن ذلك عدم وجود مسافات بادئة أو لاحقة قد تسبب مشاكل عند العمل بالأوامر أو السكربتات.
على سبيل المثال، لنفترض سيناريو لديك فيه ملف باسم ‘my_file.txt’ موجود في الدليل ‘/home/user’. للتحقق من وجود مسافات في اسم الملف، يمكنك استخدام الأمر التالي:
ls -Q/home/user
يُستخدم الخيار `-Q` لعرض أسماء الملفات والأدلة داخل علامات اقتباس. إذا كانت هناك أي مسافات في اسم الملف، فستكون محاطة بوضوح بعلامات الاقتباس عند تشغيل هذا الأمر.
على سبيل المثال، إذا أظهر الإخراج نتيجة معينة، يجب علينا اتخاذ الإجراء اللازم
"myfile.txt"
يشير هذا إلى وجود مسافة في اسم الملف. في مثل هذه الحالات، يوصى بالتعامل مع المسافات في أسماء الملفات باستخدام أحرف خاصة أو إحاطة الاسم بعلامات اقتباس عند العمل بالأوامر أو السكربتات.
لتجنب المشاكل المحتملة المرتبطة بالمسافات في أسماء الملفات أو الأدلة، يُنصح عمومًا باستخدام أسماء ملفات لا تحتوي على مسافات
1.2 نقطتان رأسيتان مفقودتان أو زائدتان
يتطلب أمر SCP استخدام النقطتين الرأسيتين لتحديد الخادم البعيد ومسارات الملفات. على سبيل المثال، استخدام صيغة غير صحيحة مثل ‘scp user@host filepath’ بدلاً من ‘scp user@host:filepath’ يمكن أن يسبب خطأ. لذا، لتجنب الخطأ “scp ليس ملفًا عاديًا”، تأكد من الالتزام بقيود الصيغة.
1.3 خلط المصدر والوجهة
عند استخدام أمر SCP، يمكن أن يؤدي خلط مسارات المصدر والوجهة إلى حدوث أخطاء أو سلوك غير متوقع. من المهم الحفاظ على الترتيب الصحيح لضمان نقل ملف ناجح.
للتوضيح، يتبع أمر SCP الصيغة:
scp <source> <destination>.
إذا قمت بتبديل مسارات المصدر والوجهة عن طريق الخطأ، فقد يؤدي ذلك إلى نسخ الملفات في الاتجاه الخاطئ أو تشغيل خطأ “scp ليس ملفًا عاديًا” إذا كانت الوجهة غير صالحة.
على سبيل المثال، لنفترض أننا نريد نسخ ملف باسم “file.txt” من الجهاز المحلي إلى خادم بعيد:
صحيح: scp file.txt user@remote:/path/to/destination
غير صحيح: scp user@remote:/path/to/destination file.txt
الاستخدام غير الصحيح سيحاول نسخ الملف البعيد المسمى “file.txt” إلى الجهاز المحلي، مما يؤدي إلى نتائج غير مرغوبة أو خطأ. لضمان عمليات نقل ملفات سلسة، تحقق دائمًا من الترتيب الصحيح لمسارات المصدر والوجهة وحافظ عليه عند استخدام أمر SCP.
2. استخدام الخيار “-r”
سبب مواجهتك لهذا الخطأ هو أنك على الأرجح تنسخ دليلًا (مجلدًا) دون تحديد لنظام التشغيل أنك تنسخ دليلًا.
بشكل افتراضي، يتعامل SCP مع الملفات كملفات عادية، لذا يجب إضافة الخيار -r عند نسخ دليل. يحدث الخطأ “scp ليس عاديًا” عندما يحاول المستخدم نسخ دليل ولا يحدد هذا الإجراء باستخدام الخيار -r.
عندما تريد نسخ دليل كامل، بما في ذلك جميع أدلته الفرعية وملفاته، فإنك ستستخدم الخيار “-r”. بدون الخيار “-r”، سيقوم SCP بنسخ الملفات الفردية فقط، وليس الأدلة.
إليك مثال على استخدام scp مع الخيار “-r”:
scp -r /path/to/source_directory user@remote:/path/to/destination_directory
سيقوم هذا الأمر بنسخ محتويات “source_directory” وجميع أدلته الفرعية بشكل متكرر إلى “destination_directory” على الخادم البعيد.
Comments are closed.