Как я могу использовать `scp` для развертывания файла` .htaccess` на сайте? - PullRequest
2 голосов
/ 29 августа 2008

Я сейчас использую следующую команду для загрузки контента моего сайта:

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

Это прекрасно работает, за исключением того, что файл .htaccess не отправляется. Предположительно, это потому, что оно скрыто.

Я попытался добавить вторую строку для явной отправки файла:

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

Это прекрасно работает, за исключением того, что теперь я должен дважды ввести свой пароль.

Есть мысли о том, как сделать это развертывание, используя только 1 или 0 записей моего пароля?

Ответы [ 3 ]

6 голосов
/ 29 августа 2008

Просто объедините две команды:

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

Если вы хотите ввести 0 паролей, вы можете настроить аутентификацию с открытым ключом для ssh / scp.

4 голосов
/ 29 августа 2008

Некоторая справочная информация: подстановочный знак * не соответствует так называемым «точечным файлам» (то есть файлам, имя которых начинается с точки).

Некоторые оболочки позволяют вам установить опцию, так что будет соответствовать точечным файлам, однако это требует большой боли: теперь * также будет соответствовать . ( текущий каталог) и .. (родительский каталог), что, как правило, не то, что предназначено, и может быть довольно удивительным! (rm -rf * удаление родительского каталога, вероятно, не лучший способ начать день ...)

3 голосов
/ 29 августа 2008

Предупреждение: не пытайтесь сопоставить точечные файлы (например, .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.

...