# SFTP 文件传输 NyaTerm 的远程文件能力建立在 SSH 会话之上。也就是说,**文件浏览器、SFTP 传输、远程文件本地编辑后回传** 都只在 SSH 会话中可用;本地终端、Telnet、串口不会显示这一套能力。 ## 文件浏览器 连接 SSH 会话后,文件浏览器面板可以直接浏览远程目录。 你会得到这些基础能力: - 自动进入远端用户主目录 - 进入文件夹、返回上级、刷新当前目录 - 点击路径栏直接编辑并跳转到目标路径 - 与终端当前工作目录同步 - 在不支持路径跟踪的会话中关闭自动同步 - 复制当前目录路径,或把路径直接发送到终端输入区 路径栏接受 `~` 和 `~/subdir` 形式的输入,可直接跳到主目录或其子目录。 ## 常见文件操作 在文件列表、工具栏或右键菜单中,你可以执行: | 操作 | 说明 | |------|------| | 打开 | 下载到本地临时目录后,用默认编辑器打开 | | 上传文件 | 选择一个或多个本地文件上传到当前目录 | | 上传文件夹 | 整个目录上传到当前远端路径 | | 下载 | 下载单个文件、多个已选文件,或整个目录 | | 重命名 | 修改远端名称 | | 移动 | 把文件或目录移动到新路径 | | 删除 | 删除单个文件,或批量删除当前选中的多个条目 | | 属性 | 查看大小、时间、UID/GID、权限等信息 | | 新建文件 / 文件夹 / 符号链接 | 在当前目录中直接创建,符号链接按 OpenSSH 兼容方式处理 | 其中“打开”并不只是只读预览,而是为后续本地修改后回传做准备。 ## 选择、多选与批量操作 当前文件浏览器已经支持更接近日常文件管理器的选择方式: - 单击选择单个条目 - `Ctrl / Cmd` 多选 - `Shift` 范围选择 - `Ctrl / Cmd + A` 全选当前目录条目 - `Delete` 删除当前选中条目 当你选中了多个条目后,工具栏中的**下载**和**删除**会直接对当前选择生效;如果在多选状态下对某个已选条目打开右键菜单,相关批量操作也会作用于整组选中项。 ## 上传与下载 ### 上传 可通过工具栏、右键菜单或拖拽把本地内容上传到当前目录。 - 上传文件时可一次选择多个本地文件 - 上传目录时会保留目录结构 - 上传目录与上传文件会统一进入传输队列 ### 外部拖拽上传 文件浏览器支持把系统文件管理器中的**文件或文件夹直接拖到 NyaTerm 文件浏览器区域**进行上传。 典型流程: 1. 打开一个 SSH 会话并进入文件浏览器 2. 把本地文件或文件夹拖到文件列表区域 3. 出现拖拽覆盖层后松手 4. NyaTerm 自动把它们加入上传流程 需要注意: - 只有拖到文件浏览器列表区域才会触发上传 - 某些拖拽来源如果没有暴露本机真实路径,NyaTerm 无法直接解析,这时会提示你改用 **上传文件** 或 **上传文件夹** ### 下载 下载时有两种常见工作方式: - 使用默认下载目录,直接保存到固定位置 - 每次询问保存位置,按任务分类归档 目录下载与文件下载都支持,远端目录会落到你选择的本地目标目录中。 ## 传输面板与传输设置 NyaTerm 会把上传 / 下载任务统一放进传输队列中,便于你查看: - 当前进度 - 实时传输速度 - 成功、暂停、取消与失败状态 - 同时进行中的任务 - 当前下载目录 单个传输项支持: - **暂停** - **继续** - **取消** - **失败后重试** - **完成后从列表移除** 面板顶部还提供批量操作: - **全部暂停** - **全部继续** - **全部取消** - **清理已完成项** 在 **设置 → 传输** 中还可以按需调整: - 上传 / 下载线程数 - 冲突时的处理策略 - 最大重试次数 - 传输缓冲区大小 - 是否保留时间戳 - 是否继续断点传输 - 默认文件权限 - 默认下载路径 - 是否每次询问保存位置 - 默认打开远程文件所使用的本地编辑器 ### 重复目标处理 当上传或下载遇到同名文件时,重复目标对话框会让你选择: - **覆盖**:替换目标文件 - **覆盖并不再询问本次任务**:对当前批量任务继续使用覆盖策略 - **跳过**:保留目标文件,跳过当前项 经常批量同步同一类目录时,在 **设置 → 传输** 中调整默认冲突策略可以减少重复确认。 ### SFTP 可靠性与性能 新的 SFTP 后端改进了目录、符号链接、已知大小文件下载和大文件上传的处理。你通常不需要关心内部实现;用户可见的变化是传输速度反馈更清楚,失败时错误信息更具体,目录和符号链接操作更接近 OpenSSH 行为。 此外,NyaTerm 会对单条 SSH 连接上的并发 SFTP 通道数量做限制,并在通道打开遇到临时失败时自动带退避重试。这样在同一主机上同时进行多项文件操作时更稳定,不容易因为瞬时的通道资源不足而报错。这些都是后端行为,没有需要手动配置的设置项。 ## Zmodem 传输(rz / sz) 除了 SFTP,NyaTerm 还支持终端里常见的 Zmodem 传输,也就是在远端执行 `rz`(上传到远端)或 `sz`(从远端下载)时触发的传输方式。 - 检测到 `rz` 时,NyaTerm 会让你选择要上传的本地文件;上传前会先探测远端目录中的同名文件并处理冲突 - 检测到 `sz` 时,NyaTerm 会让你选择本地保存目录 - Zmodem 传输会作为条目出现在传输队列中,带实时进度 需要注意的是,Zmodem 传输的可用控制和普通 SFTP 传输不同: - Zmodem 项**不支持**暂停、继续、重试、取消 - 传输结束后,你只能把它从列表中移除 - 面板顶部的**全部暂停 / 全部继续 / 全部重试**会自动跳过 Zmodem 项 这是因为 Zmodem 协议的传输由终端两端直接驱动,NyaTerm 只做进度展示和文件选择,不介入协议本身的暂停与续传。 ## trzsz 传输(trz / tsz) NyaTerm 也支持终端内的 trzsz 协议:在远端执行 `tsz` 可下载文件,执行 `trz` 可上传文件;目录上传也会触发本地目录选择。传输会进入队列并显示进度。 trzsz 与 Zmodem 一样由终端协议驱动,不等同于 SFTP 文件操作。它用于无法使用 SFTP、但远端可以安装 trzsz 命令的场景。暂停、继续和重试能力取决于当前协议会话状态,不能按 SFTP 队列任务理解。 ## 与终端路径同步 文件浏览器可以和当前 SSH 终端的工作目录配合使用: - **手动同步**:点击同步按钮,把浏览器直接跳到终端当前路径 - **自动同步**:开启自动同步后,终端 `cd` 到新目录时,文件浏览器自动跟随 - **发送到终端**:把当前目录路径或某个文件路径直接发到终端输入区,便于继续补命令 在终端里 `cd` 到某个发布目录后,文件浏览器会跟到同一位置。 如果当前会话没有可用的终端路径跟踪能力,手动 / 自动同步入口会变为不可用状态;这通常意味着该会话暂时不能向后端稳定报告 cwd 变化。 ## 本地编辑后自动回传 ### 工作方式 1. 在 SSH 文件浏览器中对远程文件执行 **打开** 2. NyaTerm 先把文件下载到本地临时目录 3. 同时启动文件监听 4. 你在本地编辑器里保存后,应用会弹出上传提示窗口 ### 上传提示窗口 文件被修改后,你可以选择: - **上传一次** - **始终上传** - **取消** 对某个文件选择「始终上传」后,**当前会话内**后续保存会直接回传,不再询问。会话关闭后该选择失效。 ### 只在内容真正变化时回传 文件监听按内容指纹判断是否需要回传,不只看保存事件或修改时间: - 内容没有变化(例如编辑器只更新了修改时间)时,不会触发回传 - 只有文件内容确实改变才会弹出上传提示或执行自动回传 - 对“写临时文件再重命名”的原子保存方式也能正确识别 这样可以避免部分编辑器的保存行为造成的重复上传。 ### 典型用途 - 修改远程配置文件 - 调整部署脚本 - 打开日志或状态文件做本地分析 - 为文档准备“编辑后回传”的演示截图 ## 文件属性与权限 在 **属性** 中可以查看: - 文件大小 - 修改时间、访问时间 - 所有者和组 - UID / GID - 权限的八进制表示 替换文件前需要核对权限时,这里比 `ls -l` 更直接。