Google driveのアクセス方法とその他の手段について ( gdrive / rclone / sshfs / gio )

1.概要

Google Driveをubuntu環境で利用する方式を調べました。gdriveはGoogle推奨です。
Google Driveをコマンドラインで使えるコマンドのgdriveを試したのですが、「そのようなファイルやディレクトリはありません」となり、原因を調べました。gdrive v3は動作するようになったのですが、参考資料にようにならず、希望する動作をしません。その内容を記述します

2.詳細

参考資料に従って、GdriveのVersion2を導入しました。
環境はUEFI CSM環境のubuntu-20.04.6です。

(a) gdrive_2.1.1_linux_amd64.tar.gz
$ ./gdrive
bash: ./gdrive: そのようなファイルやディレクトリはありません
動作しません。

(b) gdrive_2.1.1_linux_386.tar.gz
$ ./gdrive
No valid arguments given, use 'gdrive help' to see available commands
こちらは動作します。

(c) gdrive_linux-x64.tar.gz
Gdrive Version-3 (gdrive_linux-x64.tar.gz)を試しました
$ ./gdrive
Usage: gdrive <COMMAND>

Commands:
  about        Print information about gdrive
  account      Commands for managing accounts
  drives       Commands for managing drives
  files        Commands for managing files
  permissions  Commands for managing file permissions
  version      Print version information
  help         Print this message or the help of the given subcommand(s)

Options:
  -h, --help  Print help information
 
動作します。
 
(d) sudo apt install musl後、gdrive_2.1.1_linux_amd64.tar.gz
$ sudo apt install musl
$ ./gdrive
No valid arguments given, use 'gdrive help' to see available commands

動作しました。

(e) 実行
gdrive list

を実行して、表示されるURLをブラウザに貼り付けたのですが、エラーとなりました。

3.所見

gdrive v3はAPIを利用するのですが、コマンドベースで利用を調査して、うまく行きませんでした。そこで、google-drive-ocamlfuseを試してみて期待通りに動作したので少し深く調査をしました。今、思うことはプログラムするのであればgdrive v3、コマンドで利用するのであればrcloneが良いと思っています。

4.その他の方法

(1)google-drive-ocamlfuse

GoogleDrieをLinux環境でfuse mountして利用します。mountされているのでshellコマンドが利用できますが、Google Driveのアクセス速度が遅くて、エラーが多数発生するのが難点です。当初はパスワード認証が利用できたのですが、Oauth2の認証に変更となりました。

導入からmount/unmountの流れは以下の通りです。

(a) google-drive-ocamlfuseの導入

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

(b) google認証

google-drive-ocamlfuse
ブラウザ上にpopup表示されるのでGoogleアカウントの認証をします

(c) MyDriveのmount

マウントポイントを作成します
mkdir ~/mygdrive
google-drive-ocamlfuse ~/mygdrive

(d) MyDriveのumount

fusermount -u ~/mygdrive

(e) oAuth2認証

パスワード認証をOauth2認証に変更する手順です
google developer consoleでOauth2の認証設定を実施して、idとsecretを利用してOAuth2でloginします
google-drive-ocamlfuse -id xxxxxxxxxx.apps.googleusercontent.com -secret XXX-YYY-ZZZ

(2)rclone

様々なクラウド共有ドライブに対応しています。この方式もOauth2認証です。このソフトウェアを私は推奨します。

(a) install

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

(b) config

rclone config
ここでmicrosoft onedriveを定義して、認証を受けます。
参考資料に沿って作業します

(c) mount

mkdir msonedrive
sudo ln -s /bin/fusermount /bin/fusermount3
rclone mount onedrive: msonedrive
ls msonedrive

rclneをmountして利用したのですが、本来はscpのようなネット経由のcopyで利用するのが正しい使い方のようです。

(3)sshfs

ssh利用できる環境でファイルシステムのようにmountする仕組みです。クラウド共有ドライブ向けではありませんが、クラウド仮想マシンとのデータ受け渡しには良さそうです。

下記ssh loginができる前提とします。
ssh username@192.168.122.201

sshfsでmountしてみます。
mkdir sshfs-mnt
sshfs username@192.168.122.201: sshfs-mnt
ls ./sshfs-mnt/

(4)gio

ubuntuやLinuxMintのdesktopからsambaサーバへのアクセスで利用されています。
クラウド接続もできますが、セキュリティ面からLocal接続が望ましいと思います。
詳細は添付資料を参照願います。

ubuntu desktopからsambaサーバへのアクセスについて

長い間気にすることなく、NASへのアクセスをUbuntu GUIから実行していました。GUI上の操作で問題とならない程度の作業量だったので、shellコマンドでアクセスしたいと思うことは今までありませんでした。ふとしたことで、shellコマンドでアクセスしようとするとmount pointがありません。アレッと思い調べた内容を記述します。

参考資料のgioを利用しているようです。UbuntuのFile Managerに設定している内容を利用して、gio fileコマンドを利用するとNASの内容を参照できました。しかし、gioは正規表現をサポートしていないようです。shellコマンドで実行したかったことを正規表現を使用せずに実現するのは少し手間がかかります。

参考

[本ブログ内参照]
ubuntuでFirefoxのパッケージ管理をsnapからdebianへ変更しました

[外部サイト参照]
[Google Drive API v3] JavaでDrive APIを使う
Google Driveをコマンドラインから扱う(Gdrive使用)
第640回 gioコマンドを使ってコマンドラインからリモートのファイルを制御する

コメント

過去30日間に良く読まれた記事

miniPCのBMAXでWindows11のsecure boot設定漏れでトラブル発生

Windows95/98のPCゲームをUbuntu/LinuxMintの最新PCで楽しむ方法 ( KVM / Wine / dosbox-x / midi )

LinuxMint/ubuntuにWine 11導入を試しました ( LinuxMint 21.3 / 22.3 ubuntu 22.04 / 26.04 Wine 11.0 / 11.6 / 11.8 / 11.13 )