如何使用`scp`部署网站的`.htaccess`文件?

时间:2008-08-29 01:44:54

标签: .htaccess deployment scp shared-hosting

我目前正在使用以下命令上传我的网站内容:

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

除非没有发送.htaccess文件,否则这很有效。据推测,这是因为它是隐藏的。

我尝试过添加第二行来明确发送文件:

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

除非现在我必须输入两次密码,否则效果很好。

关于如何使用我的密码的1或0个条目进行部署的任何想法?

3 个答案:

答案 0 :(得分:6)

只需合并两个命令:

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

如果您想要输入0个密码,可以为ssh / scp设置public key authentication

答案 1 :(得分:4)

一些背景信息:*通配符与所谓的“点文件”(即名称以点开头的文件)不匹配。

有些shell允许你设置一个选项,这样匹配点文件,但这样做会带来很多痛苦:现在*也会匹配{ {1}}(当前目录)和.(父目录),这通常不是预期的,可能会非常令人惊讶! (..删除父目录可能不是开始一天的最佳方式......)

答案 2 :(得分:3)

请注意 - 不要尝试将带有.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