Ubuntu で Google Drive をマウントする方法|共有ドライブと認証エラー対処

  • URLをコピーしました!
目次

はじめに

Ubuntu でファイルのバックアップや別 PC とのデータ共有を行う際、Google Drive をローカルのファイルマネージャーやコマンドラインから扱えると便利です。ただし、Google が公式に提供するデスクトップ同期クライアント「Google Drive for Desktop」は Windows と macOS のみの対応で、Linux 版は提供されていません。そのため Ubuntu では、OS の標準機能や専用ツールを使ってマウントする方法をとります。

本記事では、個人のマイドライブと組織の共有ドライブそれぞれの用途に合わせたマウント手順と、設定時に発生しやすい接続エラーの対処法を解説します。

この記事でわかること
  • 3 つのマウント方法(GNOME オンラインアカウント/google-drive-ocamlfuse/rclone)の違いと選び方
  • Ubuntu 標準機能でマイドライブをマウントする手順と、接続エラーへの対処法
  • 共有ドライブ(Team Drive)を扱う手順と、現在は必須となった OAuth クライアント ID の作成

方法は大きく 3 つに分かれます。マイドライブを手軽に使うなら GNOME オンラインアカウント、共有ドライブを扱うなら google-drive-ocamlfuseまたは rclone が選択肢になります。なお google-drive-ocamlfuseと rclone は、いずれも自前の OAuth クライアント ID の作成が前提となる点に注意が必要です。

ローカルの外付けドライブ(NTFS/exFAT)のマウントについては、関連記事『Linux で NTFS・exFAT の権限が変更できない原因とマウント設定』もあわせて参照してください。

3 つのマウント方法と選び方

Ubuntu で Google Drive をマウントする主な方法は次の 3 つです。用途(マイドライブのみか共有ドライブも使うか)と、自動マウントの要否で選びます。

項目GNOME オンラインアカウントgoogle-drive-ocamlfuserclone
方式GUI 標準機能(GVfs)FUSE マウントFUSE マウント
マイドライブ対応対応対応
共有ドライブ(Team Drive)非対応対応対応
認証GUI でログイン自前 OAuth クライアント ID自前 OAuth クライアント ID
自動マウントログイン時に自動手動または要設定systemdで自動化可能
導入の手間小(数ステップ)
メンテナンス状況OS 標準継続活発

選び方の目安は次のとおりです。

  • 個人のマイドライブを手軽に GUI で使いたい場合: GNOME オンラインアカウント
  • 共有ドライブを扱いたい場合: google-drive-ocamlfuseまたは rclone
  • 共有ドライブに加えて自動マウントや他クラウドとの併用も視野に入れる場合: rclone

標準機能でマイドライブをマウントする(GNOME オンラインアカウント)

Ubuntu Desktop には「GNOME オンラインアカウント」が標準で備わっており、数ステップの GUI 操作で個人の Google アカウント(マイドライブ)をファイルマネージャーにマウントできます。共有ドライブには対応していないため、共有ドライブを扱う場合は後述の google-drive-ocamlfuseまたは rclone を使います。

設定とマウント手順

  1. 画面の「アプリケーションを表示する」から「設定」を開き、左メニューの「オンラインアカウント」を選択します。ターミナルから gnome-control-center online-accountsを実行して直接開くこともできます。
  2. アカウントの一覧から「Google」を選び、ブラウザで対象の Google アカウントにログインし、アクセスを許可します。
  3. 標準の「ファイル」アプリを開くと、左側のサイドバーに追加した Google アカウントが表示されます。これを右クリックして「マウント」を選択します。

これで、ローカルのディレクトリと同様に Google Drive 上のファイル(マイドライブ)を GUI で操作できます。マウントしたディレクトリ上で右クリックして「端末で開く」を選べば、コマンドライン(CLI)からのアクセスも可能です。

接続エラー「インターネット接続がありません」への対処

オンラインアカウントの設定時に、ブラウザでは問題なくインターネットに接続できているにもかかわらず、「インターネット接続がありません」というエラーで Google へのログインが進まない場合があります。

この現象は、Ubuntu のネットワーク管理(Netplan)がサーバー向けの networkdで動作している場合に、GUI 側のネットワーク管理ツール(NetworkManager)が接続状態を正しく認識できないことが原因で発生します。対処として、Netplan のレンダラーを NetworkManagerに変更します。

まず、既存の Netplan 設定をバックアップして退避します。設定ファイルを直接削除すると元に戻せなくなるため、削除ではなく移動による退避をおすすめします。

sudo mkdir -p /root/netplan-backup
sudo mv /etc/netplan/*.yaml /root/netplan-backup/

新しい設定ファイルを作成します。

sudo nano /etc/netplan/01-network-manager-all.yaml

次の内容を記述して保存します。

network:
  version: 2
  renderer: NetworkManager

設定ファイルのパーミッションを 600にし(他ユーザーから読めると警告が出るため)、設定を適用してから NetworkManager を再起動します。

sudo chmod 600 /etc/netplan/01-network-manager-all.yaml
sudo netplan generate
sudo netplan apply
sudo systemctl restart NetworkManager

再起動後に再度「オンラインアカウント」を開き、Google へのログインが進むか確認します。もとの構成に戻す場合は、退避した設定ファイルを /etc/netplan/へ戻して再適用します。

共有ドライブをマウントする(google-drive-ocamlfuse)

GNOME オンラインアカウントは共有ドライブに対応していないため、共有ドライブ(Team Drive)を扱う場合は専用ツールの google-drive-ocamlfuseを使います。

ここで注意したいのが認証方式の変更です。Google は OAuth の「OOB(out-of-band)フロー」を 2023 年 1 月 31 日に完全廃止しました。これにより、以前のように google-drive-ocamlfuseを実行するだけでは認証できなくなり、現在は自前の OAuth クライアント ID とシークレットを作成して渡す手順が前提となります。

OAuth クライアント ID を作成する(現在は必須)

Google Cloud Console で、認証に使うクライアント ID を作成します。

  1. Google Cloud Console でプロジェクトを作成(既存のものでも可)します。
  2. 「API とサービス」から「Google Drive API」を有効化します。
  3. OAuth 同意画面を設定します。公開ステータスを「テスト」のままにすると認証トークンが約 7 日で失効するため、自分自身をテストユーザーに追加したうえで、継続利用するなら「本番(In production)」に切り替える運用をおすすめします。
  4. 「認証情報」→「認証情報を作成」→「OAuth クライアント ID」と進み、アプリケーションの種類で「デスクトップ アプリ」を選びます。
  5. 表示されたクライアント ID とクライアント シークレットを控えます。

参考: Authorization — astrada/google-drive-ocamlfuse Wiki
“You have to create your own OAuth2 client ID and client secret”
(自前の OAuth2 クライアント ID とシークレットを作成する必要がある)
https://github.com/astrada/google-drive-ocamlfuse/wiki/Authorization

インストールと認証

専用の PPA を追加してパッケージをインストールします。

sudo add-apt-repository ppa:alessandro-strada/ppa
sudo apt update
sudo apt install google-drive-ocamlfuse

控えておいたクライアント ID とシークレットを指定して認証します。ブラウザが起動して認証画面が表示されるので、アクセスを許可します。認証コードは、ツールに組み込まれたローカルサーバー(既定でポート 8080)が受け取ります。

google-drive-ocamlfuse -id <クライアントID>.apps.googleusercontent.com -secret <クライアントシークレット>

GUI を持たないサーバーで認証する場合は、-headlessオプションを使います。表示された URL を別の端末のブラウザで開き、得られた認証コードを貼り付けます。

google-drive-ocamlfuse -headless -id <クライアントID>.apps.googleusercontent.com -secret <クライアントシークレット>

共有ドライブ ID の指定とマウント

認証が完了すると、ホームディレクトリに設定ファイルが自動生成されます。共有ドライブをマウント先に指定するため、設定を変更します。

まず、マウント先へ他プロセスからアクセスできるよう、/etc/fuse.confuser_allow_otherを有効化します。

sudo sed -i -e "s/^#user_allow_other$/user_allow_other/" /etc/fuse.conf

生成された設定ファイルを開き、対象の共有ドライブ ID を指定します。共有ドライブ ID は、ブラウザで対象の共有ドライブを開いたときの URL に含まれる文字列です。

vi ~/.gdfuse/default/config

ファイル内の team_drive_id=の項目に、ID を追記して保存します。

team_drive_id=共有ドライブのID

マウント用の空ディレクトリ(ここでは ~/GoogleDrive)を作成し、マウントを実行します。

mkdir ~/GoogleDrive
google-drive-ocamlfuse ~/GoogleDrive

これで、指定したローカルディレクトリから共有ドライブ内のファイルへアクセスできます。マウントを解除する場合は、次のコマンドを実行します。

fusermount -u ~/GoogleDrive

rclone でマウントする(共有ドライブ対応の代替)

google-drive-ocamlfuseの代替として、rclone も有力な選択肢です。rclone はメンテナンスが活発で、マイドライブと共有ドライブの両方に対応し、systemdを使った自動マウントも構成できます。複数のクラウドストレージを 1 つのツールで扱える点も利点です。

インストールと OAuth クライアント ID

rclone をインストールします。

sudo apt install rclone

最新版を使う場合は、公式のインストールスクリプトも利用できます。

curl https://rclone.org/install.sh | sudo bash

rclone でも、google-drive-ocamlfuseと同様に自前の OAuth クライアント ID(デスクトップ アプリ)の作成をおすすめします。既定では rclone 共有のクライアント ID が使われますが、レート制限がかかり速度が低下します。作成手順は前述の google-drive-ocamlfuseの項と同じです。

参考: Google drive — rclone documentation
“It is strongly recommended to use your own client ID”
(自前のクライアント ID の使用を強くおすすめする)
https://rclone.org/drive/

rclone config でリモートを作成する

対話形式でリモート(接続設定)を作成します。

rclone config

主なプロンプトへの入力は次のとおりです。

  • n) New remoteを選び、名前(例: gdrive)を入力する。
  • ストレージの種類で drive(Google Drive)を選ぶ。
  • client_idclient_secretに、作成したクライアント ID とシークレットを入力する。
  • scope1drive: フルアクセス)を選ぶ。
  • root_folder_idservice_account_fileは空欄のまま進む。
  • Edit advanced config?n
  • Use auto config?は、GUI 環境なら y(ブラウザで認証)、ヘッドレスなら n
  • Configure this as a Shared Drive (Team Drive)?で、共有ドライブを使う場合は yを選び、一覧から対象の共有ドライブを選択する。

設定内容を確認して保存すると、リモートが作成されます。

マウントと自動マウント(systemd)

作成したリモートをローカルディレクトリにマウントします。--vfs-cache-mode writesは、書き込みの安定性を高めるために指定します。

mkdir -p ~/GoogleDrive
rclone mount gdrive: ~/GoogleDrive --vfs-cache-mode writes

マウントを解除する場合は、次のコマンドを実行します。

fusermount -u ~/GoogleDrive

ログイン時に自動でマウントするには、ユーザー単位の systemdサービスを作成すると管理しやすくなります。~/.config/systemd/user/gdrive.serviceを作成し、次の内容を記述します。

[Unit]
Description=rclone mount for Google Drive
After=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/rclone mount gdrive: %h/GoogleDrive --vfs-cache-mode writes
ExecStop=/bin/fusermount -u %h/GoogleDrive
Restart=on-failure

[Install]
WantedBy=default.target

サービスを有効化して起動します。

systemctl --user daemon-reload
systemctl --user enable --now gdrive.service

まとめ

Ubuntu で Google Drive をマウントする方法は、用途によって 3 つに分かれます。マイドライブだけなら GNOME オンラインアカウント、共有ドライブを扱うなら google-drive-ocamlfuseか rclone が選択肢です。後者 2 つは、現在は自前の OAuth クライアント ID の作成が前提となります。

  • Google 公式の Drive for Desktop は Linux 非対応
  • マイドライブは GNOME オンラインアカウントで GUI マウント
  • 接続エラーは Netplan のレンダラーを NetworkManager に変更
  • 共有ドライブは google-drive-ocamlfuseか rclone で対応
  • OOB 廃止により自前 OAuth クライアント ID が必須
  • 公開ステータスがテストだとトークンは約 7 日で失効
  • rclone は共有ドライブ対応で systemd自動マウントも可能

以上、最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

関西を拠点に活動する、現役インフラエンジニア。経験20年超。

大手通信キャリアにて、中〜大規模インフラ(ネットワーク・サーバ・クラウド・セキュリティ)の設計・構築およびプロジェクトマネジメントに従事。現場で直面した技術課題への対処や、最新の脆弱性情報への実務対応を、一次情報として発信しています。

保有資格
CCIE Lifetime Emeritus(取得から20年以上)/ VCAP-DCA / Azure Solutions Architect Expert

▶ 運営者プロフィール(詳細)

目次