كيف يمكنني استخدام `scp` لنشر ملف `.htaccess` الخاص بموقع الويب؟

StackOverflow https://stackoverflow.com/questions/33790

سؤال

أستخدم حاليًا الأمر التالي لتحميل محتوى موقعي:

scp -r web/* user@site.com:site.com/

يعمل هذا بشكل رائع باستثناء أنه لا يتم إرسال ملف htaccess.من المفترض أن هذا لأنه مخفي.

لقد حاولت إضافة سطر ثانٍ لإرسال الملف بشكل صريح:

scp -r web/.htaccess user@site.com:site.com/.htaccess

يعمل هذا بشكل رائع إلا أنه يتعين علي الآن إدخال كلمة المرور الخاصة بي مرتين.

هل لديك أي أفكار حول كيفية نشر هذا باستخدام إدخال واحد أو 0 فقط لكلمة المرور الخاصة بي؟

هل كانت مفيدة؟

المحلول

فقط قم بدمج الأمرين:

scp -r web/* web/.htaccess user@site.com:site.com/

إذا كنت تريد 0 إدخالات لكلمة المرور الخاصة بك، يمكنك إعدادها مصادقة المفتاح العام لSSH/SCP.

نصائح أخرى

بعض المعلومات الخلفية:ال * لا يتطابق حرف البدل مع ما يسمى بـ "ملفات النقاط" (أي.الملفات التي يبدأ اسمها بنقطة).

تسمح لك بعض الأصداف بتعيين خيار، بحيث يكون كذلك سوف مطابقة ملفات النقاط، ومع ذلك، فإن القيام بذلك يتطلب الكثير من الألم:الآن * سوف تتطابق أيضا . (الدليل الحالي) و .. (الدليل الأصلي)، وهو عادة ليس هو المقصود ويمكن أن يكون مفاجئًا تمامًا!(rm -rf * ربما لا يكون حذف الدليل الأصلي هو أفضل طريقة لبدء يوم ...)

كلمة تحذير - لا تحاول مطابقة الملفات المنقطة (مثل .htaccess) مع .* - وهذا يتطابق أيضًا بشكل غير مريح .., ، وسيؤدي إلى نسخ كافة الملفات الموجودة على المسار إلى الدليل الجذر.لقد فعلت هذا مرة واحدة (مع rm, ، لا أقل من ذلك!) واضطررت إلى إعادة بناء الخادم لأنني عبثت به /var.

@jwmittag:

لقد قمت للتو بإجراء اختبار على Ubuntu و .* يتطابق عندما أستخدمه cp.هنا مثال:

root@krash:/# mkdir a
root@krash:/# mkdir b
root@krash:/# mkdir a/c
root@krash:/# touch a/d
root@krash:/# touch a/c/e
root@krash:/# cp -r a/c/.* b
cp: will not create hard link `b/c' to directory `b/.'
root@krash:/# ls b
d  e

لو .* لم يتطابق .., ، ثم d لا ينبغي أن يكون في b.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top