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.

79voto

guadafan Punkte 1010

WARNUNG: Diese Funktionalität ist veraltet. Siehe Warnung unten in den Kommentaren.


Schauen Sie sich diese Frage an: Direkter Download von Google Drive mit Google Drive API

Im Grunde genommen müssen Sie ein öffentliches Verzeichnis erstellen und auf Ihre Dateien mit relativen Referenzen wie folgt zugreifen

wget https://googledrive.com/host/LARGEPUBLICFOLDERID/index4phlat.tar.gz

Alternativ können Sie dieses Skript verwenden: https://github.com/circulosmeos/gdown.pl

76voto

Der einfache Weg:

(wenn Sie es nur für einen einmaligen Download benötigen)

  1. Gehen Sie zur Google Drive Webseite, die den Download-Link hat
  2. Öffnen Sie die Browserkonsole und gehen Sie zum "Netzwerk" Tab
  3. Klicken Sie auf den Download-Link
  4. Warten Sie, bis die Datei mit dem Download beginnt, und finden Sie die entsprechende Anfrage (sollte die letzte in der Liste sein), dann können Sie den Download abbrechen
  5. Klicken Sie mit der rechten Maustaste auf die Anfrage und klicken Sie auf "Als cURL kopieren" (oder ähnlich)

Sie sollten etwa folgendes erhalten:

curl 'https://doc-0s-80-docs.googleusercontent.com/docs/securesc/aa51s66fhf9273i....................blah blah blah...............gEIqZ3KAQ==' --compressed

Fügen Sie es in Ihre Konsole ein, fügen Sie > mein-dateiname.erweiterung hinzu (sonst wird die Datei in Ihre Konsole geschrieben), und drücken Sie Enter.

Der Link hat eine Art Ablaufdatum, sodass es nicht funktioniert, einen Download nach ein paar Minuten Generierung der ersten Anfrage zu starten.

64voto

Amit Chahar Punkte 2399

Ich habe verschiedene Techniken aus anderen Antworten ausprobiert, um meine Datei (6 GB) direkt von Google Drive auf meine AWS-EC2-Instanz herunterzuladen, aber keine davon funktioniert (möglicherweise weil sie veraltet sind).

Also, zur Information anderer, hier ist, wie ich es erfolgreich gemacht habe:

  1. Klicken Sie mit der rechten Maustaste auf die Datei, die Sie herunterladen möchten, klicken Sie auf Teilen, im Abschnitt Linkfreigabe wählen Sie "alle Personen mit diesem Link können bearbeiten".

  2. Kopieren Sie den Link. Er sollte in diesem Format sein: https://drive.google.com/file/d/FILEIDENTIFIER/view?usp=sharing

  3. Kopieren Sie den FILEIDENTIFIER-Teil aus dem Link.

  4. Kopieren Sie das untenstehende Skript in eine Datei. Es verwendet curl und verarbeitet das Cookie, um den Download der Datei zu automatisieren.

    #!/bin/bash
    fileid="FILEIDENTIFIER"
    filename="FILENAME"
    curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null
    curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${fileid}" -o ${filename}
  5. Wie oben gezeigt, fügen Sie den FILEIDENTIFIER in das Skript ein. Denken Sie daran, die doppelten Anführungszeichen beizubehalten!

  6. Geben Sie einen Namen für die Datei anstelle von FILENAME ein. Denken Sie daran, die doppelten Anführungszeichen beizubehalten und fügen Sie auch die Erweiterung in FILENAME ein (zum Beispiel myfile.zip).

  7. Speichern Sie die Datei jetzt und machen Sie die Datei ausführbar, indem Sie diesen Befehl im Terminal ausführen sudo chmod +x download-gdrive.sh.

  8. Führen Sie das Skript mit `./download-gdrive.sh` aus.

PS: Hier ist der Github-Gist für das oben genannte Skript: https://gist.github.com/amit-chahar/db49ce64f46367325293e4cce13d2424

59voto

lapinpt Punkte 764
ggID='put_googleID_here'  
ggURL='https://drive.google.com/uc?export=download'  
filename="$(curl -sc /tmp/gcokie "${ggURL}&id=${ggID}" | grep -o '="uc-name.*' | sed 's/.*">//;s/<.a> .*//')"  
getcode="$(awk '/_warning_/ {print $NF}' /tmp/gcokie)"  
curl -Lb /tmp/gcokie "${ggURL}&confirm=${getcode}&id=${ggID}" -o "${filename}"  

Wie funktioniert es?
Holen Sie sich die Cookie-Datei und den HTML-Code mit Curl.
Leiten Sie das HTML an Grep und sed weiter und suchen Sie nach dem Dateinamen.
Holen Sie sich den Bestätigungscode aus der Cookie-Datei mit Awk.
Laden Sie schließlich die Datei mit aktiviertem Cookie, Bestätigungscode und Dateinamen herunter.

curl -Lb /tmp/gcokie "https://drive.google.com/uc?export=download&confirm=Uq6r&id=0B5IRsLTwEO6CVXFURmpQZ1Jxc0U" -o "SomeBigFile.zip"

Wenn Sie die Dateiname-Variable nicht benötigen, kann Curl sie erraten
-L Folgen Sie Weiterleitungen
-O Remote-Name
-J Remote-Header-Name

curl -sc /tmp/gcokie "${ggURL}&id=${ggID}" >/dev/null  
getcode="$(awk '/_warning_/ {print $NF}' /tmp/gcokie)"  
curl -LOJb /tmp/gcokie "${ggURL}&confirm=${getcode}&id=${ggID}" 

Um die Google-Datei-ID aus der URL zu extrahieren, können Sie Folgendes verwenden:

echo "gURL" | egrep -o '(\w|-){26,}'  
# mehr als 26 Wortzeichen abgleichen  

ODER

echo "gURL" | sed 's/[^A-Za-z0-9_-]/\n/g' | sed -rn '/.{26}/p'  
# Ersetzen Sie nicht-Wortzeichen durch einen Zeilenumbruch,   
# Drucken Sie nur die Zeile mit mehr als 26 Wortzeichen

22voto

Alex Punkte 670

Das Standardverhalten von Google Drive besteht darin, Dateien auf Viren zu scannen. Wenn die Datei zu groß ist, wird der Benutzer zur Eingabe aufgefordert und benachrichtigt, dass die Datei nicht gescannt werden konnte.

Derzeit ist der einzige Workaround, den ich gefunden habe, die Datei über das Web zu teilen und eine Web-Ressource zu erstellen.

Zitat von der Google Drive Hilfeseite:

Mit Drive können Sie Webressourcen - wie HTML, CSS und Javascript-Dateien - als Website anzeigen.

Um eine Webseite mit Drive zu hosten:

  1. Öffnen Sie Drive unter drive.google.com und wählen Sie eine Datei aus.
  2. Klicken Sie auf die Teilen-Schaltfläche oben auf der Seite.
  3. Klicken Sie unten rechts im Freigabefeld auf Erweitert.
  4. Klicken Sie auf Ändern....
  5. Wählen Sie Aktiviert - Öffentlich im Web und klicken Sie auf Speichern.
  6. Kopieren Sie vor dem Schließen des Freigabefelds die Dokumenten-ID aus der URL im Feld unter "Link zum Teilen". Die Dokumenten-ID ist eine Zeichenfolge aus Groß- und Kleinbuchstaben und Zahlen zwischen Schrägstrichen in der URL.
  7. Teilen Sie die URL, die wie "www.googledrive.com/host/[doc id] aussieht, wobei [doc id] durch die in Schritt 6 kopierte Dokumenten-ID ersetzt wird.
    Jetzt kann jeder Ihre Webseite anzeigen.

Hier gefunden: https://support.google.com/drive/answer/2881970?hl=de

Wenn Sie beispielsweise eine Datei auf Google Drive öffentlich freigeben, sieht der Freigabelink so aus:

https://drive.google.com/file/d/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U/view?usp=sharing

Dann kopieren Sie die Datei-ID und erstellen einen Googledrive.com-Link, der so aussieht:

https://www.googledrive.com/host/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U

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