wget / curl große Datei von Google Drive


306

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

Ich habe mich intensiv online umgesehen und es endlich geschafft, einen davon zum Download zu bringen. Ich habe die UIDs der Dateien erhalten und die kleinere (1,6 MB) wird problemlos heruntergeladen. Die größere Datei (3,7 GB) leitet jedoch immer zu einer Seite weiter, auf der ich gefragt werde, ob ich den Download ohne Virenscan fortsetzen möchte. Könnte mir jemand helfen, diesen Bildschirm zu überwinden?

Hier ist, wie ich die erste Datei zum Laufen gebracht habe -

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

Wenn ich dasselbe auf der anderen Datei ausführe,

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

Ich bekomme folgende Ausgabe - Geben Sie hier die Bildbeschreibung ein

Ich stelle in der vorletzten Zeile des Links fest, dass es sich &confirm=JwkKum eine zufällige 4-stellige Zeichenfolge handelt, die jedoch eine Möglichkeit bietet, meiner URL eine Bestätigung hinzuzufügen. Einer der von mir besuchten Links schlug vor, &confirm=no_antivirusaber das funktioniert nicht.

Ich hoffe jemand hier kann dabei helfen!


Können Sie bitte das angeben, von dem curl scriptSie die Datei heruntergeladen haben, google driveda ich keine Arbeitsdatei (Bild) von diesem Skript herunterladen kanncurl -u username:pass https://drive.google.com/open?id=0B0QQY4sFRhIDRk1LN3g2TjBIRU0 >image.jpg
Kasun Siyambalapitiya

Schauen Sie sich die akzeptierte Antwort an. Ich habe das Skript gdown.pl verwendetgdown.pl https://drive.google.com/uc?export=download&confirm=yAjx&id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM index4phlat.tar.gz
Arjun

2
Hab keine Angst zu scrollen! Diese Antwort bietet ein sehr schönes Python-Skript zum Herunterladen auf einmal.
Ciprian Tomoiagă

./gdrive download [FILEID] [--recursive wenn es sich um einen Ordner handelt] fordert Sie auf, auf eine bestimmte URL zuzugreifen und einen Token-Code zu kopieren und einzufügen.
Roj4s

Antworten:


59

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


Schauen Sie sich diese Frage an: Direkter Download von Google Drive mithilfe der Google Drive-API

Grundsätzlich müssen Sie ein öffentliches Verzeichnis erstellen und auf Ihre Dateien durch relative Referenz mit so etwas zugreifen

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

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


5
Eine andere gute Möglichkeit ist die Verwendung des Linux-Befehlszeilentools "gdrive" github.com/prasmussen/gdrive
Tobi

1
Ich konnte das Perl-Skript von Nanolx in Kombination mit dem auf gdurl.com erstellten Google Drive-Permalink verwenden - Danke!
Jadik

14
WARNUNG: Die Unterstützung für Webhosting in Google Drive ist veraltet. "Ab dem 31. August 2015 ist das Webhosting in Google Drive für Benutzer und Entwickler veraltet. Google Apps-Kunden können diese Funktion ein Jahr lang bis zum 31. August 2016 nutzen, wenn sie Inhalte über googledrive.com/host bereitstellen / doc id wird eingestellt. " googleappsupdates.blogspot.com/2015/08/…
chrish

9
Leider funktioniert das ab 2018 nicht mehr.
Calimo

2
gdown.pl hat auch bei mir super funktioniert. Ein kurzer Blick auf das Skript zeigt, dass es diese API nicht verwendet. Es erstellt eine neue URL mit einem Parameter, export=downloadsodass es auf absehbare Zeit gut sein sollte, es sei denn, Google ändert dieses URL-Schema
Ben Baron

232

Juni 2020

Das file_idsollte ungefähr so ​​aussehen wie 0Bz8a_Dbh9QhbNU3SGlFaDg

Sie können es erhalten, indem Sie mit der rechten Maustaste auf die Datei klicken und dann auf den gemeinsam nutzbaren Link klicken. Arbeiten Sie nur mit Open-Access-Dateien (Jeder, der einen Link hat, kann anzeigen). Funktioniert nicht für Verzeichnisse. Getestet auf Google Colab. Funktioniert am besten beim Herunterladen von Dateien. Verwenden Sie tar / zip, um eine einzelne Datei zu erstellen.

Beispiel: Zum Herunterladen der Readme-Datei aus diesem Verzeichnis

gdown https://drive.google.com/uc?id=0B7EVK8r0v71pOXBhSUdJWU1MYUk

9
Entfernen Sie einfach export=download&aus gdown https://drive.google.com/uc?export=download&id=your_file_idund es funktioniert wie Charme
Saravanabalagi Ramachandran

8
Dieser hat im Juli 2018 funktioniert! Denken Sie daran, die Datei freizugeben. Wenn Sie den Link als drive.google.com/open?id=FILE_ID haben, ersetzen Sie einfach "open" durch "uc" und gdown drive.google.com/uc?id=FILE_ID
simo23

7
Wie können wir mit gdown einen Ordner von Gdrive herunterladen?
Benutzer1

7
Funktioniert ab August 2019 nicht mehr. Fehler: "Berechtigung verweigert: drive.google.com/uc?id=0B7EVK8r0v71pWEZsZE9oNnFzTm8 Möglicherweise müssen Sie die Berechtigung für" Jeder mit dem Link "ändern?" Und es ist der öffentlich herunterladbare CelebA-Datensatz, also sollte es in Ordnung sein. Ich habe den Download-Link durch Klicken auf "Get Shareable Linkg" erhalten, dann stand "Link Sharing on" und "Jeder mit dem Link kann ihn anzeigen". Es sieht also so aus, als ob die Berechtigung bereits erteilt wurde, der Fehler besagt jedoch, dass die Berechtigung verweigert wurde. Hier ist die Host-Site, wenn Sie es versuchen möchten
Kristof

6
Dies ist die einzige Lösung von dem halben Dutzend, die ich ausprobiert habe und die funktioniert. Es muss zum ersten hochgestuft werden. Ich musste nur den "freigegebenen Link" von " drive.google.com/open?id=XXXX" in " drive.google.com/uc?id=XXXX
deprekate"

194

Ich habe ein Python-Snippet geschrieben, das eine Datei von Google Drive mit einem gemeinsam nutzbaren Link herunterlädt . Es funktioniert ab August 2017 .

Das Snipped verwendet weder gdrive noch die Google Drive-API. Es verwendet das Anforderungsmodul .

Beim Herunterladen großer Dateien von Google Drive reicht eine einzige GET-Anforderung nicht aus. Ein zweiter wird benötigt, und dieser hat einen zusätzlichen URL-Parameter namens " Bestätigen" , dessen Wert dem Wert eines bestimmten Cookies entsprechen sollte.

import requests

def download_file_from_google_drive(id, destination):
    def get_confirm_token(response):
        for key, value in response.cookies.items():
            if key.startswith('download_warning'):
                return value

        return None

    def save_response_content(response, destination):
        CHUNK_SIZE = 32768

        with open(destination, "wb") as f:
            for chunk in response.iter_content(CHUNK_SIZE):
                if chunk: # filter out keep-alive new chunks
                    f.write(chunk)

    URL = "https://docs.google.com/uc?export=download"

    session = requests.Session()

    response = session.get(URL, params = { 'id' : id }, stream = True)
    token = get_confirm_token(response)

    if token:
        params = { 'id' : id, 'confirm' : token }
        response = session.get(URL, params = params, stream = True)

    save_response_content(response, destination)    


if __name__ == "__main__":
    import sys
    if len(sys.argv) is not 3:
        print("Usage: python google_drive.py drive_file_id destination_file_path")
    else:
        # TAKE ID FROM SHAREABLE LINK
        file_id = sys.argv[1]
        # DESTINATION FILE ON YOUR DISK
        destination = sys.argv[2]
        download_file_from_google_drive(file_id, destination)

Ich führe das Snippet aus python snippet.py file_id destination. Ist dies die richtige Art, es auszuführen? Ursache Wenn das Ziel ein Ordner ist, wird ein Fehler ausgegeben. Wenn ich eine Datei zäh mache und diese als Ziel verwende, scheint das Snippet gut zu funktionieren, tut dann aber nichts.
Manfredo

2
@Manfredo Sie benötigen den Dateinamen, den Sie speichern möchten, da er beispielsweise $ python snippet.py your_google_file_id /your/full/path/and/filename.xlsx für mich funktioniert hat. Falls dies nicht funktioniert, haben Sie eine Ausgabe bereitgestellt? Wird eine Datei erstellt?
Jeff

1
@CiprianTomoiaga Ich habe 90% eines Fortschrittsbalkens, der mit dem Python-Modul tqdm arbeitet. Ich habe einen Kern gemacht: gist.github.com/joshtch/8e51c6d40b1e3205d1bb2eea18fb57ae . Leider habe ich keinen zuverlässigen Weg gefunden, um die gesamte Dateigröße zu ermitteln, die Sie benötigen, um den prozentualen Fortschritt und die geschätzte Fertigstellungszeit zu berechnen.
Joshtch

Welche Art von Authentifizierung verwendet das Anforderungsmodul für den Zugriff auf Google-Laufwerke? OAuth? Wo wird dies in Ihrem obigen Code beispielsweise behandelt - request-oauthlib.readthedocs.io/en/latest/… ?
tauseef_CuriousGuy

7
Das ist fantastisch! Hier ist ein Tipp für drive_File_ID: https // drive.google.com / file / d / "drive_File_ID" / view - zwischen https ~~ file / d / und / view des Download-Links.
Jaeyoung Lee

70

Sie können das Open Source Linux / Unix-Befehlszeilentool verwenden gdrive.

So installieren Sie es:

  1. Laden Sie die Binärdatei herunter . Wählen Sie beispielsweise diejenige, die zu Ihrer Architektur passtgdrive-linux-x64.

  2. Kopieren Sie es in Ihren Pfad.

    sudo cp gdrive-linux-x64 /usr/local/bin/gdrive;
    sudo chmod a+x /usr/local/bin/gdrive;
    

Um es zu benutzen:

  1. Bestimmen Sie die Google Drive-Datei-ID. Klicken Sie dazu mit der rechten Maustaste auf die gewünschte Datei auf der Google Drive-Website und wählen Sie "Link abrufen ...". Es wird so etwas wie zurückgeben https://drive.google.com/open?id=0B7_OwkDsUIgFWXA1B2FPQfV5S8H. Besorgen Sie sich die Zeichenfolge hinter ?id=und kopieren Sie sie in Ihre Zwischenablage. Das ist die ID der Datei.

  2. Laden Sie die Datei herunter. Verwenden Sie stattdessen stattdessen die ID Ihrer Datei im folgenden Befehl.

    gdrive download 0B7_OwkDsUIgFWXA1B2FPQfV5S8H
    

Bei der ersten Verwendung muss das Tool Zugriffsberechtigungen für die Google Drive-API erhalten. Dazu wird Ihnen ein Link angezeigt, den Sie in einem Browser besuchen müssen, und Sie erhalten einen Bestätigungscode zum Kopieren und Einfügen in das Tool. Der Download startet dann automatisch. Es gibt keine Fortschrittsanzeige, aber Sie können den Fortschritt in einem Dateimanager oder einem zweiten Terminal beobachten.

Quelle: Ein Kommentar von Tobi zu einer anderen Antwort hier.

 

Zusätzlicher Trick: Ratenbegrenzung. Zum Herunterladen mit gdriveeiner begrenzten Höchstrate (um das Netzwerk nicht zu überfluten …) können Sie einen Befehl wie diesen verwenden ( pvist PipeViewer ):

gdrive download --stdout 0B7_OwkDsUIgFWXA1B2FPQfV5S8H | \
  pv -br -L 90k | \
  cat > file.ext

Dies zeigt die Menge der heruntergeladenen Daten ( -b) und die Download-Rate ( -r) an und begrenzt diese Rate auf 90 kiB / s ( -L 90k).


Fehlermeldung: "Tägliches Limit für nicht authentifizierte Verwendung überschritten. Für die fortgesetzte Verwendung ist eine Anmeldung erforderlich.", Code: 403
Nianliang,

@Nianliang Ich habe dies noch nicht erlebt, aber hier ist eine Vermutung: Sie haben gdrive verwendet, um eine öffentlich zugängliche Datei herunterzuladen, sodass Sie bei der ersten Verwendung nicht zur Authentifizierung aufgefordert werden. Versuchen Sie zuerst eine nicht öffentliche Datei und stellen Sie sicher, dass die Authentifizierung erfolgreich ist (wie in der Antwort beschrieben: "Bei der ersten Verwendung, ..."). Hat es geholfen?
Tanius

3
Bestätigungscode kann nicht abgerufen werden. Erhalten Sie die Fehlermeldung "Mit Google vorübergehend deaktivieren für diese App deaktiviert Diese App wurde noch nicht von Google überprüft, um Google Anmelden zu verwenden."
Useranon

1
Gleiche Fehlermeldung hier: "Diese App wurde noch nicht von Google überprüft, um Google Sign In zu verwenden."
gebbissimo

1
@useranon: Probieren Sie diese Lösung aus: github.com/gdrive-org/gdrive/issues/533#issuecomment-596336395 , Sie müssen ein Google-Dienstkonto erstellen und die Datei / den Ordner für diese Dienstkontoadresse freigeben. Ich hab es gemacht. Funktioniert ab dem 17.04.2020!
Whyisyoung

52
ggID='put_googleID_here'  
ggURL='https://drive.google.com/uc?export=download'  
filename="$(curl -sc /tmp/gcokie "${ggURL}&id=${ggID}" | grep -o '="uc-name.*</span>' | 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 Cookie-Datei und HTML-Code mit Curl.
Pipe HTML zu grep und sed und suche nach Dateinamen.
Holen Sie sich mit awk den Bestätigungscode aus der Cookie-Datei.
Laden Sie zum Schluss die Datei mit aktiviertem Cookie herunter, bestätigen Sie den Code und den Dateinamen.

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

Wenn Sie keinen Dateinamen benötigen, kann die Variable curl dies erraten.
-L Folgen Sie den 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}" 

So extrahieren Sie die Google-Datei-ID aus der URL:

echo "gURL" | egrep -o '(\w|-){26,}'  
# match more than 26 word characters  

ODER

echo "gURL" | sed 's/[^A-Za-z0-9_-]/\n/g' | sed -rn '/.{26}/p'  
# replace non-word characters with new line,   
# print only line with more than 26 word characters 

Sehr schön gemacht. Die Virenwarnung für eine Datei mit mehr als 5 GB wurde entfernt, als alle anderen Antworten fehlschlugen.

1
Das ist großartig. Ich musste die --insecureOption zu beiden Curl-Anforderungen hinzufügen , damit es funktioniert.
Taylor R

@lapinpt Wie füge ich die RESUME-Funktionalität hinzu?
steven7mwesigwa

Können wir die Google-ID irgendwie loswerden, wenn wir einen öffentlichen Link zu der Datei haben?
Oarfish

42

Update ab März 2018.

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

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". Wählen Sie im Abschnitt "Linkfreigabe" die Option "Jeder mit diesem Link kann bearbeiten" aus.
  2. Kopieren Sie den Link. Es sollte in diesem Format sein:https://drive.google.com/file/d/FILEIDENTIFIER/view?usp=sharing
  3. Kopieren Sie den FILEIDENTIFIER-Teil vom Link.
  4. Kopieren Sie das folgende Skript in eine Datei. Es verwendet Curl und verarbeitet das Cookie, um das Herunterladen 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. Fügen Sie wie oben gezeigt den FILEIDENTIFIER in das Skript ein. Denken Sie daran, die doppelten Anführungszeichen zu halten!

  6. Geben Sie anstelle von FILENAME einen Namen für die Datei ein. Denken Sie daran, die doppelten Anführungszeichen beizubehalten und die Erweiterung auch in FILENAME aufzunehmen (z. B. myfile.zip).
  7. Speichern Sie nun die Datei 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-Inhalt für das oben angegebene Skript: https://gist.github.com/amit-chahar/db49ce64f46367325293e4cce13d2424


für wget ersetzen -cmit --save-cookiesund -bmit--load-cookies
untore

3
bestätigte, dass dies für mich funktioniert hat 👍, aus Gründen der Klarheit etwas bearbeitet
Jeff Atwood

1
Funktioniert im Januar 2019. Ich musste in der letzten Zeile "Anführungszeichen hinzufügen ${filename}.
Jimbo

> Führen Sie das Skript mit ./download-gdrive.sh" Do not be like me and try to run the script by typing download-gdrive.sh aus , the . / `Scheint obligatorisch zu sein.
Ambroise Rabier

Arbeiten im Mai 2019
Kshitij Bajracharya

29

Hier ist ein schneller Weg, dies zu tun.

Stellen Sie sicher, dass der Link freigegeben ist und ungefähr so ​​aussieht:

https://drive.google.com/open?id=FILEID&authuser=0

Kopieren Sie dann diese DATEI und verwenden Sie sie wie folgt

wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILEID' -O FILENAME

2
Hallo, danke für die Antwort. Wenn Sie sich die Dateien auf dem Link ansehen, den ich freigegeben habe, werden Sie feststellen, dass den Dateien, während sie freigegeben sind, das Tag 'authuser = 0' im Link fehlt. Ihre Methode hat bei den bereitgestellten Dateien nicht funktioniert! Arjun
Arjun

2
Ich habe es nicht einmal mit öffentlichem Zugriff versucht, dieser funktionierte gut für freigegebene Nur-Link-Dateien. Verwendet es so:wget 'https://docs.google.com/uc?export=download&id=SECRET_ID' -O 'filename.pdf'
Sampo Sarrala - codidact.org

Funktioniert ab 2018 nicht mehr. Ich erhalte die Antivirenscan-Webseite anstelle der Datei.
Calimo

7
Es umgeht den Antivirenscanner für mich im Jahr 2018, wenn es mit der -rFlagge von verwendet wird wget. So ist eswget --no-check-certificate -r 'https://docs.google.com/uc?export=download&id=FILE_ID' -O 'filename'
Artem Pelenitsyn

1
Arbeitete ab 10/2019 für mich und war die perfekte Lösung für mich, eine Datei in einen laufenden Docker-Container zu laden, auf dem fast keine Dienstprogramm-Apps ausgeführt werden.
Ammills01

23

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

Im Moment besteht die einzige Problemumgehung darin, die Datei für das Web freizugeben und eine Webressource zu erstellen.

Zitat von der Google Drive-Hilfeseite:

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

So hosten Sie eine Webseite mit Drive:

  1. Öffnen Sie Drive unter drive.google.com und wählen Sie eine Datei aus.
  2. Klicken Sie oben auf der Seite auf die Schaltfläche Teilen .
  3. Klicken Sie in der unteren rechten Ecke des Freigabefelds auf Erweitert .
  4. Klicken Sie auf Ändern ....
  5. Wählen Sie im Web die Option Ein - Öffentlich und klicken Sie auf Speichern .
  6. Kopieren Sie vor dem Schließen des Freigabefelds die Dokument-ID von der URL in das Feld unter "Link zur Freigabe". Die Dokument-ID ist eine Zeichenfolge aus Groß- und Kleinbuchstaben und Zahlen zwischen Schrägstrichen in der URL.
  7. Geben Sie die URL frei, die wie folgt aussieht: "www.googledrive.com/host/[doc id], wobei [doc id] durch die in Schritt 6 kopierte Dokument-ID ersetzt wird.
    Jeder kann jetzt Ihre Webseite anzeigen.

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

Wenn Sie beispielsweise eine Datei auf Google Drive öffentlich freigeben, sieht der Sharelink folgendermaßen aus:

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

Dann kopieren Sie die Datei-ID und erstellen eine googledrive.com-Linke, die folgendermaßen aussieht:

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

1
@ FıratKÜÇÜK Bist du sicher, dass du das richtige URL-Format hattest? (Beachten Sie www.googledrive.com und nicht drive.google.com) Ich habe es gerade versucht und es hat funktioniert.
Charles Forest

Meine Datei ist über 50 MB groß. Es wird eine Bestätigung des Virenscans angefordert. Die Lösung ist also nicht für meinen Fall geeignet. Stattdessen habe ich die Konsolenanwendungslösung "gdrive" verwendet.
Fırat KÜÇÜK

@ FıratKÜÇÜK Ich habe es gerade geschafft, eine Datei mit mehr als 200 MB mit dieser Methode herunterzuladen, die normalerweise Virenprüfungen auslöst. Ich habe die ID von Rechtsklick> "Get Shareable Link" erhalten.
Ciro Santilli 法轮功 冠状 病 六四 事件 11


11
Diese Funktion ist veraltet und wird nicht mehr unterstützt
Daniel G

19

Der einfache Weg:

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

  1. Gehen Sie zur Google Drive-Webseite mit dem Download-Link
  2. Öffnen Sie Ihre Browserkonsole und wechseln Sie zur Registerkarte "Netzwerk"
  3. Klicken Sie auf den Download-Link
  4. Warten Sie, bis die Datei heruntergeladen wurde, und suchen Sie die entsprechende Anforderung (sollte die letzte in der Liste sein). Anschließend 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 mit etwas enden wie:

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 > my-file-name.extensiones am Ende hinzu (andernfalls wird die Datei in Ihre Konsole geschrieben) und drücken Sie die Eingabetaste :)


Arbeitete von Juni 2019
techkuz

Funktioniert ab Februar 2020
Jivan

12

Basierend auf der Antwort von Roshan Sethia

Mai 2018

Verwenden von WGET :

  1. Erstellen Sie ein Shell-Skript mit dem Namen wgetgdrive.sh wie folgt:

    #!/bin/bash
    
    # Get files from Google Drive
    
    # $1 = file ID
    # $2 = file name
    
    URL="https://docs.google.com/uc?export=download&id=$1"
    
    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 $URL -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=$1" -O $2 && rm -rf /tmp/cookies.txt
    
  2. Geben Sie die richtigen Berechtigungen zum Ausführen des Skripts

  3. Führen Sie im Terminal Folgendes aus:

    ./wgetgdrive.sh <file ID> <filename>
    

    beispielsweise:

    ./wgetgdrive.sh 1lsDPURlTNzS62xEOAIG98gsaW6x2PYd2 images.zip
    

1
Dies funktioniert wie CHARM, danke und um die Dinge zu erleichtern:chmod 770 wgetgdrive.sh
Mohamed Kawsara

8

--AKTUALISIERT--

Um die Datei zuerst herunterzuladen, holen Sie sich youtube-dlhier Python:

youtube-dl: https://rg3.github.io/youtube-dl/download.html

oder installieren Sie es mit pip:

sudo python2.7 -m pip install --upgrade youtube_dl 
# or 
# sudo python3.6 -m pip install --upgrade youtube_dl

AKTUALISIEREN:

Ich habe gerade Folgendes herausgefunden:

  1. Klicken Sie mit der rechten Maustaste auf die Datei, die Sie von drive.google.com herunterladen möchten

  2. Klicken Get Sharable link

  3. Umschalten Link sharing on

  4. Klicke auf Sharing settings

  5. Klicken Sie auf die obere Dropdown-Liste, um Optionen anzuzeigen

  6. Klicken Sie auf Mehr

  7. Wählen [x] On - Anyone with a link

  8. Link kopieren

https://drive.google.com/file/d/3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR/view?usp=sharing       
(This is not a real file address)

Kopieren Sie die ID nach https://drive.google.com/file/d/:

3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR

Fügen Sie dies in die Befehlszeile ein:

youtube-dl https://drive.google.com/open?id=

Fügen Sie die ID dahinter ein open?id=

youtube-dl https://drive.google.com/open?id=3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR
[GoogleDrive] 3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR: Downloading webpage
[GoogleDrive] 3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR: Requesting source file
[download] Destination: your_requested_filename_here-3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR
[download] 240.37MiB at  2321.53MiB/s (00:01)

Ich hoffe es hilft


1
Hallo, danke, ich habe es versucht und es wird heruntergeladen, wenn ich von der Eingabeaufforderung aus starte. Aber gibt es eine Möglichkeit, den tatsächlichen "direkten Link" wie für den Zugriff auf einen Server zu erhalten? Ich versuche es mit dem Knoten {spawn} auszuführen, aber dann muss es auf den Knotenserver heruntergeladen werden und von dort erneut herunterladen. Gibt es eine Möglichkeit, einfach einen direkten Download-Link von Google Drive zu erhalten? Welchen Link benutzen sie?
Bluejayke

Ich muss diese Methode jetzt oft anwenden, also werde ich versuchen, sie vollständig zu automatisieren. Holen Sie sich einfach den Google-Link und ein Python-Skript erledigt den Rest. Ich denke, ich werde Selen verwenden, um dies zu tun. Aktualisiert meine Lösung, wenn sie funktioniert.
Jturi

Meine Antwort wurde aktualisiert. Dies ist jetzt so einfach wie 2 Klicks, um Dateien mit youtube-dl herunterzuladen.
Jturi

7

Keine Antwort schlägt vor, was für mich ab Dezember 2016 funktioniert ( Quelle ):

curl -L https://drive.google.com/uc?id={FileID}

vorausgesetzt, die Google Drive-Datei wurde für diejenigen freigegeben, die den Link haben, und {FileID}ist die Zeichenfolge ?id=in der freigegebenen URL.

Obwohl ich nicht mit riesigen Dateien nachgesehen habe, glaube ich, dass es nützlich sein könnte, dies zu wissen.


Hmmm ... hat bei mir nicht funktioniert :( Lädt nur Webinhalte herunter - nicht die Datei
kgingeri

1
curl -L -o {filename} https://drive.google.com/uc?id={FileID}hat für mich gearbeitet, danke!
Dário

Das funktioniert bei mir nicht. Mein Link ist unten (jeder mit dem Link kann ihn anzeigen): drive.google.com/file/d/0B7Jh6M91b83bdFlWX2RIU2hYSWM/… . Ich habe versucht: <code> curl -O -J -L drive.google.com/uc?id=0B7Jh6M91b83bdFlWX2RIU2hYSWM </code> und ich erhalte das folgende Ergebnis: curl: (56) HTTP-Code 403 vom Proxy nach CONNECT erhalten
Steve

7
Funktioniert nur für Dateien bis zu 25MB, größeren Dateien geben Virus Seite Scan - Warnung
cen

6

Der einfachste Weg ist:

  1. Erstellen Sie einen Download-Link und kopieren Sie die Datei-ID
  2. Mit WGET herunterladen: 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

1
Ich danke dir sehr! Unglaublich nützlich
Nicholas Pipitone

6

Die obigen Antworten sind für April 2020 veraltet, da Google Drive jetzt eine Umleitung zum tatsächlichen Speicherort der Datei verwendet.

Arbeiten ab April 2020 unter macOS 10.15.4 für öffentliche Dokumente:

# this is used for drive directly downloads
function download-google(){
  echo "https://drive.google.com/uc?export=download&id=$1"
  mkdir -p .tmp
  curl -c .tmp/$1cookies "https://drive.google.com/uc?export=download&id=$1" > .tmp/$1intermezzo.html;
  curl -L -b .tmp/$1cookies "$(egrep -o "https.+download" .tmp/$1intermezzo.html)" > $2;
}

# some files are shared using an indirect download
function download-google-2(){
  echo "https://drive.google.com/uc?export=download&id=$1"
  mkdir -p .tmp
  curl -c .tmp/$1cookies "https://drive.google.com/uc?export=download&id=$1" > .tmp/$1intermezzo.html;
  code=$(egrep -o "confirm=(.+)&amp;id=" .tmp/$1intermezzo.html | cut -d"=" -f2 | cut -d"&" -f1)
  curl -L -b .tmp/$1cookies "https://drive.google.com/uc?export=download&confirm=$code&id=$1" > $2;
}

# used like this
download-google <id> <name of item.extension>

1
download-google-2funktioniert bei mir. Meine Datei ist 3G groß. Thanks @ danieltan95
Saurabh Kumar

Ich habe download-google-2die letzte Locke auf diese aktualisiert curl -L -b .tmp/$1cookies -C - "https://drive.google.com/uc?export=download&confirm=$code&id=$1" -o $2;und kann nun den Download fortsetzen.
ssi-anik

Scheint, als sei beim Download bei niedriger Geschwindigkeit etwas schief gelaufen. Ein anderer Ansatz, den ich gefunden habe. qr.ae/pNrPaJ
ssi-anik

5

Ich hatte das gleiche Problem mit Google Drive.

Hier ist, wie ich das Problem mit Links 2 gelöst habe .

  1. Öffnen Sie einen Browser auf Ihrem PC und navigieren Sie zu Ihrer Datei in Google Drive. Geben Sie Ihrer Datei einen öffentlichen Link.

  2. Kopieren Sie den öffentlichen Link in Ihre Zwischenablage (z. B. Rechtsklick, Linkadresse kopieren).

  3. Öffnen Sie ein Terminal. Wenn Sie auf einen anderen PC / Server / Computer herunterladen, sollten Sie als Punkt SSH darauf ausführen

  4. Installieren Sie Links 2 (Debian / Ubuntu-Methode, verwenden Sie Ihre Distribution oder das entsprechende Betriebssystem)

    sudo apt-get install links2

  5. Fügen Sie den Link in Ihr Terminal ein und öffnen Sie ihn mit folgenden Links:

    links2 "paste url here"

  6. Navigieren Sie mit Ihren Pfeiltasten zum Download-Link unter Links und drücken Sie Enter

  7. Wählen Sie einen Dateinamen und Ihre Datei wird heruntergeladen


Linkstotal den Trick gemacht! Und es ist viel viel besser alsw3m
Alvas

1
Dies ist das einzige, was für mich funktioniert hat! Februar 2019. Die gdown-App in den früheren Kommentaren wird von niemand anderem als Google Docs gehostet, daher ist es auch unmöglich, sie herunterzuladen.
Steven

5

Benutze youtube-dl !

youtube-dl https://drive.google.com/open?id=ABCDEFG1234567890

Sie können auch übergeben --get-url, um eine direkte Download-URL zu erhalten.


1
@Ender es funktioniert immer noch für mich youtube-dl https://drive.google.com/open?id=ABCDEFG1234567890aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [GoogleDrive] ABCDEFG1234567890aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: Downloading webpage. Vielleicht haben Sie eine veraltete Version von youtube-dloder das Link-Format wird von ihr aus irgendeinem Grund nicht erkannt ... Versuchen Sie, das obige Format zu verwenden, indem Sie die ID durch die Datei-ID Ihrer ursprünglichen URL
ersetzen

5

Ich habe das Curl-Snippet von @ Amit Chahar verwendet , das in diesem Thread eine gute Antwort gepostet hat . Ich fand es nützlich, es in eine Bash-Funktion anstatt in eine separate .shDatei zu setzen

function curl_gdrive {

    GDRIVE_FILE_ID=$1
    DEST_PATH=$2

    curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${GDRIVE_FILE_ID}" > /dev/null
    curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${GDRIVE_FILE_ID}" -o ${DEST_PATH}
    rm -fr cookie
}

~/.bashrcDies kann zB in a enthalten sein (nach der Beschaffung natürlich, wenn nicht automatisch beschafft) und auf folgende Weise verwendet werden

   $ curl_gdrive 153bpzybhfqDspyO_gdbcG5CMlI19ASba imagenet.tar

Dies ist wahrscheinlich die beste Antwort ... der Python-Gdown ist im Vergleich so schwer. Ich muss sagen, dass ich mit gdrive ziemlich unzufrieden bin ...
smaudet

1
Sie benötigen weder das -f noch das -r in Ihrem Befehl rm. Wenn Sie den Leuten beibringen, einfach immer "rm -rf" zu sein, werden sie möglicherweise Dinge entfernen, die sie behalten möchten ...
Josch

4

Es gibt einen Open-Source-Client für mehrere Plattformen, der in Go: drive geschrieben ist . Es ist sehr schön und mit allen Funktionen ausgestattet und befindet sich ebenfalls in der aktiven Entwicklung.

$ drive help pull
Name
        pull - pulls remote changes from Google Drive
Description
        Downloads content from the remote drive or modifies
         local content to match that on your Google Drive

Note: You can skip checksum verification by passing in flag `-ignore-checksum`

* For usage flags: `drive pull -h`

4

Alle oben genannten Antworten scheinen die Einfachheit der Antwort zu verschleiern oder weisen einige Nuancen auf, die nicht erklärt werden.

Wenn die Datei öffentlich freigegeben wird, können Sie einen direkten Download-Link generieren, indem Sie nur die Datei-ID kennen. Die URL muss die Form " https://drive.google.com/uc?id=[FILEID‹&export=download " haben. Dies funktioniert ab dem 22.11.2019. Dies erfordert nicht, dass sich der Empfänger bei Google anmeldet, sondern dass die Datei öffentlich freigegeben wird.

  1. Navigieren Sie in Ihrem Browser zu drive.google.com.

  2. Klicken Sie mit der rechten Maustaste auf die Datei und klicken Sie auf "Gemeinsam nutzbaren Link abrufen".

Klicken Sie mit der rechten Maustaste, um einen gemeinsam nutzbaren Link zu erhalten

  1. Öffnen Sie eine neue Registerkarte, wählen Sie die Adressleiste aus und fügen Sie den Inhalt Ihrer Zwischenablage ein, die als gemeinsam nutzbarer Link dient. Sie sehen die Datei im Google Viewer. Die ID ist die Nummer direkt vor der Komponente "Ansicht" der URL:

Geben Sie hier die Bildbeschreibung ein

  1. Bearbeiten Sie die URL so, dass sie das folgende Format hat, und ersetzen Sie "[FILEID]" durch die ID Ihrer freigegebenen Datei:

    https://drive.google.com/uc?id=[FILEID‹&export=download

  2. Das ist Ihr direkter Download-Link. Wenn Sie in Ihrem Browser darauf klicken, wird die Datei nun in Ihren Browser "verschoben". Dadurch wird der Download-Dialog geöffnet, in dem Sie die Datei speichern oder öffnen können. Sie können diesen Link auch in Ihren Download-Skripten verwenden.

  3. Der entsprechende Curl-Befehl wäre also:

curl -L "https://drive.google.com/uc?id=AgOATNfjpovfFrft9QYa-P1IeF9e7GWcH&export=download" > phlat-1.0.tar.gz

2
Dies funktioniert nicht für große Dateien: erhalten Sie den FehlerGoogle Drive can't scan this file for viruses. <filename> is too large for Google to scan for viruses. Would you still like to download this file?
Rekovni

Das hat funktioniert. Danke dir! Nachdem Sie den Link in dieses Format konvertiert haben, können Sie auch gdown verwenden, wie in anderen Antworten gezeigt
Harry M

3

Ich war nicht in der Lage, Nanoix 'Perl-Skript oder andere Curl-Beispiele, die ich gesehen hatte, zum Laufen zu bringen, also fing ich an, die API selbst in Python zu untersuchen. Dies funktionierte gut für kleine Dateien, aber große Dateien erstickten an verfügbarem RAM, sodass ich einen anderen netten Chunking-Code fand, der die Fähigkeit der API zum teilweisen Herunterladen nutzt. Wesentlich hier: https://gist.github.com/csik/c4c90987224150e4a0b2

Beachten Sie das Bit zum Herunterladen der json-Datei client_secret von der API-Schnittstelle in Ihr lokales Verzeichnis.

Quelle
$ cat gdrive_dl.py
from pydrive.auth import GoogleAuth  
from pydrive.drive import GoogleDrive    

"""API calls to download a very large google drive file.  The drive API only allows downloading to ram 
   (unlike, say, the Requests library's streaming option) so the files has to be partially downloaded
   and chunked.  Authentication requires a google api key, and a local download of client_secrets.json
   Thanks to Radek for the key functions: http://stackoverflow.com/questions/27617258/memoryerror-how-to-download-large-file-via-google-drive-sdk-using-python
"""

def partial(total_byte_len, part_size_limit):
    s = []
    for p in range(0, total_byte_len, part_size_limit):
        last = min(total_byte_len - 1, p + part_size_limit - 1)
        s.append([p, last])
    return s

def GD_download_file(service, file_id):
  drive_file = service.files().get(fileId=file_id).execute()
  download_url = drive_file.get('downloadUrl')
  total_size = int(drive_file.get('fileSize'))
  s = partial(total_size, 100000000) # I'm downloading BIG files, so 100M chunk size is fine for me
  title = drive_file.get('title')
  originalFilename = drive_file.get('originalFilename')
  filename = './' + originalFilename
  if download_url:
      with open(filename, 'wb') as file:
        print "Bytes downloaded: "
        for bytes in s:
          headers = {"Range" : 'bytes=%s-%s' % (bytes[0], bytes[1])}
          resp, content = service._http.request(download_url, headers=headers)
          if resp.status == 206 :
                file.write(content)
                file.flush()
          else:
            print 'An error occurred: %s' % resp
            return None
          print str(bytes[1])+"..."
      return title, filename
  else:
    return None          


gauth = GoogleAuth()
gauth.CommandLineAuth() #requires cut and paste from a browser 

FILE_ID = 'SOMEID' #FileID is the simple file hash, like 0B1NzlxZ5RpdKS0NOS0x0Ym9kR0U

drive = GoogleDrive(gauth)
service = gauth.service
#file = drive.CreateFile({'id':FILE_ID})    # Use this to get file metadata
GD_download_file(service, FILE_ID) 

3

Hier ist ein kleines Bash-Skript, das ich geschrieben habe und das heute funktioniert. Es funktioniert mit großen Dateien und kann auch teilweise abgerufene Dateien wieder aufnehmen. Es werden zwei Argumente benötigt, das erste ist die Datei-ID und das zweite ist der Name der Ausgabedatei. Die Hauptverbesserungen gegenüber früheren Antworten sind, dass es für große Dateien funktioniert und nur allgemein verfügbare Tools benötigt: bash, curl, tr, grep, du, cut und mv.

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

# try to download the file
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`

# did we get a virus message?
# this will be the first line we get when trying to retrive a large file
bigFileSig='<!DOCTYPE html><html><head><title>Google Drive - Virus scan warning</title><meta http-equiv="content-type" content="text/html; charset=utf-8"/>'
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' </tmp/probe.bin | grep confirm)
  confirm=${confirm:8:4}
  curl -C - -b /tmp/cookie -L -o "$destination" "https://drive.google.com/uc?export=download&id=${fileid}&confirm=${confirm}"
else
  mv /tmp/probe.bin "$destination"
fi

Willkommen bei SO. Wenn Sie zu diesem Zweck eine Referenz verwendet haben, fügen Sie diese bitte in Ihre Antwort ein. Wie auch immer,
gute

3

Dies funktioniert ab November 2017 unter https://gist.github.com/ppetraki/258ea8240041e19ab258a736781f06db

#!/bin/bash

SOURCE="$1"
if [ "${SOURCE}" == "" ]; then
    echo "Must specify a source url"
    exit 1
fi

DEST="$2"
if [ "${DEST}" == "" ]; then
    echo "Must specify a destination filename"
    exit 1
fi

FILEID=$(echo $SOURCE | rev | cut -d= -f1 | rev)
COOKIES=$(mktemp)

CODE=$(wget --save-cookies $COOKIES --keep-session-cookies --no-check-certificate "https://docs.google.com/uc?export=download&id=${FILEID}" -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/Code: \1\n/p')

# cleanup the code, format is 'Code: XXXX'
CODE=$(echo $CODE | rev | cut -d: -f1 | rev | xargs)

wget --load-cookies $COOKIES "https://docs.google.com/uc?export=download&confirm=${CODE}&id=${FILEID}" -O $DEST

rm -f $COOKIES

Obwohl es "Quell-URL" gibt und es einige Parsing gibt, habe ich nicht versucht zu verstehen, dass es funktioniert, indem ich einfach direkt die sogenannte Datei-ID hier und in anderen Antworten als ersten Parameter verwendet habe.
Januar

@jan Das kann bedeuten, dass es mehr als einen URL-Stil gibt. Ich bin froh, dass es bei Ihnen immer noch funktioniert hat.
ppetraki

3

Nach dem Herumspielen mit diesem Müll. Ich habe einen Weg gefunden, meine süße Datei mithilfe von Chrome-Entwicklertools herunterzuladen.

  1. Wählen Sie auf der Registerkarte "Google Docs" Strg + Umschalt + J (Einstellung -> Entwicklertools).
  2. Wechseln Sie zu den Registerkarten Netzwerk
  3. Klicken Sie in Ihrer Dokumentdatei auf "Download" -> Als CSV herunterladen, xlsx, ....
  4. Es zeigt Ihnen die Anfrage in der "Netzwerk" -Konsole Geben Sie hier die Bildbeschreibung ein

  5. Klicken Sie mit der rechten Maustaste -> Kopieren -> Als Locke kopieren

  6. Ihr Curl-Befehl sieht folgendermaßen aus und wird hinzugefügt -o, um eine exportierte Datei zu erstellen. curl 'https://docs.google.com/spreadsheets/d/1Cjsryejgn29BDiInOrGZWvg/export?format=xlsx&id=1Cjsryejgn29BDiInOrGZWvg' -H 'authority: docs.google.com' -H 'upgrade-insecure-requests: 1' -H 'user-agent: Mozilla/5.0 (X..... -o server.xlsx

Gelöst!


Dieser Link läuft ab und gilt jeweils nur für 1 IP-Adresse
bluejayke

Sie können einfach eine stille ständige Anfrage stellen, um die Sitzung am Leben zu erhalten. @bluejayke
Ender

Ich habe genau das getan und als ich hierher kam, um eine andere Antwort zu schreiben, bin ich auf deine gestoßen. Ich bestätige, dass es mit verschiedenen IPs funktioniert, da ich eine 36-GB-Datei auf den Server herunterladen musste, der keinen Browser hat. Und ich habe den Link von meinem Laptop extrahiert.
dmitry502

2

Hier ist eine Problemumgehung, bei der ich Dateien von Google Drive auf meine Google Cloud Linux-Shell heruntergeladen habe.

  1. Geben Sie die Datei für PUBLIC und mit Bearbeitungsberechtigungen mithilfe der erweiterten Freigabe frei.
  2. Sie erhalten einen Freigabelink mit einer ID. 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 wäre unser Download-Link.
  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 und mit derselben Dateigröße an derselben Stelle herunter, an der Sie den Befehl wget ausgeführt haben.
  2. Eigentlich habe ich in meiner Praxis einen komprimierten Ordner heruntergeladen. Also habe ich diese umständliche Datei umbenannt mit:

mv [ID] 1.zip

  1. dann mit

1.zip entpacken

Wir werden die Dateien bekommen.



Google hat das Hosting vom Laufwerk entfernt, sodass dies nicht mehr funktioniert.
kgingeri

2

Ich habe eine funktionierende Lösung dafür gefunden ... Verwenden Sie einfach Folgendes

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=1HlzTR1-YVoBPlXo0gMFJ_xY4ogMnfzDi' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1HlzTR1-YVoBPlXo0gMFJ_xY4ogMnfzDi" -O besteyewear.zip && rm -rf /tmp/cookies.txt

Dabei erhalte ich die Warnung WARNUNG: Das Zertifikat von docs.google.com, ausgestellt von "/ C = US / O = Google Trust Services / CN = Google Internet Authority G3", kann nicht überprüft werden. Die Berechtigung des Ausstellers kann nicht lokal überprüft werden. HTTP-Anfrage gesendet und wartet auf Antwort ... 404 Nicht gefunden 2019-02-08 02:56:30 FEHLER 404: Nicht gefunden. Problemumgehungen?
Bluejayke

BEEINDRUCKEND! Tolle Antwort und sehr logisch. Danke, dass du es geschrieben hast. Heruntergeladene 1,3-GB-Datei mit diesem Befehl ... Vollautomatischer Modus vom Linux-Terminal nur mit diesem Befehl. Auch auf GCP ausprobiert. Funktioniert auch dort hervorragend. Jahr 2020 ... Ich glaube, das ist der richtige Weg ... auch wenn sie ein paar Befehle ändern, sollte dies die Zeit überdauern.
Atta Jutt

2

Es gibt einen einfacheren Weg.

Installieren Sie cliget / CURLWGET von der Firefox / Chrome-Erweiterung.

Laden Sie die Datei aus dem Browser herunter. Dadurch wird ein Curl / Wget-Link erstellt, der sich an die Cookies und Header erinnert, die beim Herunterladen der Datei verwendet wurden. Verwenden Sie diesen Befehl von einer beliebigen Shell zum Herunterladen


Dies ist ohne Zweifel der einfachste und einfachste Weg.
c0degeas

2

Mit der einfachen Möglichkeit, Dateien von Google Drive herunterzufahren, können Sie auch Dateien auf Colab herunterladen

pip install gdown

import gdown

Dann

url = 'https://drive.google.com/uc?id=0B9P1L--7Wd2vU3VUVlFnbTgtS2c'
output = 'spam.txt'
gdown.download(url, output, quiet=False)

oder

fileid='0B9P1L7Wd2vU3VUVlFnbTgtS2c'

gdown https://drive.google.com/uc?id=+fileid

Dokument https://pypi.org/project/gdown/


cool. Aber wie unterscheidet es sich von Phis Antwort , die über ein Jahr vor Ihrer veröffentlicht wurde?
umläute

1

Mai 2018 ARBEITEN

Hallo, basierend auf diesen Kommentaren ... Ich erstelle eine Bash, um eine Liste von URLs aus der Datei URLS.txt in eine URLS_DECODED.txt zu exportieren, die in einem Beschleuniger wie Flashget verwendet wird (ich verwende Cygwin, um Windows und Linux zu kombinieren).

Command Spider wurde eingeführt, um das Herunterladen zu vermeiden und den endgültigen Link (direkt) zu erhalten.

Befehl GREP HEAD und CUT, verarbeite und erhalte den endgültigen Link. Basiert auf spanischer Sprache. Vielleicht könntest du auf ENGLISH LANGUAGE portieren

echo -e "$URL_TO_DOWNLOAD\r" wahrscheinlich ist das \ r nur cywin und muss durch ein \ n (break line) ersetzt werden

**********user*********** ist der Benutzerordner

*******Localización*********** ist in spanischer Sprache, löschen Sie die Sternchen und lassen Sie das Wort in Englisch Location und passen Sie THE HEAD und die CUT-Nummern an, um einen angemessenen Ansatz zu finden.

rm -rf /home/**********user***********/URLS_DECODED.txt
COUNTER=0
while read p; do 
    string=$p
    hash="${string#*id=}"
    hash="${hash%&*}"
    hash="${hash#*file/d/}"
    hash="${hash%/*}"
    let COUNTER=COUNTER+1
    echo "Enlace "$COUNTER" id="$hash
    URL_TO_DOWNLOAD=$(wget --spider --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='$hash -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id="$hash 2>&1 | grep *******Localización***********: | head -c-13 | cut -c16-)
    rm -rf /tmp/cookies.txt
    echo -e "$URL_TO_DOWNLOAD\r" >> /home/**********user***********/URLS_DECODED.txt
    echo "Enlace "$COUNTER" URL="$URL_TO_DOWNLOAD
done < /home/**********user***********/URLS.txt

1

Sie müssen nur wget verwenden mit:

 https://drive.google.com/uc?authuser=0&id=[your ID without brackets]&export=download

PD. Die Datei muss öffentlich sein.


0

skicka ist ein CLI-Tool zum Hochladen und Herunterladen von Zugriffsdateien von einem Google-Laufwerk.

Beispiel -

skicka download /Pictures/2014 ~/Pictures.copy/2014
10 / 10 [=====================================================] 100.00 % 
skicka: preparation time 1s, sync time 6s
skicka: updated 0 Drive files, 10 local files
skicka: 0 B read from disk, 16.18 MiB written to disk
skicka: 0 B uploaded (0 B/s), 16.18 MiB downloaded (2.33 MiB/s)
skicka: 50.23 MiB peak memory used
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.