Sử dụng wget để tải file từ Google Drive

wget là lệnh rất phổ biến trên các hệ điều hành Linux nói chung và Raspberry Pi nói riêng. Nó được sử dụng để download các file trên mạng internet về máy của các bạn. Tuy nhiên thông thường wget được sử dụng để tải các file có đường link cụ thể rõ ràng, còn để tải file từ Google Drive thì sẽ phức tạp hơn vì Drive sẽ sinh ra đường dẫn randomg tùy từng loại file hoặc dung lượng file.

Update 13/08/2021: Script dưới đây không tải được file dung lượng lớn khoảng 8GB trở lên do chính sách bảo mật của Google. Chúng tôi sẽ cập nhật script khác sau.

Nếu bạn sử dụng các trình hỗ trợ download hoặc sử dụng Raspberry Pi có giao diện đồ họa thì việc tải file từ Google Drive không gặp trở ngại gì. Nhưng nếu bạn chỉ có giao diện dòng lệnh, ví dụ với bản Raspberry Pi OS Lite thì không thể tải file theo cách như hình dưới đây được

Với Raspbian OS có giao diện đồ họa, việc tải file từ Google Drive rất đơn giản

Bài viết này sẽ hướng dẫn các bạn cách sử dụng lệnh wget để tải file từ Google Drive hoàn toàn bằng dòng lệnh.

Trước hết, bạn cần biết rằng, Google Drive phân biệt 2 loại file là file dung lượng nhỏ và file dung lượng lớn. Các file có dung lượng dưới 100MB được gọi là nhỏ, còn trên 100MB thì là dung lượng lớn. Cách tải bằng lệnh wget khác nhau đối với 2 trường hợp này.

Để tải file từ Google Drive bằng lệnh wget, bạn cần phải đảm bảo file cần tải đang public trên internet. Trường hợp nếu đấy là file của bạn thì bạn cần bấm chuột phải vào file cần tải, chọn Share như dưới đây

Chuột phải vào file cần tải và chọn Share để đảm bảo file public trên internet

Tiếp theo, bấm chọn Change to anyone with the link để cho phép bất kỳ ai có link của file này đều sẽ có quyền xem hoặc sửa hoặc comment …

Lưu ý, ở một số trong trường hợp sử dụng dịch vụ Google cho tên miền riêng thì bạn tiến hành chọn Chia sẻ với ABC XYZ (trong đó ABC XYZ là tên tổ chức mà chúng tôi đăng ký với Google) như dưới đây.

Sau đó, bạn cần copy link của file cần tải bằng cách chuột phải vào file và chọn Get Link để ra như hình dưới đây

Bạn sẽ có một đường link với cấu trúc như sau

https://drive.google.com/file/d/1jB7qjeIsCTkviKbnUxxxxx12E8aMHb_S0a/view?usp=sharing

Trong đó, bạn để ý đoạn 1jB7qjeIsCTkviKbnUflF12E8aMHb_S0a chính là ID của file được lưu trên Google Drive. Bạn cần copy lấy đoạn ID này.

Cuối cùng, giờ bạn thực hiện tải file thông qua lệnh wget thôi. Như tôi đã nói ở trên, tùy theo file dung lượng lớn hay nhỏ mà bạn có cấu trúc lệnh khác nhau:

Với file dung lượng nhỏ:

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

Với file dung lượng lớn:

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

Trong đó FILEID là đoạn ID của file ở trên còn FILENAME là tên file bạn muốn lưu trên máy.

Lưu ý: Lệnh tải trên file dung lượng lớn có thể áp dụng được với cả file có dung lượng nhỏ. Nhưng lệnh với file dung lượng nhỏ không áp dụng được với file dung lượng lớn

Bạn sẽ có kết quả như hình dưới đây (bấm vào hình để xem ảnh gốc rõ nét hơn):

Chúc các bạn thành công

Raspberry Pi Việt Nam