在 Linux 上用 NetDrive 挂载 Amazon S3

阅读时间 5 分钟 provider-guide amazon-s3 linux
Steve
SteveSenior Engineer
配置 NetDrive 的实验性 Linux 版本,将 Amazon S3 存储桶挂载为普通的 Ubuntu 挂载点,从 GitHub 安装到首次连接。

需要读取 S3 中存储的测试用固件的 CI 运行器,或是在打包前从存储桶拉取发布产物的构建机器——两者都希望存储桶看起来像一个普通目录,而不是需要人维护的自定义 aws s3 sync 包装脚本的目标。NetDrive 的 Linux 版本以与 Windows 和 macOS 版本相同的方式挂载 S3,不过它是以实验性版本发布的,在你将生产工具指向它之前,值得先了解清楚预期。

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

在 Ubuntu 上挂载 S3 存储桶

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

  • 支持 Ubuntu 16.04 及更高版本
  • 与 Windows 和 macOS 版本相同的 S3 连接流程
  • 用 ls、cat 或任何期望普通路径的工具读取文件
WindowsmacOS
下载适用于 Linux 的 NetDrive →

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

为什么挂载而不是同步

aws s3 syncs3cmd 这类工具会按计划把对象复制到本地磁盘,这意味着本地副本可能与存储桶产生偏差,并且会让你同步的所有内容重复占用存储成本。通过 NetDrive 挂载 S3 省去了这一步:挂载点会直接针对存储桶解析读写操作,因此执行 cat /mnt/s3-bucket/build-artifacts/latest.tar.gz 的脚本无需中间的同步作业就能获取当前对象。对于作为 CI 任务和部署脚本之间共享暂存空间的存储桶来说,这消除了一整类”哪个副本是过期的”这样的错误。

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

在 Ubuntu 上安装 NetDrive

NetDrive for Linux 不在 Ubuntu 的默认软件包仓库中,因此安装是通过 GitHub 而不是 apt 进行的:

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

由于更新是以 GitHub 发行版的形式发布的,检查新版本是一个手动步骤,而不是由 apt upgrade 自动处理——这值得在这台机器对应的运维手册中写上一条。

连接你的 S3 存储桶

在 NetDrive 运行之后:

  1. 打开 NetDrive 的 Drive Manager,点击 + Add Drive
  2. 从服务商列表中选择 Amazon S3
  3. 输入你的 AWS access key 和 secret key,然后选择目标存储桶,如果你只需要挂载其中一个子集,还可以(可选地)指定桶内的文件夹前缀。
  4. 设置一个挂载点——像 /mnt/s3-bucket 这样的路径即可,或任何你有写权限的空目录——然后连接。

用于添加和配置云驱动器的 NetDrive Drive Manager——Linux 版本用于挂载点的界面概念与此相同

NetDrive 的 S3 连接器支持对 5GB 及以上的文件进行分段上传,因此通过挂载点将大型构建产物或归档文件推送回存储桶时,不需要在你这一端做特殊处理。

连接之后,通过终端检查挂载是否真的生效——运行 mount | grep s3-bucket,或直接对挂载点执行 ls——而不是仅仅相信图形界面。在一个实验性版本上,这是一个值得保持的小习惯,尤其是在让脚本依赖该路径存在之前。

确认云驱动器挂载后已成功连接

Linux 上需要留意的事项

如果你要在一批 Ubuntu 机器上统一采用这套方案,以下几点与 Windows 和 macOS 版本的差异值得注意:

  • 独立的发布节奏:Linux 驱动组件按自己的日程维护,因此在 Windows 或 macOS 上发布的修复不一定会在同一周内提供给 Linux。
  • 没有软件包管理器集成:目前仅通过 GitHub 发行版分发——没有 PPA,也没有 Snap。
  • 实验性状态:NetDrive 自己的对比页面在 Linux 支持一栏标注了星号,这个星号名副其实。Windows 和 macOS 才是被积极强化的目标平台;在信任该挂载能无人值守稳定运行数月之前,请预留时间测试你具体的 Ubuntu 版本和工作负载,并为任何关键业务保留一个备用方案(例如一个定时同步作业)。

这些都不意味着 S3 不适合用于 CI 运行器或偶尔需要访问存储桶的开发机——对于这类工作负载,它是一个合理的选择。真正该避免的,是”不经测试就把生产流水线赌在上面”这种情形。

总结

在 Ubuntu 上挂载 S3,能让你获得与 NetDrive 在 Windows 和 macOS 上相同的、类似盘符的存储桶访问方式,只是安装程序放在 GitHub 上而不是 apt 里。在依赖它处理任何无人值守的任务之前,先针对你实际使用的 Ubuntu 版本进行测试。关于同一个连接器在测试更充分的平台上的使用方法,参见在 macOS 上用 NetDrive 挂载 Amazon S3;想了解更全面的 Linux 情况,可阅读 Ubuntu Linux 上的 NetDrive

— Steve, NetDrive