كيف يمكنني نسخ/تكرار ملف إلى دليل آخر باستخدام SFTP؟




(2)

لقد قمت بإنشاء دليل داخل موقع SFTP وأريد نقل ملف من دليل SFTP إلى دليل آخر ولكن الأمر cp غير معتمد هناك.

كيف يمكنني تحقيق ذلك؟


لا يدعم بروتوكول SFTP الأساسي تكرار ملف بعيد.

هناك مسودة لامتداد copy-file للبروتوكول ، لكن هذا لا يدعمه سوى عدد قليل من خوادم SFTP ( ProFTPD/mod_sftp Bitvise SFTP على سبيل المثال) وعدد قليل من عملاء SFTP ( WinSCP على سبيل المثال).

بالتأكيد لا يدعمه خادم OpenSSH SFTP الأكثر انتشارًا. ولا من خلال عميل OpenSSH SFTP ( sftp ) ، أي لا يوجد أمر cp أو أي مكافئ وظيفي آخر.

البدائل:

  • إذا كان لديك وصول SSH / طرفي إلى الخادم ، فاستخدم الأمر shell cp .
  • إذا كان خادم SFTP يدعم امتداد copy-file ، فاستخدم عميل SFTP الذي يدعمه أيضًا.
  • وإلا ، فإن الخيار الوحيد هو تنزيل الملف إلى موقع مؤقت محلي وتحميل نسخته مرة أخرى إلى دليل بعيد / هدف بعيد.
    يمكن لبعض عملاء SFTP القيام بذلك نيابة عنك بشفافية واحدة (على سبيل المثال في WinSCP ، راجع خيار النسخ عبر نسخة مؤقتة محلية في مربع الحوار تكرار ).

(أنا مؤلف WinSCP)


يمكنك استنساخ الدلائل عن بعد باستخدام WinSCP في وضع سطر الأوامر ( winscp /console ). دعونا نتخيل أن لديك البنية التالية على خادم SFTP البعيد:

theDestinationDirectory/
  |-file1.txt
  |-file2.txt

يمكنك نسخ هذا الدليل البعيد باستخدام البرنامج النصي التالي (في وحدة تحكم WinSCP):

open sftp://myUsername:[email protected]
mkdir theDestinationDirectory
call cp theSourceDirectory/* theDestinationDirectory/ -r

ثم يمكنك التحقق من أن نسختك قد تمت بشكل صحيح (في وحدة تحكم WinSCP):

ls theDestinationDirectory

drwxr-sr-x   2 uid12345 gid12345        37 Jul 29 23:50:24 2016 .
drwxr-sr-x   6 uid12345 gid12345        75 Jul 29 23:50:11 2016 ..
-rw-r--r--   1 uid12345 gid12345     29670 Jul 29 23:50:24 2016 file1.txt
-rw-r--r--   1 uid12345 gid12345     12432 Jul 29 23:50:24 2016 file2.txt

لاحظ أنه كما كتب Martin Prikryl ، قد لا يتم دعم هذا بواسطة جميع خوادم SFTP ... (على الأقل يتم دعمه بواسطة لي)