CREATIVE HUB

Loading

本文へ移動

BLOG

[Tips] Google Driveとのコンテンツ連携(Linux)

LinuxTipsLinuxTips 266 views

描いたイラストなどをサーバ(Linux)で解像度変更等を実施しているのですが、処理の流れで「Google ドライブ」へファイルをアップロードしてバックアップをするための方法です。

なるべく手を抜くことをモットーとしているので、世の中で提供されているものをなるべく使います。
今回は、「gdrive」というGoogleドライブと同期をとるツールを利用します。

導入方法などは以下サイトを参考にしました。
https://www.nextdoorwith.info/wp/se/linux-gdrive/

早速ですが、導入して同期ができない問題が発生。
よくよく調べると提供しているgdrive実行ファイルの中で、Google Drive APIで使用しているキー情報が固定で埋め込まれていることから、1日の使用量上限にすぐに到達してしまっているよう…

この記事はその辺の解決までに至った手順を粗々で記載します(o^―^o)ニコ

参考にしたサイトはコチラ
https://7mc.org/2019/03/04/prasmussen_gdrive_403_error_solution.html

1.コンパイル環境の準備

gdriveはGOというプログラミング言語で作られているので、下記コンパイル環境を取得します。
https://golang.org/dl/

2.プロジェクト環境の準備

GitHubからプロジェクトを取り込むためにGitもインストール。
https://git-scm.com/downloads

3.プロジェクトファイルのダウンロード

「gdrive」にアクセスし、「Clone or download」ボタンからソース一式をダウンロードします。

4.APIの登録

Google Developer APIにアクセスしAPIを登録します。
https://console.developers.google.com/apis/dashboard
1)「新しいプロジェクト」を選択し作成
2)「APIとサービスを有効化」から「Google Drive API」を選択
3)「Google Drive API」で「有効にする」を選択し、APIを有効化する
4)「Google Drive API」で「認証情報」を選択する

5)「同意画面を構成」を選択する
6)「OAuth 同意画面」で「アプリケーション名」を入力し「保存」を選択する

7)「認証情報を作成」→「ウィザードで選択」を選択する

8)「プロジェクトへの認証情報の追加」画面で情報を入力し、「必要な認証情報」を選択

使用するAPI:「Google Drive API」を選択
APIを呼び出す場所:その他のUI(Windows、CLIツールなど)
アクセスするデータの種類:「ユーザーデータ」を選択
9)「OAuthクライアントIDを作成」を選択

10)「完了」を選択
11)「認証情報」を選択し、該当のクライアントID、シークレットを確認

5.ソース変更

3項で取得したプロジェクト内の「handlers_drive.go」をメモ帳等で開き、4項で取得したクライアントID、シークレットを書き換える。
対象箇所:ClientId,ClientSecret
[cc lang=”php”]
import (
“fmt”
“io”
“io/ioutil”
“net/http”
“os”
“path/filepath”
“time”

“github.com/prasmussen/gdrive/auth”
“github.com/prasmussen/gdrive/cli”
“github.com/prasmussen/gdrive/drive”
)

const ClientId = “367116221053-7n0vf5akeru7on6o2fjinrecpdoe99eg.apps.googleusercontent.com”
const ClientSecret = “1qsNodXNaWq1mQuBjUjmvhoO”
const TokenFilename = “token_v2.json”
const DefaultCacheFileName = “file_cache.json”

func listHandler(ctx cli.Context) {
[/cc]

6.コンパイル/ビルド

コマンドプロンプトを起動し、5項で変更した「handlers_drive.go」が格納されているフォルダまで移動
以下コマンドを実行しコンパイルを実行

今回はLinux上で動作させたいためクロスコンパイル(Windows→Linux)を実施する。
下記サイトを参考に実施しました。
http://web-technical.hatenablog.com/entry/2017/11/14/113231
私の環境がWindowsなので、Windows目線で記載しています。

go get github.com/prasmussen/gdrive

1)外部ライブラリを導入
[cc lang=”bash”]
go get github.com/prasmussen/gdrive
[/cc]

2)現在の環境変数の確認
[cc lang=”bash”]
go env
[/cc]

3)実行環境がLinuxの64bit版なので、以下を設定
[cc lang=”bash”]
set GOOS=linux
set GOARCH=amd64
[/cc]

4)ビルド
[cc lang=”bash”]
go build
[/cc]

同階層に作成された実行ファイル「gdrive-master」を使用してください。