将当前目录 `.` 改为另一个名称

将当前目录 `.` 改为另一个名称

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

我想将当前目录复制.到新目录(而不必知道或关心其名称)。使用scp

Bash 似乎没有问题。例如cp -r . ../new-name将生成一个新的目录副本,没有任何问题。但是scp -r . host:new-name我得到scp: error: unexpected filename: .

我使用的解决方法是使用rsync而不是scp,或者使用scp -r ../current-name而不是scp -r .。但如果能理解为什么显而易见的方法不适用于 scp 以及是否有更简单的“修复”方法,那就太好了。

另请注意,我不想将当前目录的内容复制到另一个已经存在的目录中,如scp -r ./* host:existing-dir/。目标是将当前目录本身复制到新位置(即创建一个新目录)-

答案1

根据先前的答案,罪魁祸首是CVE-2017-20685.;显然,恶意远程主机可以利用不正确的名称验证,因此禁用了 scp 路径中的支持。解决方法是将其替换.$(pwd)

答案2

您可以.使用类似${PWD}pwdreadlink -f .

scp -r "${PWD}" ${remote}:${dst_path}

答案3

scp ./* [email protected]:/targetdir

我尝试./*重新镀层-r ./,它起作用了

相关内容