Files
nyaterm/docs-site/docs/guide/file-transfer.md
T
KangandClaude Opus 5 e18cb3902e docs: cut the template phrasing and the authoring notes
The migrated prose leaned on a small set of constructions and repeated them
until they stopped carrying information. Across ~3.7k lines the source had 78
uses of "适合", 63 of "如果你", and 34 contrastive "而不是" clauses, most of
them attached to bullet lists that restated the feature name.

What changed:
- Replaced the "适合场景 / 适合:" tail hanging off nearly every section with
  either a plain sentence or nothing. "适合" is now 0, "如果你" is 0, and the
  18 remaining "而不是" clauses each rule out an assumption a reader would
  actually make (a rejected password is not truncated; a font name is not a
  bundled file; a decoder panic must not exit silently).
- Removed the closing editorial lines that asserted significance without adding
  information ("这也是 NyaTerm 和普通多标签终端差异较大的地方"), and the
  meta-commentary where the docs explained their own conventions.
- Dropped the relative time anchors that were already going stale: "新的 SFTP
  后端", "较新的工作区", "现在可以", "Newer Agent workflows".
- Deleted the "如果你准备录制文档素材" passage, which told the reader how to
  stage screenshots for the docs rather than how to use the recorder.
- Removed seven `:::tip Screenshot suggestion` blocks that shipped only in the
  English pages. They were internal authoring notes and pointed at a
  /img/docs/ tree and scripts/demo-*.sh files that do not exist in this repo.
- Dropped "推荐的工作流组合", four permutations of features documented
  elsewhere, and gave the synchronized input group one home instead of the
  three partial copies it had across two pages.
- Rewrote the cloud-sync conflict choices to lead with what is lost, since
  "适合:你确认云端版本才是应该保留的版本" buried the fact that local
  unsynced changes are discarded.

Also closes the remaining English gaps found while doing this: selection and
bulk operations, content-fingerprint upload, two FAQ entries, and two
quick-start steps existed only in Chinese. Chinese and English now carry the
same heading count on every page.

Verified with `pnpm --dir docs-site build` (both locales) and by re-resolving
all 22 cross-page anchors against the generated heading ids.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-22 11:27:47 +08:00

220 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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` 更直接。