LinuxでOneDriveをマウント — NetDriveの実験的Ubuntuビルド

読了目安 7 分 provider-guide onedrive linux
Alex
AlexPrincipal Engineer
NetDriveの実験的Linuxビルドを使い、個人用OneDriveやOneDrive for BusinessをUbuntu上の通常のマウントポイントとしてマウントする方法。

Ubuntuで稼働するビルドサーバーが、リリースのたびに共有OneDrive for Businessライブラリから数点の仕様書を読み出す必要があるとする。ヘッドレスなマシンにMicrosoft純正の同期クライアントを入れるのは現実的な選択肢ではない。NetDriveのLinuxビルドはこの問題を回避する。OneDriveアカウントを通常のマウントポイントとしてマウントするため、cat /mnt/onedrive/specs/release-notes.md を実行するスクリプトは、誰かが同期し忘れた古いローカルコピーではなく、Microsoftのサーバー上にある最新ファイルを読み取れる。

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

UbuntuでOneDriveをマウント

NetDrive を使えば Google Drive、OneDrive、S3、SFTP、WebDAV などが Windows と macOS でネイティブドライブとして表示されます — 同期も、まるごとダウンロードも不要です。

  • Ubuntu 16.04以降で動作
  • 個人用OneDriveとOneDrive for Businessを同時に利用可能
  • ファイルはオンデマンドでストリーミング — 事前ダウンロードなし
WindowsmacOS
NetDrive for Linuxをダウンロード →

無料トライアル。永久ライセンスとサブスクリプションプランあり。

ここで同期フォルダよりマウントポイントが優れている理由

MicrosoftのOneDrive同期クライアントは、ローカルミラーを常に最新に保つという発想で作られており、何かに触れる前にまずファイルをダウンロードしようとする。ノートPCならそれも妥当なトレードオフだが、合計で数十ギガバイトある共有ライブラリのうち3ファイルしか読まないLinuxビルドマシンにとっては使い勝手が悪い。マウントすればこの「全部ダウンロード」というステップを省ける。NetDriveはマウントポイントを通じて各読み書きをOneDriveアカウントに直接解決するため、スクリプトのopen()呼び出しは事前の同期なしに最新のリモートファイルを取得できる。

NetDriveは最初のリリース以来OneDriveをサポートしており、OneDrive for Businessは個人用OneDriveとは別の接続タイプとして扱われる。Microsoftの最新化されたAPIを使用し、独自の設定を持つため、仕事用アカウントと個人用アカウントを互いに干渉させることなく同時にマウントできる。

NetDriveがクラウドストレージアカウントをローカルドライブとしてマウントしている様子 — LinuxビルドがマウントポイントとしてUbuntuで提供するのと同じ基本的な操作

UbuntuへのNetDriveのインストール

NetDriveのLinuxビルドはUbuntuのパッケージリポジトリでは配布されていないため、aptではなくGitHub経由でセットアップする。

  1. github.com/NetDrive/installerにアクセスし、使用中のUbuntuバージョンに合ったリリースを取得する。
  2. インストーラーリポジトリのリリースノートに従う — NetDriveが何かをマウントする前に、ドライバーコンポーネントをインストールしておく必要がある。
  3. NetDriveパッケージ本体をインストールする。
  4. NetDriveを起動する。初回起動時にドライバーコンポーネントが読み込まれ、システムの設定によってはsudoを求められることがある。

サポートされる最小バージョンはUbuntu 16.04。アップデートはapt upgradeではなくGitHubリリースとして配布され、LinuxにはNetDrive独自の実験的というラベルが付いている。WindowsとmacOSの方がテストの大半を占めているため、本番環境で負荷のかかる用途より、ビルドマシンや開発マシンでの利用の方が適している。

ステップバイステップ: UbuntuでOneDriveを接続する

  1. NetDriveのDrive Managerを開き+ Add Driveをクリックする。
  2. 個人のMicrosoftアカウントならOneDriveを選択、Microsoft 365の仕事用アカウントならOneDrive for Businessを選択する。

接続ドライブ一覧に表示されたNetDriveのOneDriveプロバイダーロゴ

  1. デフォルトブラウザで開くOAuthフローでサインインする。ブラウザがインストールされていないヘッドレスマシンの場合は、同じアカウントにサインインした別のマシンで一度限りの認証を完了するか、X転送セッションを使用する。
  2. マウントポイントを設定する/mnt/onedriveのようなパス、または書き込み可能な任意の空ディレクトリで構わない。
  3. Connectをクリックする。 NetDriveがMicrosoftに対して認証を行い、そのパスにアカウントをマウントする。

ディレクトリ一覧は、フォルダを最初に開いたときにOneDrive APIから取得される。個々のファイルは、実際に開かれるまでダウンロードされない。

ターミナルからマウントを確認する

スクリプトをそのパスに向ける前に、GUIだけを信じずマウントが実際に完了しているか確認する。

# Confirm the mount is listed
mount | grep onedrive

# Or just try listing it
ls /mnt/onedrive

クラウドドライブのマウント後、正常に接続されたことを確認している様子

一覧が空で返ってくる場合は、マウントポイント関連の問題よりも先に、まずOAuthのステップを見直すこと — ヘッドレスマシンでブラウザフローが中断することが、OneDrive接続が完了しない最も一般的な原因だ。特にOneDrive for Businessの場合は、個人用OneDriveではなくBusiness接続タイプを選んだかどうかを再確認してほしい。両者はサインインフローが別であり、互いのアカウントに対して認証することはできない。

Linuxビルドで想定しておくべきこと

  • リリースサイクルが別系統 — Linuxドライバーコンポーネントは独自のスケジュールでリリースされるため、WindowsやmacOSで入った修正が同じ週にLinuxへ届くとは限らない。
  • aptとの統合なし — インストールとアップデートはUbuntuの標準リポジトリではなくGitHubリリースから行う。
  • WindowsとmacOSが最も検証されたターゲット — NetDrive自身のガイダンスでもLinuxは実験的として扱われている。1日に数回OneDriveを読み取るCIランナーや個人の開発マシンなら妥当な用途だが、無人稼働の本番パイプラインで使う場合は、依存する前に十分にテストする価値がある。

まとめ

UbuntuでOneDriveをマウントすれば、ヘッドレスまたはデスクトップのLinuxマシンでも、WindowsやmacOSでNetDriveが提供するのと同じマウントポイントアクセスが得られる。インストーラーはaptではなくGitHub上にある。同じプロバイダーをよりテストされたプラットフォームで使う場合はMount OneDrive on Windowsを、Linuxビルドでの別の接続タイプについてはMount Google Drive on Linuxを、より広範なLinux全体像についてはNetDrive on Ubuntu Linuxを参照してほしい。

— Alex, NetDrive