4

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

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

除了不发送 .htaccess 文件之外,这很好用。据推测,这是因为它是隐藏的。

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

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

这很好用,但现在我必须输入两次密码。

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

4

3 回答 3

8

只需结合两个命令:

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

如果您想要 0 个密码条目,您可以为 ssh/scp设置公钥身份验证。

于 2008-08-29T01:47:21.317 回答
4

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

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

于 2008-08-29T02:00:22.410 回答
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

于 2008-08-29T01:58:20.747 回答