这是一个边缘用例,但我找不到解决方案。
我想将当前目录复制.到一个新目录,而不必知道或关心它的名称。使用scp.
Bash 似乎没有问题。egcp -r . ../new-name将生成一个新的目录副本,没有任何问题。但随着scp -r . host:new-name我得到scp: error: unexpected filename: .
我正在使用的解决方法是使用rsync代替scp,或者使用scp -r ../current-name代替scp -r .。但是很高兴理解为什么明显的方法不适用于 scp 以及是否有更简单的“修复”。
另请注意,我不想将当前目录的内容 scp 到另一个已经存在的目录,如scp -r ./* host:existing-dir/. 目标是将当前目录本身复制到新位置(即创建新目录)-
gnu*_*ard 23
根据之前的回答,罪魁祸首是CVE-2017-20685;显然,恶意远程主机可以利用不正确的名称验证,因此.禁用了对 scp 路径的支持。解决方法是替换.为$(pwd).
Att*_*tie 11
您可以.使用类似的东西扩展到完整路径${PWD},pwd或者readlink -f .
scp -r "${PWD}" ${remote}:${dst_path}
Run Code Online (Sandbox Code Playgroud)