CLIやGoogle Colaboratory上からGoogle Driveからファイルをwgetする一番手間のいらない方法

プログラミング・数学・英会話
スポンサーリンク

Linuxなどでキーボードで作業しているときやGoogle Colaboratory上での作業中、シェルスクリプトで作業を自動化したいときに、ファイルをwgetしてダウンロードしたいことがあります

wgetで直接URLを指定すれば良い場合がほとんとですが、Google Driveのファイルの場合は単純にリンクのURLを指定してwgetするだけでは上手くいきません

sshなどでリモートにLinux環境にアクセスして作業をしているときは、わざわざファイルをダウンロードして、そのファイルをsftpで送ってなどの作業は手間なのでやりたくないです

Google Colaboratoryで作業中にファイルを一度ダウンロードしてからGoogle Colaboratoryにアップロードしてというのは手間です

また、Gitなどでソースコードを管理するときにサイズの大きいファイルやモデルファイルなどはGoogle Driveなどで管理したいものです

そういうときにGoogle Driveからの自動ダウンロードスクリプトを合わせてコミットしておいてあげると親切なので、この記事で紹介する方法でスクリプトを作っておきましょう

とうことでGoogle Drive上のファイルをwgetする方法について一番楽な方法を紹介します

スポンサーリンク

Google Driveからファイルをwgetする方法

ファイルIDを調べる

ダウンロードに必要になってくるのがファイルIDです

ファイルへのリンクが貼られている場合

まずは下記のようにファイルへのリンクが直接貼られている場合のファイルIDの調べ方です

File Link

右クリックメニューで「リンクのアドレスをコピー」を選択するか、リンクの先のURLを確認すると、下記のようなURLが得られます

「https://drive.google.com/open?id=1znsM6E-aVTkATreDuUVxoU0ajL1az8rz

「https://drive.google.com/file/d/1znsM6E-aVTkATreDuUVxoU0ajL1az8rz/view」

「https://drive.google.com/uc?id=1Q-Sqfrea0JTgg2ar98EfnfCCAGzSsAt2&export=download」

上記の緑の部分がファイルIDになります

一番最後のものはファイルが大きい場合に遷移した先のURLになります

ファイルフォルダへのリンクが貼られている場合

次に下記のようにファイルフォルダへのリンクが貼られている場合のファイルIDの調べ方です

File Folder

まずリンクの先に移動し、ファイルを右クリックして「共有可能なリンクを取得」を選択すると下記のURLが表示されます

「https://drive.google.com/file/d/1Q-Sqfrea0JTgg2ar98EfnfCCAGzSsAt2/view?usp=sharing」

上記の緑の部分がファイルIDになります

ファイルを取得する

下記のように先ほど調べたFILE_IDを指定すればwgetでGoogle Driveからファイルをダウンロードすることができます!

$ FILE_ID=[ここにファイルIDを指定する]
$ wget --content-disposition "https://drive.google.com/uc?export=download&id=${FILE_ID}"

例えば下記のようにします

$ FILE_ID=1Q-Sqfrea0JTgg2ar98EfnfCCAGzSsAt2
$ wget --content-disposition "https://drive.google.com/uc?export=download&id=${FILE_ID}"

Google Colaboratoryでwgetする方法

Google Colaboratoryでwgetなどのシステムコマンドを実行したいときは前に!をつければ実行できます

!FILE_ID=1Q-Sqfrea0JTgg2ar98EfnfCCAGzSsAt2
!wget --content-disposition "https://drive.google.com/uc?export=download&id=${FILE_ID}"

Google Colaboratory上の環境で必要なライブラリをインストールしたり、システムコマンドを実行するときによく使いますのでついでに覚えておきましょう

最後に

ファイルIDを調べるのは少し面倒な部分は残りますが、一度調べてスクリプト化しておけば自動化できます

要領の大きいファイルをGoogle Driveにおいておいて、それを取得するシェルスクリプトを作っておけば、gitにはそのスクリプトをコミットしておくなどの管理もできて便利ですね!

コメント

Copied title and URL