如何使scp复制隐藏文件?

我经常使用SCP来复制文件 – 尤其是与networking有关的文件。 问题是,只要我这样做,我不能得到我的命令来复制隐藏的文件(例如.htaccess)。

我通常会调用这个:

scp -rp src/ user@server:dest/ 

这不会复制隐藏的文件。 我不想再次调用这个(通过做类似于scp -rp src/.* ... ,而且这也有点奇怪。

我没有看到任何关于“包含隐藏文件”的scp手册页。

我怎样才能做到这一点?

这应该绝对匹配隐藏的文件。 源文件末尾的/表示“该目录下的每个文件”。 尽pipe如此,testing和研究却让你失望。 这是愚蠢的行为。

“ 答案 ”是在源代码末尾添加一个点:

scp -rp src/. user@server:dest/

真正的答案是使用rsync。

你可以尝试rsync。 这更适合这个工作:

rsync -av src / user @ server:dest /

(其手册页值得一读。)

不要在源目录后面加一个斜杠。 你的代码看起来像这样:

 scp -rp src user@server:dest/ 

这将在远程机器上的“dest”下创build一个目录“src”,并包含所有隐藏的文件。 这可能不是你想要的,但它会复制隐藏的文件在src中。

以下将解决这个问题,这已经在我们的持续集成环境中进行了充分的testing

 scp -rp src/. user@server:dest/ example scp -rp /usr/src/code/. [email protected]:/usr/dest/code/ 

希望它有帮助

上述的所有scp解决scheme都不适合我。 然而,我发现以下cygwin的工作:scp -r目录/ *主机:目录'*'匹配所有可见的文件,并跳过不可见。

如果在远程机器上禁用密码login,并且唯一的login方式是通过公共密钥,那么你可以使用这个:

 $ rsync -av -s 'ssh -i /path/to/your/private/SSH/key' --progress [email protected]:/remote/source/directory/ /local/destination/directory/ 

它也复制隐藏的文件。

另外请注意,“user1”必须有权限读取这些文件,例如您不能使用此方法复制其他用户的ssh文件夹。