文件传输
Mobile SSH 包含一个与活动 SSH 连接绑定的 SFTP 文件传输屏幕。它用于从手机或平板电脑进行快速的服务器维护:上传配置、下载日志、重命名远程文件或查看权限,而无需离开应用。
打开文件传输
- 连接到 SSH 服务器。
- 选择已连接的终端窗格。
- 从终端工具栏打开 Transfer,或在当前屏幕支持时长按窗格标题。
- 文件传输屏幕会打开,包含本地窗格和远程窗格。
如果没有活动的 SSH 会话,则无法打开文件传输。
本地与远程窗格
文件传输屏幕有两个浏览窗格:
- 本地窗格: 手机存储。
- 远程窗格: 通过 SFTP 访问的服务器文件。
应用会按主机记住最近十个远程路径——在 Android 上从远程窗格的标题栏打开它们,在 iOS 上则点按时钟图标。两个窗格的排序设置也会按主机记住。本地路径没有历史记录:在 Android 上,本地窗格就是你授权的那个文件夹;在 iOS 上,它是应用自己的文档区域。
文件传输屏幕会跟随你的系统浅色或深色主题,因此与 Mobile SSH 的其余部分保持一致。
每个会话从哪里打开(Android)
如果你从一个已附加到 tmux 会话的窗格打开文件传输,远程窗格会回到该会话上次工作的目录,并在窗格标题中标出会话名。对于此前没有从其打开过的会话,则会从你在该主机上最常用的目录开始,其次是该主机上次所在的目录,再次是你的主目录。
如果记住的目录后来被删除了,应用会沿着这个列表依次向下尝试,直到某个目录确实能列出内容,而不是把你丢在一个错误页面上——并且不会把无效路径写回去。在 iOS 上,每台主机只记住一个远程目录。
存储访问
Mobile SSH 在两个平台上都不会申请笼统的存储权限。
在 Android 上,你用系统的文件夹选择器授权一个文件夹,下载的内容会写入其中——那是其他所有应用本来就能读取的位置。该授权在重新启动后依然有效。
在 iOS 上,本地窗格就是应用的文档区域,文件通过系统的文档与照片选择器导入。
在 iOS 上,本地窗格使用应用自己的文档区域,你可以通过系统的文档选择器和照片选择器导入文件——包括对照片和文档的多选导入。无需单独的存储权限。
私钥导入与文件传输分开,使用系统文件选择器。
上传文件
- 打开本地窗格。
- 导航到你要上传的文件。
- 选择上传。
- 确认远程目标。
- 在传输队列中查看进度和完成情况。
上传使用现有的 SSH/SFTP 连接。如果连接断开,请在重连后重试。
下载文件
- 打开远程窗格。
- 导航到你要下载的文件。
- 选择下载。
- 确认本地目标。
- 在传输队列中查看进度和完成情况。
大文件下载应尽量在稳定的网络下进行。
复制整个文件夹
上传和下载不限于单个文件。选择一个文件夹,Mobile SSH 会在两个方向上复制整个子目录树——从手机到远程以及从远程到手机——先创建目标目录,再将每个文件加入队列。无法读取的子目录不会中断其余复制;在 Android 上,它会以一条内容为「Can’t list directory」的失败记录报告出来,而 iOS 会继续执行,但不会列出被跳过的内容。
远程文件操作
根据所选的远程项目,Mobile SSH 可显示以下操作:
- 下载,在 Android 上称为 Copy to phone。
- 在服务器上复制或移动——
cp -r/mv在主机上执行,数据完全不经过你的手机。 - 重命名。
- 删除。
- 创建文件或目录。
- 编辑文本文件。
- 压缩为
.tar.gz。 - 权限——修改模式与所有者,并可选择应用到整个文件夹。
- 用其他应用打开。
- 查看文件详情。
远程文件详情可包含权限位、所有者、所属组和八进制权限值。在更改由其他进程或部署工具管理的服务器文件之前,请先查看这些详情。
文件大小以二进制单位显示,因此与隔壁标签页终端里 ls -h 打印出来的结果一致。
排序与最近路径
每个窗格都可按名称或日期升序或降序排序。Mobile SSH 会按主机存储所选的本地和远程排序方式以及最近路径,因此对同一服务器的重复传输会从熟悉的位置开始。
传输队列
传输会排入队列并按状态显示,日志会逐条列出每一次传输并可滚动——Android 将其分为 Queued / Failed / Successful 三个标签页,iOS 则分为 Active / Failed / Done。当底层 SFTP 操作提供原因时,失败的传输会包含原因。在 iOS 上,正在传输的文件会固定在 Active 标签页顶部,并且可以在传输过程中取消某一条。
把文件从应用里取出来
- Android: 下载的内容会落在你授权的那个文件夹里,因此其他所有应用本来就能看到它们。两个窗格上都有 Open in another app;远程文件会先下载下来,再交给其他应用。
- iOS: Mobile SSH 会出现在「文件」应用的 我的 iPhone 下,因此「我的手机」窗格中的任何内容都可以从邮件、各类选择器和其他应用中访问。长按已下载的文件并选择 Open in another app,即可把它交给其他应用、通过 AirDrop 发送或另存到别处。
把文件送进会话(Android)
Android 接受从其他任意应用分享进来的文件:分享到 Mobile SSH,文件就会被上传到该窗格所在主机的 ~/.cache/mobile-ssh,其远程路径会自动输入到提示符处,你可以立刻使用。终端工具栏中的 📎 按钮从系统文件选择器做同样的事,两者都支持一次多个文件。
在 iOS 上,用 + 按钮把文件导入本地窗格,再从那里上传。
实用提示
- 使用 SFTP 进行有针对性的文件移动;对于大型目录同步,请在服务器上使用
rsync等命令行工具。 - 除非你有备份或部署回滚路径,否则避免编辑正在运行的生产文件。
- 如果上传后文件未出现,请刷新远程窗格或核实目标路径。
- 如果 Android 的本地窗格是空的,请用 Pick folder 选择一个文件夹——应用只能访问你授权给它的那个文件夹。在 iOS 上,请改用选择器将文件添加到本地窗格。