615 Stimmen

Wget/curl große Datei von Google Drive herunterladen

Ich versuche, eine Datei von Google Drive in einem Skript herunterzuladen, und habe dabei ein kleines Problem. Die Dateien, die ich herunterladen möchte, sind hier.

Ich habe online intensiv nach Informationen gesucht und es schließlich geschafft, eine davon herunterzuladen. Ich habe die UIDs der Dateien bekommen und die kleinere (1,6 MB) wird ohne Probleme heruntergeladen, jedoch wird die größere Datei (3,7 GB) immer auf eine Seite umgeleitet, die mich fragt, ob ich den Download ohne Virenscan fortsetzen möchte. Kann mir jemand helfen, diese Seite zu umgehen?

So habe ich die erste Datei zum Laufen gebracht -

curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYeDU0VDRFWG9IVUE" > phlat-1.0.tar.gz

Wenn ich dasselbe mit der anderen Datei mache,

curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM" > index4phlat.tar.gz

Bekomme ich die folgende Ausgabe - enter image description here

Ich bemerke auf der vorletzten Zeile des Links, dass ein &confirm=JwkK vorhanden ist, was eine zufällige 4-Zeichenfolge ist, aber darauf hinweist, dass es einen Weg gibt, eine Bestätigung zu meiner URL hinzuzufügen. Einer der Links, den ich besucht habe, schlug &confirm=no_antivirus vor, aber das funktioniert nicht.

3voto

Grey Christoforo Punkte 111

Hier ist ein kleines Bash-Skript, das die Aufgabe heute erledigt. Es funktioniert mit großen Dateien und kann auch teilweise heruntergeladene Dateien fortsetzen. Es nimmt zwei Argumente entgegen, das erste ist die file_id und das zweite ist der Name der Ausgabedatei. Die Hauptverbesserungen gegenüber früheren Antworten hier sind, dass es mit großen Dateien funktioniert und nur auf allgemein verfügbare Tools angewiesen ist: bash, curl, tr, grep, du, cut und mv.

#!/usr/bin/env bash
fileid="$1"
destination="$2"

# Versuche, die Datei herunterzuladen
curl -c /tmp/cookie -L -o /tmp/probe.bin "https://drive.google.com/uc?export=download&id=${fileid}"
probeSize=`du -b /tmp/probe.bin | cut -f1`

# Haben wir eine Virusmeldung erhalten?
# Dies wird die erste Zeile sein, die wir erhalten, wenn wir versuchen, eine große Datei abzurufen
bigFileSig='Google Drive - Virus scan warning'
sigSize=${#bigFileSig}

if (( probeSize <= sigSize )); then
  virusMessage=false
else
  firstBytes=$(head -c $sigSize /tmp/probe.bin)
  if [ "$firstBytes" = "$bigFileSig" ]; then
    virusMessage=true
  else
    virusMessage=false
  fi
fi

if [ "$virusMessage" = true ] ; then
  confirm=$(tr ';' '\n'

2voto

Vikas Gautam Punkte 1599

Hier ist der Workaround, den ich gefunden habe, um Dateien vom Google Drive in meine Google Cloud Linux-Shell herunterzuladen.

  1. Teilen Sie die Datei ÖFFENTLICH und mit Bearbeitungsberechtigungen über erweiterte Freigabe.
  2. Sie erhalten einen Freigabelink, der eine ID enthält. Siehe den Link:- drive.google.com/file/d/[ID]/view?usp=sharing
  3. Kopieren Sie diese ID und fügen Sie sie in den folgenden Link ein:-

googledrive.com/host/[ID]

  1. Der obige Link wird unser Download-Link sein.
  2. Verwenden Sie wget, um die Datei herunterzuladen:-

wget https://googledrive.com/host/[ID]

  1. Dieser Befehl lädt die Datei mit dem Namen [ID] ohne Erweiterung herunter, aber mit derselben Dateigröße am selben Speicherort, an dem Sie den wget-Befehl ausgeführt haben.
  2. Tatsächlich habe ich einen komprimierten Ordner in meiner Übung heruntergeladen. Ich habe diese seltsame Datei umbenannt mittels:-

mv [ID] 1.zip

  1. dann unter Verwendung von

unzip 1.zip

werden wir die Dateien erhalten.

2voto

thunder Punkte 113

Erhalten Sie die Datei-ID:

  1. Gehen Sie in Ihrem Browser zu Google Drive.

  2. Klicken Sie mit der rechten Maustaste auf die Datei, die Sie herunterladen möchten, und klicken Sie auf Link zum Teilen erstellen. Der Link sieht so aus: https://drive.google.com/file/d/XXX/view?usp=sharing. Notieren Sie sich die Datei-ID XXX; Sie werden sie weiter unten benötigen.

Erhalten Sie ein OAuth-Token:

  1. Gehen Sie zu OAuth 2.0 Playground

  2. In dem Feld Auswählen & APIs autorisieren scrollen Sie nach unten, erweitern Drive API v3, und wählen Sie https://www.googleapis.com/auth/drive.readonly.

  3. Klicken Sie auf APIs autorisieren und dann auf Autorisierungscode gegen Tokens austauschen. Kopieren Sie den Zugriffstoken YYY; Sie werden ihn weiter unten benötigen.

Laden Sie die Datei über die Befehlszeile herunter:

Wenn Sie OS X oder Linux verwenden, öffnen Sie das Programm "Terminal" und geben Sie den folgenden Befehl ein.

curl -H "Authorization: Bearer YYY" https://www.googleapis.com/drive/v3/files/XXX?alt=media -o ZZZ 

Wenn Sie Windows verwenden, öffnen Sie das Programm "PowerShell" und geben Sie den folgenden Befehl ein.

Invoke-RestMethod -Uri https://www.googleapis.com/drive/v3/files/XXX?alt=media -Method Get Headers @{"Authorization"="Bearer YYY"} -OutFile ZZZ

Ersetzen Sie in Ihrem Befehl XXX durch die Datei-ID von oben, YYY durch den Zugriffstoken von oben und ZZZ durch den Dateinamen, unter dem die Datei gespeichert wird (zum Beispiel "myFile.zip", wenn Sie eine ZIP-Datei herunterladen).

1voto

Für große Dateien mit Virenscan habe ich mit folgendem Erfolg gehabt:

wget --save-cookies cookies.txt 'https://docs.google.com/uc?export=download&id=DEINE_DATEI_ID' -O- | sed -rn 's/.*name="uuid" value=\"([0-9A-Za-z_\-]+).*/\1/p' > google_uuid.txt

wget --load-cookies cookies.txt -O DEIN_DATEI_NAME 'https://drive.usercontent.google.com/download?export=download&id=DEINE_DATEI_ID&confirm=t&uuid='$(

1voto

Behzad Dadashpour Punkte 320

Sie können "lynx" installieren und mit Hilfe von "lynx" die Datei einfach herunterladen.

yum install lynx

Ersetzen Sie "ID_OF_FILE" durch die ID Ihrer Datei

lynx https://drive.google.com/u/0/uc?id=ID_OF_FILE&export=download

Dann wählen Sie "Herunterladen" oder "Trotzdem herunterladen"

Das ist alles

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X