在 Linux 上挂载 FTP 服务器 — NetDrive 设置指南

阅读时间 6 分钟 provider-guide ftp linux
Alex
AlexPrincipal Engineer
在 Ubuntu 上使用 NetDrive 的实验性 Linux 版本,将 FTP 服务器挂载为普通挂载点,涵盖从 GitHub 安装到被动模式故障排查的全过程。

Ubuntu 上的一台构建服务器需要从一个比团队现在会选用的任何方案都要老旧的传统 FTP 主机上拉取资源,而围绕 curllftp 重写部署脚本并不值得花上一下午的时间。NetDrive 的 Linux 版本可以将同一个 FTP 服务器挂载为一个普通挂载点,这样 /mnt/legacy-ftp/cpls,或者只是调用 open() 的 Python 脚本来说,就和其他任何目录没有区别。

NetDrive drive manager showing Google Drive, S3 and pCloud mounted as drive lettersMounted clouds appearing as native drives in Windows File Explorer

在 Ubuntu 上挂载 FTP 服务器

NetDrive 让 Google Drive、OneDrive、S3、SFTP、WebDAV 等在 Windows 和 macOS 上显示为本地驱动器 — 无需同步,无需完整下载。

  • 支持 Ubuntu 16.04 及更高版本
  • 支持凭据登录或匿名 FTP
  • 通过普通挂载点读写 — 无需守着客户端窗口
WindowsmacOS
下载适用于 Linux 的 NetDrive →

免费试用。提供终身与订阅方案。

为什么挂载比围绕 FTP 编写脚本更好

独立的 FTP 客户端应付一次性下载没有问题,但它无法给脚本或构建工具提供一个可以直接指向的普通文件路径。每次读取都意味着先打开客户端、找到文件,再手动把它拉下来。通过 NetDrive 挂载服务器就省去了这一步:挂载点直接解析到 FTP 服务器,因此 cat /mnt/legacy-ftp/release-notes.txt 读到的是实时文件,而不是别人上周记得下载的一份副本。

NetDrive 自其 3.x 首个版本起就支持 FTP,而无需凭据的连接方式——适用于内部镜像或分发共享等允许匿名访问的服务器——自 3.7.687 版本起就已支持。具体到 Linux 上,这意味着与 Windows 和 macOS 上相同的连接类型,只是通过 NetDrive 的 Ubuntu 版本运行。

NetDrive 将云存储账户挂载为本地驱动器 — 这正是 Linux 版本在挂载点上提供的核心交互

在 Ubuntu 上安装 NetDrive

NetDrive for Linux 并未纳入 Ubuntu 的默认软件源,因此安装要通过 GitHub 而非 apt

  1. 前往 github.com/NetDrive/installer,下载与你的 Ubuntu 版本匹配的发行版。
  2. 按照该仓库针对你的版本给出的发行说明操作——在 NetDrive 能够挂载任何内容之前,需要先安装一个驱动组件。
  3. 安装 NetDrive 软件包。
  4. 启动 NetDrive。首次运行会加载驱动组件,根据你系统的权限设置,可能会提示输入 sudo

最低支持版本是 Ubuntu 16.04,Linux 版本也带有和 NetDrive 官方对比页面上一样的实验性标签——Windows 和 macOS 得到了大部分的测试,所以在让无人值守的流水线依赖挂载持续保持可用之前,先针对你的发行版和工作负载做好验证。

分步指南:在 Ubuntu 上连接 FTP 服务器

  1. 打开 NetDrive 的 Drive Manager,点击 + Add Drive
  2. 从连接类型列表中选择 FTP

代表 NetDrive 中 FTP 服务器连接的 FTP 提供商图标

  1. 输入服务器地址——主机名或 IP——以及端口。FTP 默认使用 21;部分主机会运行在非标准端口上。
  2. 输入凭据,对于允许匿名 FTP 的服务器,可以将用户名和密码留空。
  3. 设置挂载点——例如 /mnt/legacy-ftp 这样的路径,或者任意你拥有写权限的空目录。
  4. 点击 Connect。 NetDrive 会进行身份验证,并在该路径下挂载服务器。

在依赖挂载前先验证它

从终端而不是仅凭 GUI 检查挂载状态——这是实验性版本上一个合理的习惯,在脚本假定该路径存在之前尤其值得这样做:

# Confirm the mount is listed
mount | grep legacy-ftp

# Or just try listing it
ls /mnt/legacy-ftp

如果连接一直没有完成,先检查可达性——错误的主机名或被防火墙拦截的端口,是身处防火墙后的 Linux 主机上大多数 FTP 连接失败的原因:

# Basic reachability
ping ftp.example.com

# Is the FTP control port actually open?
nc -zv ftp.example.com 21

显示 IP 可达性的网络连通性检查

针对 FTP 控制端口的端口可达性检查

此设置下的常见问题

  • 目录列表挂起:位于 NAT 或家用路由器后面的大多数 FTP 服务器,数据连接都需要被动模式(PASV)——在主动模式下,服务器会尝试反向连接到你的机器,而防火墙通常会阻止这种连接。请查阅服务器文档,了解如何启用被动模式并开放被动端口范围。
  • 大目录列表速度慢:如果服务器支持 MLSD 命令(现代 FTP 列表格式)而不是较旧的 LIST 格式,包含数千个文件的文件夹列表速度会更快。
  • 没有软件包管理器集成:更新来自 GitHub 发行版,而不是 apt upgrade——这值得在管理这台机器的运维手册中写上一笔,因为在这里检查新版本是一个手动步骤。

总结

在 Ubuntu 上挂载 FTP,可以获得与 NetDrive 在 Windows 和 macOS 上相同的驱动器式访问方式,只不过安装程序托管在 GitHub 而不是软件包仓库上。如果同一台服务器也支持 SFTP,那么对于任何要穿越公共互联网的场景,SFTP 都是更好的选择——参见在 Linux 上挂载 SFTP 服务器 — NetDrive 设置指南。若想了解在 Ubuntu 上运行 NetDrive 的更完整介绍,请参见 在 Ubuntu Linux 上使用 NetDrive

— Alex, NetDrive