使用scp从远程服务器拷贝文件到本地时报No such file or directory错误
报错原因
- 路径含空格未做特殊处理:你使用的命令中,远程路径
/path to the file/filename和本地路径/path to the local directory/都包含空格,shell执行命令时会默认把空格作为参数分隔符,导致传给scp的路径被拆分为多个不完整的片段,最终识别不到对应文件。即使路径是通过pwd命令获取的,直接复制到命令中不处理空格也会触发该报错。 - 其他可能原因:
- 远程服务器用户名、地址填写错误,或登录用户对远程文件无读取权限
- 本地目标路径的父目录不存在,或当前用户对该路径无写入权限
- 路径包含
~、&、*等特殊字符,被shell提前解析后破坏了路径完整性
解决方案
核心解决方法(针对空格问题)
- 方案1:给完整路径加引号
将远程路径整体、本地路径整体分别用单引号包裹,阻止shell解析路径内的空格:scp 'username@remoteserver.xxx:/path to the file/filename' '/path to the local directory/' - 方案2:转义路径内的空格
在路径中每个空格前添加反斜杠\转义:scp username@remoteserver.xxx:/path\ to\ the\ file/filename /path\ to\ the\ local\ directory/
兜底排查操作
如果处理完空格后仍报错,按以下步骤验证:
- 登录远程服务器,执行
ls '完整远程文件路径',确认路径真实存在且当前用户有读取权限 - 在本地终端执行
cd '完整本地目标路径',确认路径存在且当前用户有写入权限 - 检查路径中是否有其他特殊字符,统一用引号包裹路径即可避免解析错误
内容的提问来源于stack exchange,提问作者Sindhu
相关产品推荐
相关产品推荐

