LoginSignup
12
7

More than 3 years have passed since last update.

【2019/10/15追記】ColaboratoryでGoogleチームドライブをマウントする方法

Last updated at Posted at 2018-09-23

2019/10/15 追記

またマウントできなくなっていたので直しました。
諸事情で変数名も変わっていますが、気にしないでください。

それにしてもconfigファイルでteam_drive_idがチームドライブの一番上の階層のIDで
root_folderがマウントしたいフォルダのIDという仕様が気になる…
root って言われるとそれが一番上に思えてしまう。

#共有ドライブ(旧チームドライブ)
team_drive_name = "team_drive"
team_drive_root_id = "共有ドライブの最上位のディレクトリのIDを設定"
team_drive_id = "マウントしたいディレクトリのIDを設定"

# おまじない
!add-apt-repository -y ppa:alessandro-strada/ppa > /dev/null 2>&1
!apt-get update -qq > /dev/null 2>&1
!apt-get -y install -qq google-drive-ocamlfuse > /dev/null 2>&1

from google import colab as co
import json

# 認証①
co.auth.authenticate_user()

# 認証②
with open('./adc.json', 'r') as f:
    json_dict = json.load(f)
client_id = json_dict['client_id']
client_secret = json_dict['client_secret']
!google-drive-ocamlfuse -headless -id={client_id} -secret={client_secret}

# チームドライブをマウント
!cp -f ~/.gdfuse/default/config tconfig
!sed -i -e "s/^team_drive_id=$/team_drive_id={team_drive_root_id}/" tconfig
!sed -i -e "s/^root_folder=$/root_folder={team_drive_id}/" tconfig
!mkdir -p {team_drive_name}
!google-drive-ocamlfuse -config ./tconfig -cc {team_drive_name}

2018/9/26 追記

この手順で確かにマウントはできますが、変更内容の反映にだいぶ時間がかかるとか、
再マウントして初めて変更が反映したというような声を聞きました。
変更反映に時間がかかるんでしょうかね?

うーむ、そんな問題があったとは…

はじめに

Colaboratory で Google チームドライブをマウントする方法が意外と見つからなかったので、
じゃあ自分で書いてしまおうと重い腰を上げた次第です。
少しでも同じことをやりたいなぁと思っている方々の助けになれば幸いです。

【復習】Google マイドライブ等をマウントする

マイドライブやその他特定ディレクトリのマウント方法は こちら を参考にさせて頂きました。
(メチャ分かりやすくて助かりました。この場を借りてお礼申し上げます)

…しかし、トラブル発生。最初はこれで動いてたんですが、ある日急に google-drive-ocamlfuse のインストールで怒られるようになりました。

E: Unable to locate package google-drive-ocamlfuse

なんだこれ?と思って調べたら製作者様の git issue にこんな記述が。

キャプチャ.PNG

「パッケージ消しちゃったYO! DL して dpkg でインストールしてくれ、HAHAHA!!」的な??

それならば仕方あるまい。最初のパッケージ群インストール部をこのように変更したところ
無事マイドライブをマウントできました。
(もちろん任意フォルダもマウントできましたよ~)

!apt-get install -y -qq software-properties-common python-software-properties module-init-tools libfuse2
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!wget https://launchpad.net/~alessandro-strada/+archive/ubuntu/ppa/+files/google-drive-ocamlfuse_0.7.0-0ubuntu1~ubuntu18.04.1_amd64.deb
!dpkg --install google-drive-ocamlfuse_0.7.0-0ubuntu1~ubuntu18.04.1_amd64.deb
!apt-get -y install -qq fuse

変更点を一応書いておきます。

  • 最初に libfuse2 も apt-get install する
  • google-drive-ocamlfuse は wget で落として dpkg でインストールする

Google チームドライブをマウントする

さて、ようやく本題へ。チームドライブのマウント方法は、 公式のwiki にありました。
早速結論。こんな感じにすればOKです。

!cp -f ~/.gdfuse/default/config tconfig
!sed -i -e "s/^team_drive_id=$/team_drive_id=[TEAM_DRIVE_ROOT_FOLDER_ID]/" tconfig
!sed -i -e "s/^root_folder=$/root_folder=[TEAM_DRIVE_FOLDER_ID]/" tconfig
!mkdir -p teamdrive
!google-drive-ocamlfuse -config ./tconfig -cc teamdrive
!ls teamdrive

ポイントはこの2点。

  • [TEAM_DRIVE_ROOT_FOLDER_ID] はチームドライブの ROOT (一番上の階層)フォルダの ID を指定する
  • [TEAM_DRIVE_FOLDER_ID] はチームドライブ内の実際にマウントしたいフォルダの ID を指定する

う~ん簡単♪

最後に

この記事を書いている内に知ったんですが、 こちら のように今はたった2行でマイドライブをマウントできるようです。

from google.colab import drive
drive.mount('/content/drive')

チームドライブも実はもっと簡単にマウントできる方法があるのかもしれませんね。

参考にさせて頂いた記事

12
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
7