最初にファイルを公開して共有可能にします:-
小さなファイルのダウンロードに使用します
wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILEID' -O FILENAME
大きなファイルの場合
wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILEID' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=FILEID" -O FILENAME && rm -rf /tmp/cookies.txt
しかし、公に共有可能なリンクを作成せずにそれを行うにはどうすればよいですか?
注:wgetは私にとって必須ではありません。他のソフトウェアを知っている場合は、私をお勧めしますが、次の機能が含まれている必要があります。
rclone
https://rclone.org/ を見てみてください
非常に完全な機能セットがあり、コマンドラインベース(構文はrsync
に非常に似ています)および Googleドライブをサポート OAuth経由です。まさにあなたが探しているものでなければなりません。
getgoogle
というbashスクリプトをPATHのどこかに作成します。/usr/local/binまたは〜/ bin(環境にマッピングしている場合)
#!/bin/bash
if [[ $1 == *"id="* ]]; then
ID=${1##*'id='}
else
ID=$1
fi
echo "Retrieving Google drive item with ID $ID"
wget --no-check-certificate -r "https://docs.google.com/uc?export=download&id=$ID" -O $(curl -s "https://drive.google.com/file/d/$ID/
view?usp=sharing" | grep -o '<title>.*</title>' | cut -d'>' -f2 | awk -F ' - Goo' '{print $1}')
次のコマンドを実行して保存した後、必ずgetgoogle
スクリプトの権限を変更してください。
chmod u+x getgoogle
getgoogle <URL|ID>
完全なリンクがURL
であるか、識別子ID
であるかにかかわらず、Googleドライブのアイテムをダウンロードし、ダウンロード時にGoogleドライブにアップロードされたファイルの元のファイル名に名前を変更します。
以前の多くの方法は機能しなくなりましたが、次の方法が引き続き機能することがわかりました(少なくとも今日は)。
wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILE_ID' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=FILE_ID" -O FILE_NAME && rm -rf /tmp/cookies.txt
(FILE_IDとFILE_NAMEを、GoogleドライブのダウンロードリンクからのファイルIDと、ダウンロードするファイルの名前に置き換えます)
(回答は元々 https://silicondales.com/tutorials/g-suite/how-to-wget-files-from-google-drive/ )にあります