You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SFTP递归上传时子目录文件被传至根目录,问题排查求助

SFTP递归上传目录结构异常问题的解决

问题描述

本地Windows目录结构:

- install_k3s.yaml
- files
  - registries.yaml

执行SFTP命令:

put -r *

远程Linux服务器得到异常结构:

- install_k3s.yaml
- files
- registries.yaml

registries.yaml未被放入files文件夹,手动创建远程files目录后重新执行命令,问题依旧。

原因分析

问题出在Windows环境下SFTP客户端对通配符*的解析逻辑:
Windows的SFTP(比如OpenSSH自带的sftp.exe)会将*展开为当前目录下的所有文件和子目录条目,然后逐个执行递归上传。但处理子目录内的文件时,它不会自动保留父目录层级,而是直接将文件传到远程当前工作目录,同时还会创建一个空的files目录,最终导致结构混乱。

解决办法

方法1:上传本地当前目录而非使用通配符

在SFTP会话中执行:

put -r .

该命令会完整递归上传本地当前目录的所有内容,包括子目录结构,远程服务器会完全复刻本地的目录层级。

方法2:明确指定要上传的条目

分开上传单个文件和子目录,规避通配符的逻辑问题:

put install_k3s.yaml
put -r files

这样files目录及其内部的registries.yaml会被完整上传到远程服务器,保留原有结构。

方法3:确保使用最新版SFTP客户端

如果使用的是Windows自带的OpenSSH sftp,更新到最新版本,旧版本可能存在通配符处理的兼容性bug。


内容的提问来源于stack exchange,提问作者PrestonDocks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 04:01:11