我经常使用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文件夹。