Windows Junction 导致 SFTP 上传失败? 【已解决】
压缩能传、SFTP 报 SSH_FX_FAILURE?多半是 Nitro/pnpm 的目录联接被当成普通文件了
本文目录

Windows Junction 导致 SFTP 上传失败
压缩能传、SFTP 报
SSH_FX_FAILURE?多半是 Nitro/pnpm 的目录联接被当成普通文件了
现象
用 Firefly 把 Nuxt / Nitro 的 .output 整目录传到 Linux 时,个别路径失败:
create remote file: sftp: "Failure" (SSH_FX_FAILURE)
进度卡在 0%。失败项往往是:
.../css-tree@x.y.z/node_modules/mdn-data.../@vue/compiler-core/node_modules/entities
同一批文件打成 zip 上传再解压,一切正常。说明远端权限、磁盘、路径本身没问题。
原因
这些路径在 Windows 上不是普通目录,而是 Junction(目录联接):
mdn-data → .nitro/mdn-data@2.0.28
entities → .nitro/entities@7.0.1
Nitro / pnpm 用联接复用嵌套依赖,很常见。
旧上传逻辑用 filepath.WalkDir 扫本地树。它不跟随符号链接;在 Windows 上 Junction 更坑:
| API | Junction 表现 |
|---|---|
Lstat |
ModeIrregular,IsDir=false,ModeSymlink=false |
Stat |
跟随目标,IsDir=true |
于是联接节点被当成「普通文件」去 OpenFile,OpenSSH 回笼统的 SSH_FX_FAILURE。压缩工具会跟着联接走进真实目录,所以 zip 路径没问题。
修复
上传遍历改为:
- 用
Lstat识别 symlink /ModeIrregular(Junction) - 用
Stat看目标:目录则递归展开,文件则按联接路径上传内容 - 用
os.SameFile做栈式环检测(Windows 上EvalSymlinks往往解不开 Junction)
效果与「压缩再解压」一致:远端得到普通目录和文件,而不是半残的联接节点。
继续阅读
查看更多 →
Firefly vs Xshell:AI Native Terminal 能否替代 Xshell?
Firefly 萤火虫与 Xshell 深度对比:桌面端 SSH 客户端、可视化 SFTP、AI 驱动运维、体积与授权。寻找 Xshell 替代、轻量绿色 SSH 终端的开发者必读。

Firefly vs Warp:同属 AI 终端赛道,差异在哪里?
AI Native Terminal、本地 shell、SSH 运维工作台、可视化 Docker/Redis。AI 终端怎么选,Firefly 与 Warp 区别详解。

Firefly vs Termius:云同步 SSH 与桌面端 AI Native Terminal
跨平台云同步、移动端、桌面可视化运维、AI Agent。Termius 替代与 AI 驱动 SSH 客户端怎么选。

Firefly vs Tabby:可扩展终端与 AI Native 运维工作台
Firefly 与 Tabby(原 Terminus)对比:开源可扩展终端、插件生态、可视化运维、AI Agent。Tabby 替代与 AI 终端选型。
评论
加载评论中…