在 Linux 上挂载 Backblaze B2 — NetDrive 实验性 Ubuntu 版本

阅读时间 6 分钟 provider-guide backblaze-b2 linux
Steve
SteveSenior Engineer
使用 NetDrive 实验性 Linux 版本,将 Backblaze B2 存储桶挂载为普通 Ubuntu 挂载点——涵盖 GitHub 安装、存储桶设置与验证步骤。

一位备份管理员在一批无头 Ubuntu 服务器上运行夜间快照任务,将每晚的 tarball 归档到 Backblaze B2 存储桶以进行异地保留。现有脚本已经知道如何用 tarrsync 写入本地路径——若围绕 B2 原生 API 或 b2 命令行工具重写脚本,意味着要为一个原本运行良好的任务引入新的身份验证处理和新的错误码。NetDrive 的 Linux 版本绕开了这次重写:它将 B2 存储桶挂载为普通的 Ubuntu 挂载点,因此原本写入本地磁盘 /mnt/backups/nightly.tar.gz 的同一个脚本,无需改动即可改写到由 B2 支持的路径。

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

在 Ubuntu 上挂载 Backblaze B2

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

  • 支持 Ubuntu 16.04 及更高版本
  • 自 NetDrive 3.5.434 起支持 Backblaze B2
  • 现有脚本可通过普通挂载点读写——无需重写 B2 API
WindowsmacOS
下载适用于 Linux 的 NetDrive →

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

为什么要挂载存储桶而不是编写 B2 API 脚本

直接与 B2 通信意味着要在备份工具所用的任何语言中处理应用密钥身份验证、重试和存储桶列表分页——这并非不可解决,但这类基础设施工作与将 tarball 送到异地的实际任务毫无关系。挂载存储桶消除了这一层:NetDrive 通过挂载点解析读写请求,因此 tar 任务或 cp 命令与它交互的方式,同与服务器上任何其他目录交互一样。

自 3.5.434 版本(2018-05-11)起,Backblaze B2 就一直是 NetDrive 支持的连接类型之一,该版本同时引入了针对 5GB 及以上文件的分块上传功能——B2 支持已经经过了充分打磨,而非临时附加到 Linux 版本上的新功能。

NetDrive 在 Linux 挂载点上将云存储账户挂载为本地驱动器

在 Ubuntu 上安装 NetDrive

NetDrive for Linux 并未纳入 Ubuntu 的默认软件包仓库,因此安装流程通过 GitHub 而非 apt 进行:

  1. 访问 github.com/NetDrive/installer,获取与你的 Ubuntu 版本相匹配的发行版。
  2. 安装前先阅读该发行版的说明——必须先安装驱动组件,否则任何内容都无法挂载。
  3. 安装 NetDrive 软件包本身。
  4. 启动一次 NetDrive 以加载驱动组件;根据你的权限设置,这可能会提示输入 sudo

Linux 版本支持的最低版本是 Ubuntu 16.04,并且带有与 NetDrive 官方对比页面对 Linux 通用标注相同的实验性标签——Windows 和 macOS 获得了大部分测试。更新以 GitHub 发行版的形式发布,而非通过 apt upgrade,因此检查新版本是一项值得写入该服务器运维手册的人工步骤。

分步操作:在 Ubuntu 上连接 B2 存储桶

  1. 打开 NetDrive 的驱动器管理器,点击 + Add Drive
  2. 从连接类型列表中选择 Backblaze B2

连接列表中显示的 NetDrive Backblaze B2 提供商图标

  1. 输入你的 B2 应用密钥 ID 和应用密钥——从你的 Backblaze 账户生成,如果不想让服务器获得账户级的全部访问权限,可将其限定到特定存储桶。
  2. 输入你想让 NetDrive 挂载的存储桶名称
  3. 设置挂载点——例如 /mnt/b2-backups 这样的路径,或任何你有写入权限的空目录。
  4. 点击 Connect。 NetDrive 将进行身份验证并把存储桶挂载到该路径。

在备份任务依赖挂载点之前先验证它

不要只信任图形界面,务必从终端确认挂载确实生效——这是对一个实验性版本合理的尽职调查,也值得在 cron 任务开始无人值守地写入该路径之前完成:

# Confirm the mount is listed
mount | grep b2-backups

# Or just try listing it
ls /mnt/b2-backups

确认云驱动器挂载成功

如果目录返回为空或挂载没有出现,先检查服务器防火墙是否阻止了 443 端口的出站 HTTPS 流量,再去怀疑存储桶凭据有误——在锁定较严的构建和备份服务器上,出站端口被封锁比应用密钥错误更常见。

排查连接失败时确认网络端口可达

使用 Linux 版本需要考虑的事项

  • 独立的发布节奏。 Linux 驱动按自己的日程维护,因此为 Windows 或 macOS 发布的修复不会自动在同一周内落地到 Linux 上。
  • 没有 apt 集成。 安装和更新都通过 GitHub 发行版进行,而非 PPA 或软件包管理器。
  • Windows 和 macOS 是经过强化测试的目标平台。 NetDrive 自身的指导将这两个平台视为获得最多测试的平台。夜间备份服务器或从 B2 读取测试数据的 CI 运行器,比较适合使用 Linux 版本;若用于无人值守的生产流水线,则值得先进行充分测试。

总结

在 Ubuntu 上挂载 B2 存储桶,能让无头服务器获得与 NetDrive 在 Windows 和 macOS 上相同的驱动器式访问方式,而无需围绕 B2 原生 API 进行重写。关于同一提供商在测试更充分的平台上的用法,参见 在 Windows 上挂载 Backblaze B2在 macOS 上挂载 Backblaze B2;关于更全面的 Linux 概览,参见 在 Ubuntu Linux 上使用 NetDrive;关于围绕这一提供商构建的具体用例,参见 在 Backblaze B2 上存放摄影 RAW 存档

— Steve, NetDrive