Как я могу использовать `scp` для развертывания файла `.htaccess` веб-сайта?
-
09-06-2019 - |
Вопрос
В настоящее время я использую следующую команду для загрузки содержимого моего сайта:
scp -r web/* user@site.com:site.com/
Это прекрасно работает, за исключением того, что файл .htaccess не отправляется.Предположительно, это потому, что оно скрыто.
Я попытался добавить вторую строку для явной отправки файла:
scp -r web/.htaccess user@site.com:site.com/.htaccess
Это прекрасно работает, за исключением того, что теперь мне приходится вводить пароль дважды.
Есть какие-нибудь мысли о том, как выполнить это развертывание, используя только 1 или 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
.