深色模式
SFTP 文件管理
Reeve 的 SFTP 用 russh-sftp 实现,支持拖拽、流式分块上传、批量下载、目录树 + 路径栏导航。
进入
- 主界面左侧导航 → SFTP
- 服务器清单行 → SFTP 打开
- 终端 toolbar → 切到 SFTP
布局
┌─────────────────────────────────────────────────┐
│ 服务器选择 │ 路径栏 │ 刷新 上一级 家目录 最近 │
├──────────────┬──────────────────────────────────┤
│ 目录树 │ 文件列表 │
│ (左侧) │ 名称 | 大小 | 修改时间 | 权限 │
│ │ │
│ │ 拖拽这里上传 │
└──────────────┴──────────────────────────────────┘路径栏
- 直接输入绝对路径或相对路径 → Enter 跳转
- 自动
realpath解析(解析符号链接) - 显示当前完整路径
快速导航
| 按钮 | 作用 |
|---|---|
| 家目录 | 跳到 $HOME |
| 上一级 | 父目录 |
| 刷新 | 重读当前目录 |
| 最近 | 下拉选最近访问的目录(localStorage 记录) |
目录树
左侧 Tree:
- 目录双击展开 / 折叠
- 点击直接进入
- 与右侧列表联动
文件列表
排序:点列头切换名称 / 大小 / 修改时间 / 权限。
过滤:顶部「文件名过滤」框前端实时筛。
多选:
- 单击复选框
- Shift+点击 连续选
- Ctrl+点击 多选
上传
拖拽上传
把本地文件直接拖到列表区:
- 视觉提示蓝色高亮
- 自动开始上传
- 实时进度条
- 支持多文件、文件夹(递归)
按钮上传
toolbar 上传 按钮 → 选本地文件 → 上传到当前目录。
流式分块
Reeve SFTP 上传是流式分块实现:
- 块大小 256 KiB
- 无文件大小限制
- 可随时取消
进行中的上传顶部有进度条 + 取消 按钮。
下载
- 列表勾选要下载的文件
- toolbar 下载 按钮 → 选本地目录
- 多文件并行下载
- 进度条 + 取消按钮
- 单文件 ≤ 16 MiB 限制(避免对话 token 爆炸;超大文件请用
scp/rsync)
右键菜单
文件右键:
| 操作 | 说明 |
|---|---|
| 下载 | 同上 |
| 复制路径 | 完整远端路径到剪贴板(10s 自清) |
| 在终端打开此目录 | 切到终端并执行 cd <path>(不自动回车) |
目录右键:
| 操作 | 说明 |
|---|---|
| 进入 | 同双击 |
| 新建文件 / 文件夹 | 在当前目录创建 |
| 重命名 | |
| 删除 | 二次确认 |
文本文件直接查看
小于 1 MiB 的文本文件双击直接打开预览(只读)。
敏感路径
SFTP 不像 SSH exec 那样有人用 / AI 区分,所以涉及敏感路径时:
人用 SFTP
- 列举任何目录都不拦
- 下载任何文件都不拦
- 但写入敏感路径(
/etc/shadow//etc/sudoers/~/.ssh/authorized_keys)会在审计里高亮
AI 走 sftp_write 工具
- 列举不拦
- 读取不拦但出口走脱敏规则
- 写入敏感路径永久拦截(任何档位都拒)
进度回报
底部状态栏显示:
- 当前传输任务(队列中 / 进行中 / 已完成)
- 总进度(字节 / 总字节)
- 速度(MB/s)
安全:剪贴板自清
- 复制远端路径 → 10 秒后剪贴板自动清空
- 复制文件名 / 内容 → 同上
故障排查
| 症状 | 排查 |
|---|---|
| 上传失败 | 检查远端目录权限;磁盘是否满 |
| 中文文件名乱码 | 远端 locale 设 UTF-8 |
| 大文件慢 | russh 全 Rust 实现,单线程;超大文件请用 rsync -P |
| 拖拽不响应 | 浏览器内核问题,重启 Reeve;或用按钮上传 |
| 列举超时 | 远端目录过大(>10k 文件);建议先 cd 到子目录 |