如何使用SCP从远程服务器复制文件并解决「No such file or directory」错误?
SCP提示"No such file or directory"的场景化解决方案
问题场景
通过SSH使用SCP复制文件时,反复收到错误提示:No such file or directory,排查常规路径问题后仍无法解决,最终耗时4小时找到适配特定场景的方案。
针对性解决方法
- 路径解析差异:若目标服务器默认Shell为
csh或tcsh,相对路径可能因Shell环境变量差异解析失败,直接改用绝对路径即可。比如将scp local.txt user@host:./docs/替换为scp local.txt user@host:/home/user/docs/。 - 特殊字符处理:文件名含空格、
*、?等特殊字符时,需用引号包裹路径,如scp "my file.txt" user@host:/home/user/;或在特殊字符前加反斜杠转义:scp my\ file.txt user@host:/home/user/。 - 目标目录预创建:SCP不会自动生成不存在的层级目录,复制前需确保目标路径所有目录已存在。可先通过SSH执行
mkdir -p /home/user/docs/subdir/创建目录,再执行SCP命令。 - 权限问题排查:目标目录无写入权限时,SCP可能返回路径不存在的错误而非权限错误。先测试在目标目录创建文件:
ssh user@host "touch /home/user/docs/test.txt",若提示权限错误,调整目录权限(如chmod 755 /home/user/docs/)。 - 远程Shell脚本干扰:远程服务器的
.bashrc、.cshrc等脚本若包含切换工作目录的命令(如cd /some/path),会导致SCP路径解析出错。可在脚本中添加判断,仅在交互式Shell时执行目录切换:if [[ $- == *i* ]]; then cd /my/preferred/path fi
注:以上方案针对常规排查无效的场景,可根据实际环境调整。
内容的提问来源于stack exchange,提问作者Redgard
相关产品推荐
相关产品推荐

