浏览远程目录、传文件、就地改一行配置:不用离开 Term,也不用再连一次。
撰写于
Term 里直接内置了 SFTP 文件浏览器。它不是另一个 App,也不另开连接——就在你已经连上的那台主机旁边开一个标签页。
手机上在主机列表里长按一台主机,选「打开 SFTP」;PC 和平板上右键主机,菜单里是同一项。打开之后底部标签栏里会多出一个 SFTP 标签,和终端标签并排,点标签就在文件和 shell 之间来回切,两边都不用重来一遍。
打开后落在登录用户的主目录。顶部是面包屑路径,点其中任意一段直接跳回那一级;列表里文件夹排在文件前面,每行给出权限和修改时间,文件再加上大小和按扩展名认出来的图标。第一行的 .. 回上一级。
右上角三个按钮分别是筛选、上传和菜单。菜单里可以按名称、大小、修改时间排序,开关显示隐藏文件,以及在列表和网格视图之间切换。手机上下拉即可刷新。
/ › home › tester 下面就是这台主机的主目录,文件夹排在最前,右侧是修改时间。右上角依次是筛选、上传、菜单。
.yaml 和 .json 各是各的。右上角的上传按钮打开系统文件选择器,选中的文件流式写进当前这个远程目录;PC 上也可以直接把文件拖进窗口。传输过程都在「传输」面板里,一个文件一行进度,可以单独取消。
上传失败不会伤到已经在那里的文件。传到一半断网、被取消,或者干脆失败了,服务器上那个文件要么是完整的新文件,要么是原封不动的旧文件:不会出现一个顶着正确名字的半截文件。
文件名按原样保留,中文和其他非 ASCII 字符都不例外。
回归测试文件.bin 原样落在服务器上。「清除已完成」只收走完成的行,正在传的不受影响。点一个文件,或者从它的行菜单里选下载,文件就存进 Term 自己的下载区。下好之后这一行还能预览(交给系统的预览能力)、分享给别的应用,或者保存到设备的公共目录里。
开始传之前先算两笔账。单个文件超过「设置 → 终端 → SFTP 最大下载大小」就当场拒绝,这一项可选 64 MB、256 MB、1 GB(默认)、4 GB,也可以设成无限制。整批文件的总和还要放得进 Term 在这台设备上剩下的空间。哪一项不满足,都会在开始之前就告诉你,而不是传到一半才发现没地方写。
128 KB 以内的文件,行菜单里会多出一项「编辑」:在内置编辑器里打开,改完直接存回服务器。改一行 nginx 配置、翻一下 .env、给 crontab 添一条,不用先下载再上传。
保存时会先看一眼服务器上那份有没有在你打开之后被人改过。改过就不会默默覆盖,而是先问一句,「服务器上的文件已更改」,覆盖还是放弃由你决定。
行菜单里的「重命名」原地改名,文件不会重新传一遍,多大的文件都是一瞬间的事。同一个菜单里还有「详情」,给出完整路径、大小、权限和时间。
右上角菜单里的「新建文件夹」在当前目录下建一个,建好立刻出现在列表里。目录是空的也会照实说「此文件夹为空」,而不是留一片空白让人猜是不是没加载出来。
「删除」会先确认:「从服务器删除“…”?此操作无法撤销。」这是服务器上的删除,没有回收站可以捞回来,所以这一步不省。
SFTP 标签页不会另开一条连接:它走的就是这台主机已经建立的那条 SSH 连接。所以打开它不用再认证一次,服务器上也不会多出一个登录会话;如果这台主机是通过跳板机连的,文件传输同样走那条隧道。
代价是它和终端同生共死。连接断了,文件列表也就失去依据,这时候浏览器不会装作还在,而是直接给出「已断开」和一个重新连接按钮:点一下重新连上,回到刚才那个目录。