我现在正在尝试将整个目录从一个集群镜像复制到另一个集群。但是当名称中有空格时它就会失败,并且我不知道如何解决这个问题,因为 scp 似乎认为我正在复制多个文件。我正在使用一个变量来标记我需要的路径,因此似乎通过添加反斜杠不容易解决它。
这是我正在使用的代码:
if ssh user@ip -i key test -d "'$current_dir'"; then
echo "Directory exists. Ready to copy $dir_name."
scp -i key -r "$current_dir/$dir_name" user@$ip:"$current_dir/$dir_name"
else
echo Directory doesn\'t exist. Making a new directory.
ssh user@$ip -i key mkdir "'$current_dir'"
scp -i key -r "$current_dir/$dir_name" user@$ip:"$current_dir/$dir_name"
fi
我尝试过单引号、双引号和单引号加双引号,但都不起作用。有人能帮我解决吗?顺便说一句,代码中的 mkdir 语句是有效的。
最佳答案
如detailed in this answer ,您需要使用两组引号,因为文件名被解释两次:一次由本地计算机解释,一次由远程计算机解释。
scp -i key -r "$current_dir/$dir_name" user@$ip:"'$current_dir/$dir_name'"
关于bash - 如何 scp 名称中带有空格的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33903171/