将当前目录 `.` scp 到另一个名称

gcb*_*gcb 10 scp

这是一个边缘用例,但我找不到解决方案。

我想将当前目录复制.到一个新目录,而不必知道或关心它的名称。使用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).

  • PS:你的意思是“$(pwd)”,对吧?(我刚刚失败了,因为 Windows 10 版本的 scp 在包含空格的文件名上出错) (3认同)

Att*_*tie 11

您可以.使用类似的东西扩展到完整路径${PWD}pwd或者readlink -f .

scp -r "${PWD}" ${remote}:${dst_path}
Run Code Online (Sandbox Code Playgroud)