wget / curl tệp lớn từ ổ đĩa google


306

Tôi đang cố tải xuống một tệp từ ổ đĩa google trong một tập lệnh và tôi gặp một chút rắc rối khi làm như vậy. Các tập tin tôi đang cố tải xuống ở đây .

Tôi đã xem trực tuyến rộng rãi và cuối cùng tôi đã tìm được một trong số chúng để tải xuống. Tôi đã nhận được các UID của các tệp và tệp tải xuống nhỏ hơn (1.6 MB), tuy nhiên tệp lớn hơn (3,7 GB) luôn chuyển hướng đến một trang hỏi tôi có muốn tiến hành tải xuống mà không quét vi-rút không. Ai đó có thể giúp tôi vượt qua màn hình đó?

Đây là cách tôi có tập tin đầu tiên hoạt động -

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

Khi tôi chạy tương tự trên các tập tin khác,

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

Tôi nhận được đầu ra sau - nhập mô tả hình ảnh ở đây

Tôi nhận thấy trên dòng thứ ba đến cuối cùng trong liên kết, có một &confirm=JwkKchuỗi gồm 4 ký tự ngẫu nhiên nhưng gợi ý rằng có một cách để thêm xác nhận vào URL của tôi. Một trong những liên kết tôi đã đề xuất &confirm=no_antivirusnhưng không hoạt động.

Tôi hy vọng ai đó ở đây có thể giúp với điều này!


bạn có thể vui lòng cung cấp những curl scriptgì bạn đã sử dụng để tải xuống tệp google drivevì tôi không thể tải xuống một tệp làm việc (hình ảnh) từ tập lệnh nàycurl -u username:pass https://drive.google.com/open?id=0B0QQY4sFRhIDRk1LN3g2TjBIRU0 >image.jpg
Kasun Siyambalapitiya

Nhìn vào câu trả lời được chấp nhận. Tôi đã sử dụng tập lệnh gdown.plgdown.pl https://drive.google.com/uc?export=download&confirm=yAjx&id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM index4phlat.tar.gz
Arjun

2
Đừng ngại cuộn! Câu trả lời này cung cấp một kịch bản python rất đẹp để tải xuống trong một lần.
Ciprian Tomoiagă

./gdrive tải xuống [FILEID] [--recursive nếu là thư mục] nó sẽ yêu cầu bạn truy cập một url đã cho và sao chép dán mã thông báo.
roj4s

Câu trả lời:


59

CẢNH BÁO : Chức năng này không được dùng nữa. Xem cảnh báo dưới đây trong ý kiến.


Hãy xem câu hỏi này: Tải xuống trực tiếp từ Google Drive bằng Google Drive API

Về cơ bản, bạn phải tạo một thư mục công cộng và truy cập các tệp của mình bằng cách tham chiếu tương đối với một cái gì đó như

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

Ngoài ra, bạn có thể sử dụng tập lệnh này: https://github.com/circulosmeos/gdown.pl


5
một cách tốt khác là sử dụng công cụ dòng lệnh linux "gdrive" github.com/prasmussen/gdrive
Tobi

1
Tôi đã có thể sử dụng tập lệnh perl của Nan ERIC kết hợp với permalink của ổ đĩa google được tạo tại gdurl.com - Xin cảm ơn!
jadik

14
CẢNH BÁO: Không hỗ trợ lưu trữ web trong Google Drive. "Bắt đầu từ ngày 31 tháng 8 năm 2015, việc lưu trữ web trong Google Drive cho người dùng và nhà phát triển sẽ không được chấp nhận. Khách hàng của Google Apps có thể tiếp tục sử dụng tính năng này trong khoảng thời gian một năm cho đến ngày 31 tháng 8 năm 2016, khi phục vụ nội dung qua googledrive.com/host / doc id sẽ bị ngưng. " googlimetsupdates.blogspot.com/2015/08/ Cách
chrish

9
Thật không may, nó không hoạt động lâu hơn kể từ năm 2018.
Calimo

2
gdown.pl cũng làm việc rất tốt cho tôi Nhìn nhanh vào tập lệnh cho thấy nó không sử dụng API đó, nó tạo ra một URL mới với một tham số export=downloadđể nó tốt cho tương lai gần trừ khi google thay đổi lược đồ URL đó
Ben Baron

233

Tháng 6 năm 2020

Cái file_idnhìn giống như 0Bz8a_Dbh9QhbNU3SGlFaDg

Bạn có thể lấy nó bằng cách nhấp chuột phải vào tệp và sau đó Nhận liên kết có thể chia sẻ. Chỉ hoạt động trên các tệp truy cập mở (Bất kỳ ai có liên kết đều có thể Xem). Không làm việc cho các thư mục. Đã thử nghiệm trên Google Colab. Hoạt động tốt nhất khi tải tập tin. Sử dụng tar / zip để làm cho nó một tập tin duy nhất.

Ví dụ: để tải xuống tệp readme từ thư mục này

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

9
Chỉ cần xóa export=download&khỏi gdown https://drive.google.com/uc?export=download&id=your_file_idvà nó hoạt động như bùa mê
Saravanabalagi Ramachandran

8
Cái này hoạt động vào tháng 7 năm 2018! Hãy nhớ chia sẻ tệp và nếu bạn có liên kết là drive.google.com/open?id=FILE_ID, chỉ cần thay thế "mở" bằng "uc" và chỉ cần gdown drive.google.com/uc?id=FILE_ID
simo23

7
Làm cách nào chúng tôi có thể tải xuống một thư mục từ Gdrive bằng cách sử dụng gdown?
dùng1

7
Không hoạt động kể từ tháng 8 năm 2019. Lỗi: "Quyền bị từ chối: drive.google.com/uc?id=0B7EVK8r0v71pweZsZE9oNnFzTm8 Có lẽ bạn cần thay đổi quyền đối với 'Bất kỳ ai có liên kết'?" Và đó là bộ dữ liệu CelebA có thể tải xuống công khai nên sẽ ổn. Tôi đã có được liên kết tải xuống bằng cách nhấp vào 'lấy liên kết có thể chia sẻ' sau đó thông báo 'chia sẻ liên kết trên' và 'bất kỳ ai có liên kết đều có thể xem liên kết'. Vì vậy, có vẻ như quyền đã được cấp nhưng lỗi cho phép bị từ chối. Đây là trang chủ nếu bạn muốn dùng thử: mmlab.ie.cuhk.edu.hk/projects/CelebA.html
Kristof

6
Đây là giải pháp duy nhất trong số nửa tá tôi đã thử. Nó cần phải được nâng cấp lên đầu tiên. Tôi chỉ cần thay đổi 'liên kết được chia sẻ' từ: drive.google.com/open?id=XXXX thành drive.google.com/uc?id=XXXX
deprekate

194

Tôi đã viết một đoạn mã Python tải xuống một tệp từ Google Drive, được cung cấp một liên kết có thể chia sẻ . Nó hoạt động, kể từ tháng 8 năm 2017 .

Đoạn trích không sử dụng gdrive cũng như API Google Drive. Nó sử dụng mô-đun yêu cầu .

Khi tải xuống các tệp lớn từ Google Drive, một yêu cầu GET không đủ. Cần một cái thứ hai và cái này có một tham số URL bổ sung được gọi là xác nhận , có giá trị bằng với giá trị của một cookie nhất định.

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)

Tôi đang chạy đoạn trích python snippet.py file_id destination. Đây có phải là cách chính xác để chạy nó? Nguyên nhân nếu đích là thư mục tôi bị lỗi. Nếu tôi cứng một tệp và tôi sử dụng nó làm đích thì đoạn mã có vẻ hoạt động tốt nhưng sau đó không làm gì cả.
Manfredo

2
@Manfredo bạn cần tên tệp bạn muốn lưu tệp, ví dụ như, $ python snippet.py your_google_file_id /your/full/path/and/filename.xlsx làm việc cho tôi. trong trường hợp không hoạt động, bạn có cung cấp dịch vụ nào không? Có tập tin nào được tạo không?
Jeff

1
@CiprianTomoiaga Tôi có 90% thanh tiến trình hoạt động, sử dụng mô-đun tqdm Python. Tôi đã thực hiện một ý chính: gist.github.com/joshtch/8e51c6d40b1e3205d1bb2eea18fb57ae . Thật không may, tôi đã không tìm thấy một cách đáng tin cậy để có được tổng kích thước tệp, mà bạn sẽ cần để tính% tiến độ và thời gian hoàn thành ước tính.
joshtch

Ngoài ra, mô-đun yêu cầu sử dụng loại xác thực nào để truy cập các ổ đĩa google? OAuth? Ví dụ: mã ở trên của bạn được xử lý ở đâu - request-oauthlib.readthedocs.io/en/latest/ ,?
tauseef_CperedGuy

7
Điều này thật tuyệt! Đây là một mẹo dành cho drive_File_ID: https // drive.google.com / file / d / "drive_File_ID" / view - giữa https ~ ~ file / d / và / view của liên kết tải xuống.
Jaeyoung Lee

70

Bạn có thể sử dụng công cụ dòng lệnh Linux / Unix mã nguồn mở gdrive.

Để cài đặt nó:

  1. Tải về nhị phân. Chọn một trong những phù hợp với kiến ​​trúc của bạn, ví dụgdrive-linux-x64.

  2. Sao chép nó vào đường dẫn của bạn.

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

Để dùng nó:

  1. Xác định ID tệp Google Drive. Vì thế, nhấp chuột phải vào tệp mong muốn trong trang web Google Drive và chọn "Nhận liên kết". Nó sẽ trả lại một cái gì đó như https://drive.google.com/open?id=0B7_OwkDsUIgFWXA1B2FPQfV5S8H. Lấy chuỗi phía sau ?id=và sao chép nó vào clipboard của bạn. Đó là ID của tập tin.

  2. Tải tập tin. Tất nhiên, sử dụng ID tệp của bạn thay vì trong lệnh sau.

    gdrive download 0B7_OwkDsUIgFWXA1B2FPQfV5S8H
    

Ở lần sử dụng đầu tiên, công cụ sẽ cần có được quyền truy cập vào API Google Drive. Do đó, nó sẽ hiển thị cho bạn một liên kết mà bạn phải truy cập trong trình duyệt và sau đó bạn sẽ nhận được mã xác minh để sao chép và dán lại vào công cụ. Việc tải xuống sau đó bắt đầu tự động. Không có chỉ báo tiến trình, nhưng bạn có thể quan sát tiến trình trong trình quản lý tệp hoặc thiết bị đầu cuối thứ hai.

Nguồn: Một bình luận của Tobi về một câu trả lời khác ở đây.

 

Thủ thuật bổ sung: giới hạn tỷ lệ. Để tải xuống với gdrivetốc độ tối đa giới hạn (để không làm tràn ngập mạng), bạn có thể sử dụng một lệnh như thế này ( pvTubeViewer ):

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

Điều này sẽ hiển thị lượng dữ liệu được tải xuống ( -b) và tốc độ tải xuống ( -r) và giới hạn tốc độ đó ở mức 90 kiB / s ( -L 90k).


thông báo lỗi: "Đã vượt quá giới hạn hàng ngày cho việc sử dụng không được xác thực. Tiếp tục sử dụng yêu cầu đăng ký.", mã: 403
Nianliang

@Nianliang Chưa trải nghiệm điều này, nhưng đây là một phỏng đoán: Bạn đã sử dụng gdrive để tải xuống một tệp có thể truy cập công khai, vì vậy nó sẽ không yêu cầu bạn xác thực khi sử dụng lần đầu. Trước tiên hãy thử một tệp không công khai, đảm bảo xác thực thành công (như được mô tả trong câu trả lời: "Ở lần sử dụng đầu tiên, Thẻ"). Nó có giúp được không?
tanius

3
Không thể lấy mã xác minh. Nhận lỗi "Đăng nhập bằng Google tạm thời bị vô hiệu hóa cho ứng dụng này Ứng dụng này chưa được Google xác minh để sử dụng Đăng nhập Google."
useranon

1
Thông báo lỗi tương tự ở đây: "Ứng dụng này chưa được xác minh bởi Google để sử dụng Google Đăng nhập."
gebbissimo

1
@useranon: Hãy thử giải pháp này: github.com/gdrive-org/gdrive/issues/533#issuecomment-596336395 , bạn cần tạo tài khoản dịch vụ google và chia sẻ tệp / thư mục với địa chỉ tài khoản dịch vụ này. Tôi đã làm nó. Hoạt động kể từ ngày 17/8/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}"  

Làm thế nào nó hoạt động?
Nhận tập tin cookie và mã html với curl.
Ống html đến grep và sed và tìm kiếm tên tệp.
Nhận mã xác nhận từ tập tin cookie với awk.
Cuối cùng tải tập tin với cookie được kích hoạt, xác nhận mã và tên tệp.

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

Nếu bạn không cần tên biến, curl có thể đoán nó
-L Theo dõi chuyển hướng
-O Remote-name
-J Remote-title-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}" 

Để trích xuất ID tệp google từ URL, bạn có thể sử dụng:

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

HOẶC LÀ

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 

Hoàn thành rất tốt. Đã loại bỏ cảnh báo vi-rút trên tệp 5GB + khi tất cả các câu trả lời khác không thành công.

1
Điều này thật tuyệt vời. Tôi đã phải thêm --insecuretùy chọn cho cả hai yêu cầu cuộn tròn để làm cho nó hoạt động.
Taylor R

@lapinpt làm cách nào để thêm chức năng RESUME?
steven7mwesigwa

Bằng cách nào đó chúng ta có thể thoát khỏi id google nếu chúng ta có một liên kết công khai đến tệp không?
oarfish

42

Cập nhật kể từ tháng 3 năm 2018.

Tôi đã thử các kỹ thuật khác nhau được đưa ra trong các câu trả lời khác để tải xuống tệp của tôi (6 GB) trực tiếp từ ổ đĩa Google vào phiên bản AWS ec2 của tôi nhưng không có cách nào trong số chúng hoạt động (có thể vì chúng đã cũ).

Vì vậy, đối với thông tin của người khác, đây là cách tôi thực hiện thành công:

  1. Nhấp chuột phải vào tệp bạn muốn tải xuống, nhấp vào chia sẻ, trong phần chia sẻ liên kết, chọn "bất kỳ ai có liên kết này đều có thể chỉnh sửa".
  2. Sao chép liên kết. Nó phải ở định dạng này:https://drive.google.com/file/d/FILEIDENTIFIER/view?usp=sharing
  3. Sao chép phần FILEIDENTIFIER từ liên kết.
  4. Sao chép tập lệnh dưới đây vào một tập tin. Nó sử dụng curl và xử lý cookie để tự động tải xuống tệp.

    #!/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. Như được hiển thị ở trên, dán FILEIDENTIFIER trong tập lệnh. Hãy nhớ giữ dấu ngoặc kép!

  6. Cung cấp tên cho tệp thay cho FILENAME. Hãy nhớ giữ dấu ngoặc kép và cũng bao gồm phần mở rộng trong FILENAME (ví dụ myfile.zip:).
  7. Bây giờ, lưu tệp và làm cho tệp thực thi bằng cách chạy lệnh này trong thiết bị đầu cuối sudo chmod +x download-gdrive.sh.
  8. Chạy tập lệnh bằng cách sử dụng `./doad-gdrive.sh".

PS: Đây là ý chính của Github cho tập lệnh đã cho ở trên: https://gist.github.com/amit-chahar/db49ce64f46367325293e4cce13d2424


cho wget thay thế -cvới --save-cookies-bvới--load-cookies
untore

3
xác nhận điều này làm việc cho tôi, chỉnh sửa một chút cho rõ ràng
Jeff Atwood

1
Hoạt động vào tháng 1 năm 2019. Tôi cần thêm "dấu ngoặc kép ${filename}ở dòng cuối cùng.
Jimbo

> Chạy tập lệnh bằng ./download-gdrive.sh" Do not be like me and try to run the script by typing download-gdrive.sh , the . / `Dường như là bắt buộc.
Ambroise Rabier

Làm việc vào tháng 5 năm 2019
Kshitij Bajracharya

29

Đây là một cách nhanh chóng để làm điều này.

Hãy chắc chắn rằng liên kết được chia sẻ và nó sẽ trông giống như thế này:

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

Sau đó, sao chép FILEID đó và sử dụng nó như thế này

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

2
Hi, cảm ơn bạn đã trả lời. Nếu bạn nhìn vào các tệp trên liên kết tôi đã chia sẻ, bạn sẽ thấy rằng trong khi các tệp được chia sẻ, chúng thiếu thẻ 'authuser = 0' trong liên kết. Phương pháp của bạn không hoạt động trên các tệp được cung cấp! Arjun
Arjun

2
Thậm chí không thử với truy cập công cộng, cái này hoạt động tốt đối với các tệp được chia sẻ chỉ liên kết. Sử dụng nó như thế này:wget 'https://docs.google.com/uc?export=download&id=SECRET_ID' -O 'filename.pdf'
Sampo Sarrala - codidact.org

Không hoạt động kể từ năm 2018, tôi nhận được trang web quét chống vi-rút thay vì tệp.
Calimo

7
Nó bỏ qua trình quét chống vi-rút cho tôi vào năm 2018 khi được sử dụng với -rcờ của wget. Nó là như vậywget --no-check-certificate -r 'https://docs.google.com/uc?export=download&id=FILE_ID' -O 'filename'
Artem Pelenitsyn

1
Làm việc cho tôi kể từ 10/2019 và là giải pháp hoàn hảo để tôi đưa một tệp vào bộ chứa Docker đang chạy mà hầu như không có ứng dụng tiện ích nào chạy trên đó.
ammills01

23

Hành vi mặc định của ổ đĩa google là quét các tệp vi-rút nếu tệp lớn, nó sẽ nhắc người dùng và thông báo cho anh ta rằng tệp không thể quét được.

Hiện tại, cách giải quyết duy nhất tôi tìm thấy là chia sẻ tệp với web và tạo tài nguyên web.

Trích dẫn từ trang trợ giúp của google drive:

Với Drive, bạn có thể tạo các tài nguyên web - như tệp HTML, CSS và Javascript - có thể xem dưới dạng trang web.

Để lưu trữ một trang web với Drive:

  1. Mở Drive tại drive.google.com và chọn một tệp.
  2. Nhấp vào nút Chia sẻ ở đầu trang.
  3. Nhấp vào Nâng cao ở góc dưới bên phải của hộp chia sẻ.
  4. Nhấp vào Thay đổi ....
  5. Chọn Bật - Công khai trên web và nhấp vào Lưu .
  6. Trước khi đóng hộp chia sẻ, sao chép ID tài liệu từ URL trong trường bên dưới "Liên kết để chia sẻ". ID tài liệu là một chuỗi chữ hoa và chữ thường và số giữa các dấu gạch chéo trong URL.
  7. Chia sẻ URL trông giống như "www.googledrive.com/host/[doc id] trong đó [doc id] được thay thế bằng ID tài liệu bạn đã sao chép ở bước 6.
    Bất kỳ ai cũng có thể xem trang web của bạn.

Tìm thấy tại đây: https://support.google.com/drive đá 2881970? Hl = vi

Vì vậy, ví dụ khi bạn chia sẻ một tệp trên google drive công khai, sharelink trông như thế này:

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

Sau đó, bạn sao chép id tệp và tạo một linke googledrive.com trông như thế này:

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

1
@ FıratKÜÇÜK bạn có chắc bạn đã định dạng url đúng không? (lưu ý www.googledrive.com chứ không phải drive.google.com) Tôi vừa thử và nó đã hoạt động.
Charles Forest

Tập tin của tôi là hơn 50 MB. nó yêu cầu xác nhận quét virus. Vì vậy, giải pháp không phù hợp với trường hợp của tôi. Thay vào đó tôi sử dụng giải pháp ứng dụng console "gdrive".
Fırat KÜÇÜK

@ FıratKÜÇÜK Tôi vừa mới tải xuống tệp 200+ Mb bằng phương pháp này thường kích hoạt kiểm tra vi-rút. Tôi đã nhận được ID từ nhấp chuột phải> "nhận liên kết có thể chia sẻ".
Ciro Santilli 郝海东 冠状 病 事件


11
Tính năng này không được hỗ trợ và không còn được hỗ trợ
Daniel G

19

Cách dễ dàng:

(nếu bạn chỉ cần tải xuống một lần)

  1. Truy cập trang web Google Drive có liên kết tải xuống
  2. Mở bảng điều khiển trình duyệt của bạn và chuyển đến tab "mạng"
  3. Nhấp vào liên kết tải xuống
  4. Đợi cho nó tập tin bắt đầu tải xuống và tìm yêu cầu tương ứng (nên là yêu cầu cuối cùng trong danh sách), sau đó bạn có thể hủy tải xuống
  5. Nhấp chuột phải vào yêu cầu và nhấp vào "Sao chép dưới dạng cURL" (hoặc tương tự)

Bạn nên kết thúc với một cái gì đó như:

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

Vượt qua nó trong bảng điều khiển của bạn, thêm > my-file-name.extensionvào cuối (nếu không nó sẽ ghi tệp vào bảng điều khiển của bạn), sau đó nhấn enter :)


Làm việc vào tháng 6 năm 2019
techkuz

Hoạt động kể từ tháng 2 năm 2020
Jivan

12

Dựa trên câu trả lời từ Roshan Sethia

Tháng 5 năm 2018

Sử dụng WGET :

  1. Tạo một tập lệnh shell có tên wgetgdrive.sh như sau:

    #!/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. Cấp quyền đúng để thực thi tập lệnh

  3. Trong thiết bị đầu cuối, chạy:

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

    ví dụ:

    ./wgetgdrive.sh 1lsDPURlTNzS62xEOAIG98gsaW6x2PYd2 images.zip
    

1
Điều này hoạt động như CHARM cảm ơn, và để giảm bớt mọi thứ:chmod 770 wgetgdrive.sh
Mohamed Kawsara

8

- HOÀN TOÀN--

Để tải tập tin trước tiên hãy lấy youtube-dlpython từ đây:

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

hoặc cài đặt nó với pip:

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

CẬP NHẬT:

Tôi mới phát hiện ra điều này:

  1. Nhấp chuột phải vào tệp bạn muốn tải xuống từ drive.google.com

  2. Nhấp chuột Get Sharable link

  3. Bật lên Link sharing on

  4. Bấm vào Sharing settings

  5. Nhấp vào menu thả xuống trên cùng cho các tùy chọn

  6. Bấm vào Thêm

  7. Lựa chọn [x] On - Anyone with a link

  8. Sao chép đường dẫn

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

Sao chép id sau https://drive.google.com/file/d/:

3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR

Dán cái này vào dòng lệnh:

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

Dán id phía sau 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)

Hy vọng nó giúp


1
xin cảm ơn tôi đã thử cái này và nó tải xuống khi tôi chạy từ dấu nhắc lệnh, nhưng có cách nào để có được "liên kết trực tiếp" thực sự như để truy cập trên máy chủ không? Tôi muốn chạy nó với nút {spawn}, nhưng sau đó nó phải tải xuống máy chủ nút và từ đó tải xuống lại, có cách nào để lấy liên kết tải xuống trực tiếp từ ổ google không? Họ sử dụng liên kết gì?
bluejayke

Bây giờ tôi phải sử dụng phương pháp này rất nhiều vì vậy tôi sẽ cố gắng tự động hóa hoàn toàn. Chỉ cần lấy liên kết google và một kịch bản Python sẽ làm phần còn lại. Tôi nghĩ rằng tôi sẽ sử dụng selen để làm điều này. Sẽ cập nhật giải pháp của tôi khi nó đang làm việc.
jturi

Cập nhật câu trả lời của tôi. Điều này bây giờ đơn giản chỉ với 2 lần nhấp để tải xuống bất kỳ tệp nào với youtube-dl.
jturi

7

Không có câu trả lời đề xuất những gì làm việc cho tôi vào tháng 12 năm 2016 ( nguồn ):

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

miễn là tệp Google Drive đã được chia sẻ với những người có liên kết và {FileID}là chuỗi phía sau ?id=trong URL được chia sẻ.

Mặc dù tôi đã không kiểm tra với các tệp lớn nhưng tôi tin rằng nó có thể hữu ích để biết.


Hmmm ... không hoạt động với tôi :( Chỉ cần tải xuống nội dung web - không phải tệp
kgingeri

1
curl -L -o {filename} https://drive.google.com/uc?id={FileID}làm việc cho tôi, cảm ơn!
Dário

Điều này không làm việc cho tôi. Liên kết của tôi ở bên dưới (bất kỳ ai có liên kết đều có thể xem): drive.google.com/file/d/0B7Jh6M91b83bdFlWX2RIU2hYSWM/ . Tôi cố gắng: <code> curl -O -J -L drive.google.com/uc?id=0B7Jh6M91b83bdFlWX2RIU2hYSWM</code > và tôi nhận được kết quả này: curl: (56) Nhận HTTP mã 403 từ Proxy sau CONNECT
Steve

7
Chỉ hoạt động đối với các tệp có dung lượng tối đa 25 MB, các tệp lớn hơn cung cấp trang cảnh báo quét vi-rút
cen

6

Cách dễ nhất là:

  1. Tạo liên kết tải xuống và sao chép fileID
  2. Tải xuống với WGET: 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
Cảm ơn bạn rất nhiều! Hữu ích không ngờ
Nicholas Pipitone

6

Các câu trả lời trên đã lỗi thời vào tháng 4 năm 2020, vì google drive hiện sử dụng chuyển hướng đến vị trí thực tế của tệp.

Hoạt động kể từ tháng 4 năm 2020 trên macOS 10.15.4 cho các tài liệu công khai:

# 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-2làm việc cho tôi Tập tin của tôi có kích thước 3G. Cảm ơn @ danieltan95
Saurabh Kumar

Tôi đã cập nhật bản download-google-2curl cuối cùng này curl -L -b .tmp/$1cookies -C - "https://drive.google.com/uc?export=download&confirm=$code&id=$1" -o $2;và bây giờ nó có thể tiếp tục tải xuống.
ssi-anik

Có vẻ như đã xảy ra sự cố với tải xuống ở tốc độ thấp. một cách tiếp cận khác tôi tìm thấy. qr.ae/pNrPaJ
ssi-

5

Tôi gặp vấn đề tương tự với Google Drive.

Đây là cách tôi giải quyết vấn đề bằng Liên kết 2 .

  1. Mở trình duyệt trên PC của bạn, điều hướng đến tệp của bạn trong Google Drive. Cung cấp cho tập tin của bạn một liên kết công khai.

  2. Sao chép liên kết công khai vào khay nhớ tạm của bạn (ví dụ nhấp chuột phải, Sao chép địa chỉ liên kết)

  3. Mở một Terminal. Nếu bạn đang tải xuống PC / máy chủ / máy khác, bạn nên SSH tới nó vì điểm này

  4. Cài đặt Liên kết 2 (phương pháp debian / ubfox, sử dụng bản phân phối hoặc hệ điều hành tương đương của bạn)

    sudo apt-get install links2

  5. Dán liên kết vào thiết bị đầu cuối của bạn và mở nó bằng Liên kết như vậy:

    links2 "paste url here"

  6. Điều hướng đến liên kết tải xuống trong Liên kết bằng Phím mũi tên của bạn và nhấn Enter

  7. Chọn một tên tệp và nó sẽ tải xuống tệp của bạn


Linkshoàn toàn đã lừa Và nó tốt hơn nhiều so vớiw3m
alvas 11/1/2016

1
Đây là điều duy nhất làm việc cho tôi! Tháng 2 năm 2019. Ứng dụng gdown trong các bình luận trước đó được lưu trữ bởi không ai khác ngoài tài liệu google, vì vậy cũng không thể tải xuống.
Steven

5

Sử dụng youtube-dl !

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

Bạn cũng có thể vượt qua --get-urlđể lấy URL tải xuống trực tiếp.


1
@Ender nó vẫn hoạt động cho tôi youtube-dl https://drive.google.com/open?id=ABCDEFG1234567890aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [GoogleDrive] ABCDEFG1234567890aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: Downloading webpage. có thể bạn có phiên bản lỗi thời youtube-dlhoặc định dạng liên kết không được nhận dạng bởi vì một số lý do ... Hãy thử sử dụng định dạng trên thay thế id bằng id tệp từ URL gốc của bạn
aularon

5

Tôi đã sử dụng đoạn trích của @ Amit Chahar , người đã đăng một câu trả lời hay trong chủ đề này. Tôi thấy nó hữu ích khi đặt nó trong một hàm bash chứ không phải là một .shtệp riêng biệt

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
}

có thể được bao gồm trong ví dụ a ~/.bashrc(sau khi tìm nguồn cung ứng nếu không có nguồn gốc tự động) và được sử dụng theo cách sau

   $ curl_gdrive 153bpzybhfqDspyO_gdbcG5CMlI19ASba imagenet.tar

Đây có lẽ là câu trả lời tốt nhất ... sự so sánh của con trăn quá nặng. Tôi phải nói rằng tôi khá không hài lòng với gdrive mặc dù ...
smaudet

1
Bạn không cần -f hay -r trong lệnh rm của bạn. Nếu bạn dạy mọi người luôn luôn "rm -rf", họ có thể sẽ loại bỏ những thứ họ muốn giữ ...
josch

4

Có một máy khách đa nền tảng nguồn mở, được viết bằng Go: drive . Nó khá đẹp và đầy đủ tính năng, và cũng đang được phát triển tích cực.

$ 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

Tất cả các câu trả lời trên dường như che khuất sự đơn giản của câu trả lời hoặc có một số sắc thái không được giải thích.

Nếu tệp được chia sẻ công khai, bạn có thể tạo liên kết tải xuống trực tiếp bằng cách chỉ cần biết ID tệp. URL phải ở dạng " https://drive.google.com/uc?id=[FILEID[&export=doad " Điều này hoạt động kể từ ngày 11-22-2019. Điều này không yêu cầu người nhận đăng nhập vào google nhưng yêu cầu tệp phải được chia sẻ công khai.

  1. Trong trình duyệt của bạn, điều hướng đến drive.google.com.

  2. Nhấp chuột phải vào tệp và nhấp vào "Nhận liên kết có thể chia sẻ"

Nhấp chuột phải có được liên kết có thể chia sẻ

  1. Mở một tab mới, chọn thanh địa chỉ và dán vào nội dung trong bảng tạm của bạn, đây sẽ là liên kết có thể chia sẻ. Bạn sẽ thấy tệp được hiển thị bởi trình xem của Google. ID là số ngay trước thành phần "Xem" của URL:

nhập mô tả hình ảnh ở đây

  1. Chỉnh sửa URL theo định dạng sau, thay thế "[FILEID]" bằng ID của tệp được chia sẻ của bạn:

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

  2. Đó là liên kết tải xuống trực tiếp của bạn. Nếu bạn nhấp vào nó trong trình duyệt, tệp sẽ được "đẩy" sang trình duyệt của bạn, mở hộp thoại tải xuống, cho phép bạn lưu hoặc mở tệp. Bạn cũng có thể sử dụng liên kết này trong tập lệnh tải xuống của bạn.

  3. Vì vậy, lệnh curl tương đương sẽ là:

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

2
Điều này không hoạt động đối với các tệp lớn: gặp lỗiGoogle 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

Điều này đã làm việc. Cảm ơn bạn! Sau khi chuyển đổi liên kết sang định dạng đó, bạn cũng có thể sử dụng gdown như trong các câu trả lời khác
Harry M

3

Tôi không thể làm cho tập lệnh perl của Nanoix hoạt động, hoặc các ví dụ uốn cong khác mà tôi đã thấy, vì vậy tôi bắt đầu tự tìm hiểu về api trong python. Điều này hoạt động tốt đối với các tệp nhỏ, nhưng các tệp lớn bị nghẹt qua ram có sẵn vì vậy tôi đã tìm thấy một số đoạn mã đẹp khác sử dụng khả năng của api để tải xuống một phần. Gist tại đây: https://gist.github.com/csik/c4c90987224150e4a0b2

Lưu ý một chút về việc tải xuống tệp j_s client_secret từ giao diện API vào thư mục cục bộ của bạn.

Nguồn
$ 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

Đây là một kịch bản bash nhỏ mà tôi đã viết mà thực hiện công việc ngày hôm nay. Nó hoạt động trên các tệp lớn và cũng có thể tiếp tục các tệp được tìm nạp một phần. Phải có hai đối số, đầu tiên là file_id và thứ hai là tên của tệp đầu ra. Những cải tiến chính so với các câu trả lời trước đây ở đây là nó hoạt động trên các tệp lớn và chỉ cần các công cụ phổ biến có sẵn: bash, curl, tr, grep, du, cut và 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

Chào mừng đến với SO. Nếu bạn đã sử dụng bất kỳ tài liệu tham khảo cho mục đích này, xin vui lòng bao gồm chúng trong câu trả lời của bạn. Nhưng dù sao, công việc tốt +1
M--

3

Điều này hoạt động kể từ tháng 11 năm 2017 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

Mặc dù có "url nguồn" được nêu và có một số phân tích cú pháp tôi đã không cố gắng hiểu nó hoạt động bằng cách đơn giản trực tiếp sử dụng cái được gọi là fileid ở đây và trong các câu trả lời khác làm tham số đầu tiên.
Tháng Một

@jan Điều đó có thể có nghĩa là có nhiều hơn một kiểu url. Tôi rất vui vì nó vẫn làm việc cho bạn trên tất cả.
ppetraki

3

Sau khi lộn xộn với rác này. Tôi đã tìm thấy cách tải xuống tệp ngọt ngào của mình bằng cách sử dụng chrome - công cụ dành cho nhà phát triển.

  1. Tại tab tài liệu google của bạn, Ctr + Shift + J (Cài đặt -> Công cụ dành cho nhà phát triển)
  2. Chuyển sang tab Mạng
  3. Tại tệp tài liệu của bạn, nhấp vào "Tải xuống" -> Tải xuống dưới dạng CSV, xlsx, ....
  4. Nó sẽ hiển thị cho bạn yêu cầu trong bảng điều khiển "Mạng" nhập mô tả hình ảnh ở đây

  5. Nhấp chuột phải -> Sao chép -> Sao chép dưới dạng Curl

  6. Lệnh Curl của bạn sẽ như thế này và thêm -ovào để tạo một tệp được xuất. 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

Đã giải quyết!


liên kết đó hết hạn và chỉ dành cho 1 địa chỉ IP tại một thời điểm
bluejayke

Bạn chỉ có thể thực hiện một yêu cầu liên tục im lặng để giữ cho phiên sống. @bluejayke
Ender

Tôi đã làm chính xác điều đó và khi đến đây để viết một câu trả lời khác, tình cờ gặp bạn. Tôi xác nhận rằng nó hoạt động với các IP khác nhau khi tôi cần tải tệp 36gb về máy chủ không có trình duyệt. Và tôi trích xuất liên kết từ máy tính xách tay của tôi.
dmitry502

2

Đây là cách giải quyết mà tôi đã tải xuống các tệp từ Google Drive sang trình bao Google Cloud Linux của mình.

  1. Chia sẻ tệp lên PUBLIC và với quyền Chỉnh sửa bằng cách chia sẻ nâng cao.
  2. Bạn sẽ nhận được một liên kết chia sẻ sẽ có một ID. Xem liên kết: - drive.google.com/file/d/[ID[/view?usp=shaming
  3. Sao chép ID đó và Dán nó vào liên kết sau: -

googledrive.com/host/[ID]

  1. Liên kết trên sẽ là liên kết tải xuống của chúng tôi.
  2. Sử dụng wget để tải xuống tệp: -

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

  1. Lệnh này sẽ tải xuống tệp có tên là [ID] không có phần mở rộng và với cùng kích thước tệp trên cùng một vị trí nơi bạn đã chạy lệnh wget.
  2. Trên thực tế, tôi đã tải xuống một thư mục nén trong thực tế của tôi. vì vậy tôi đã đổi tên tập tin vụng về đó bằng cách sử dụng: -

mv [ID] 1.zip

  1. sau đó sử dụng

giải nén 1.zip

chúng tôi sẽ nhận được các tập tin.



Google đã lấy đi lưu trữ từ ổ đĩa, vì vậy điều này không còn hoạt động.
kgingeri

2

Tôi tìm thấy một giải pháp hiệu quả cho việc này ... Đơn giản chỉ cần sử dụng như sau

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

khi thực hiện việc này, tôi nhận được CẢNH BÁO: không thể xác minh chứng chỉ của docs.google.com, được cấp bởi `/ C = US / O = Google Trust Services / CN = Google Internet Agency G3 ': Không thể xác minh cục bộ quyền hạn của nhà phát hành. Yêu cầu HTTP đã được gửi, đang chờ phản hồi ... 404 Không tìm thấy 2019-02-08 02:56:30 LRI 404: Không tìm thấy. cách giải quyết nào?
bluejayke

Ôi! Câu trả lời tuyệt vời và rất logic. Cảm ơn đã viết nó lên. Đã tải xuống tệp 1,3 GB bằng lệnh này ... Chế độ hoàn toàn tự động từ thiết bị đầu cuối linux chỉ bằng lệnh này. Cũng đã thử trên GCP. Làm việc tuyệt vời ở đó là tốt. Năm 2020 ... Tôi tin rằng đây là cách đúng đắn ... ngay cả khi họ thay đổi một chút mệnh lệnh, điều này sẽ đứng trước thử thách của thời gian.
Atta Jutt

2

Có một cách dễ dàng hơn.

Cài đặt cliget / CURLWGET từ phần mở rộng firefox / chrome.

Tải tập tin từ trình duyệt. Điều này tạo ra một liên kết curl / wget nhớ các cookie và tiêu đề được sử dụng trong khi tải xuống tệp. Sử dụng lệnh này từ bất kỳ shell nào để tải xuống


Đây là cách dễ dàng và đơn giản nhất.
c0degeas

2

cách dễ dàng để tải xuống tệp từ ổ đĩa google, bạn cũng có thể tải xuống tệp trên colab

pip install gdown

import gdown

Sau đó

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

hoặc là

fileid='0B9P1L7Wd2vU3VUVlFnbTgtS2c'

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

Tài liệu https://pypi.org/project/gdown/


mát mẻ. Nhưng nó khác với câu trả lời của phi đã được đăng hơn một năm trước bạn chưa?
umläute

1

Tháng 5 năm 2018 LÀM VIỆC

Xin chào dựa trên nhận xét này ... tôi tạo bash để xuất danh sách URL từ tệp URLS.txt sang URLS_DECODED.txt, được sử dụng trong một số trình tăng tốc như flashget (tôi sử dụng cygwin để kết hợp windows & linux)

Lệnh Spider được giới thiệu để tránh tải xuống và nhận liên kết cuối cùng (trực tiếp)

Lệnh GREP Head và CUT, xử lý và nhận liên kết cuối cùng, Dựa trên ngôn ngữ Tây Ban Nha, có thể bạn có thể chuyển sang NGÔN NGỮ TIẾNG ANH

echo -e "$URL_TO_DOWNLOAD\r" có lẽ \ r chỉ là cywin và phải được thay thế bằng \ n (ngắt dòng)

**********user*********** là thư mục người dùng

*******Localización*********** là trong ngôn ngữ Tây Ban Nha, xóa dấu hoa thị và để từ trong tiếng Anh Vị trí và điều chỉnh các số CHÍNH và số CUT để chiếm đoạt phương pháp tiếp cận.

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

Bạn chỉ cần sử dụng wget với:

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

PD. Các tập tin phải được công khai.


0

skicka là một công cụ cli để tải lên, tải xuống các tệp truy cập từ ổ đĩa google.

thí dụ -

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.