概要
Google Driveからwgetでファイルを取得する際、大きいサイズのファイルだとウイルススキャンが必要となりダイアログ認証のせいでうまく取得することができません。
Google Colaboratory等の場合、ローカルにおいてあるファイルをアップロードすることは可能ですが非常に時間がかかります。1つのファイルを送るためにGoogle Driveをマウントするのも手間です。
そこで今回は、ウイルススキャンを伴うサイズのファイルをGoogle Driveから1回のwgetで取得していきます。
サイズの小さいファイルの取得
サイズの小さいファイルをwgetで取得する方法は他の方の記事で取り上げられていますが、同じ方法でサイズの大きいファイルを取得しようとすると画像のように上手く取得できません。
画像では730MBの学習済みモデルの取得を試みましたが、実際に取得できているのは3.2KBです。
一般的なサイズの取得は下記の記述で行います。
wget "https://drive.google.com/uc?export=download&id=<共有リンクのファイルID>" -O <任意のファイル名.拡張子>
サイズの大きいファイルの取得
ウイルススキャンを伴う大きいサイズの取得は以下の記述で行います。
先程と同様に730MBの学習済みモデルの取得を行います。
wget --load-cookies /tmp/cookies.txt "https://drive.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://drive.google.com/uc?export=download&id=<共有リンクのファイルID>' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=<共有リンクのファイルID>" -O <任意のファイル名.拡張子> && rm -rf /tmp/cookies.txt
1回のwgetで730MB全てを取得することができました。
今回はGoogle Colaboratory上で行いましたが、一般的なターミナル上でも取得できます。