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を試してみて期待通りに動作したので少し深く調査をしました。oAuth2問題が改善したことで使えると判断を一度しました。
実際にgoogle-drive-ocamlfuseは利用を開始したのですが、実行速度が遅い、キャッシュ容量不足問題、マウントドライブをメンテナンスなどの理由でGoogle側で切断、空ファイル作成問題、oAuth2への仕様変更等の様々な問題に遭遇しました。
今、思うことはプログラムするのであればgdrive v3、コマンドで利用するのであればrcloneが良いと考えます。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コマンドで実行したかったことを正規表現を使用せずに実現するのは少し手間がかかります。
(5) One Drive
Google Driveのマウントができたので、Microsoft One Driveにチャレンジしました。ネットの記事を探してあれこれ実行しましたが、結果として、onedriveというアプリを利用する方法は目的に合わない方法でした。試行錯誤したのでその内容に沿って記述します。
(a) ubuntu 標準リポジトリを利用したonedrive
sudo apt install onedrive
でインストールできますが、"error": "invalid_grant"になります。
(b) yann1ck/onedrive
やはり、"error": "invalid_grant"になります。
(c) skilion/onedrive
gitからdownloadしてbuildしたのですが、"error": "invalid_grant"になります。
(d) abraunegg/onedrive
gitの手順は理解が難しく、参考資料を参照しました。
この手順でonedriveは動作します。
onedrive --synchronize
を実行すると、ホームの中に、OneDriveディレクトリが作成されて、
Windows11で利用しているOneDriveの内容を参照できました。
しかし、この同期を切り離すことがわかりません。mount/umount機能を利用してOneDriveを利用することが目標だったので、onedriveアプリはこの目的には使えない方法のようです。
参考
[本ブログ内参照]
・ubuntuでFirefoxのパッケージ管理をsnapからdebianへ変更しました
[外部サイト参照]
・[Google Drive API v3] JavaでDrive APIを使う
・Google Driveをコマンドラインから扱う(Gdrive使用)
・第640回 gioコマンドを使ってコマンドラインからリモートのファイルを制御する
・How to Install Microsoft OneDrive on Ubuntu
コメント
コメントを投稿