Как скачивать файлы из Google Drive без головной боли и ограничений

15 фев 2026
5,428
431
22
2 недели

Знакомая ситуация: вам нужно скачать большой датасет или архив с Google Drive прямо на сервер через терминал. Вы копируете ссылку, подставляете её в wget или curl, запускаете... и получаете либо пустой HTML-файл с предупреждением о проверке на вирусы, либо ошибку доступа. Google Drive не очень любит, когда к нему обращаются автоматизированные скрипты, особенно если файл весит больше пары сотен мегабайт.

Конечно, можно возиться с официальным API, настраивать OAuth2, создавать сервисные аккаунты и прописывать токены. Но что, если вам нужно просто скачать публичный файл здесь и сейчас? Именно для таких случаев существует gdown — инструмент, который делает скачивание с «Диска» таким же простым, каким оно должно быть изначально.

Что такое gdown и почему он лучше стандартных утилит

gdown — это легковесная утилита на Python, специально заточенная под работу с публичными ссылками Google Drive. В то время как обычные загрузчики пасуют перед защитными механизмами Google, gdown умеет их элегантно обходить.

Главная проблема curl и wget при работе с Google Drive заключается в промежуточной странице безопасности. Когда файл большой, Google не может проверить его на вирусы и просит пользователя подтвердить скачивание вручную. gdown имитирует поведение браузера, автоматически «нажимает» на нужные кнопки и пробрасывает сессионные куки, чтобы загрузка началась без вашего участия.

Ключевые возможности, которые упрощают жизнь

Инструмент не ограничивается простым скачиванием одного файла. Вот несколько фишек, которые делают его незаменимым в арсенале DevOps-инженера или Data Scientist'а:

Реклама
  1. Обход предупреждений безопасности. Как я уже упоминал, это киллер-фича. Большие файлы (от 100 МБ и выше) скачиваются одной командой без лишних вопросов.
  2. Скачивание папок целиком. По умолчанию Google Drive не дает скачать папку без архивации в ZIP через веб-интерфейс. gdown умеет рекурсивно обходить содержимое папки (до 50 файлов) и скачивать их по отдельности.
  3. Конвертация документов на лету. Если у вас есть ссылка на Google Doc, таблицу или презентацию, вы можете указать желаемый формат (PDF, CSV, XML), и утилита сама запросит нужную версию.
  4. «Умное» извлечение ID. Вам не обязательно вырезать ID файла из длинной ссылки вручную. Флаг --fuzzy позволяет скормить утилите практически любую ссылку на документ, и она сама поймет, что именно нужно забрать.

Как это работает на практике

Установка максимально стандартная для Python-мира:

pip install gdown

Примеры использования в терминале

Допустим, у нас есть ID файла. Скачать его можно максимально коротко:

gdown 1l_5RK28JRL19wpT22B-DY9We3TVXnnQQ

Если же у вас есть полная ссылка из браузера, просто добавьте флаг --fuzzy, чтобы не мучиться с регулярками:

gdown --fuzzy 'https://drive.google.com/file/d/0B9P1L--7Wd2vNm9zMTJWOGxobkU/view?usp=sharing'

А если нужно забрать целую папку в конкретную директорию:

gdown https://drive.google.com/drive/folders/15uNXeRBIhVvZJIhL4yTw4IsStMhUaaxl -O /tmp/my_folder --folder

Использование в Python-скриптах

Для тех, кто пишет пайплайны обработки данных, gdown предоставляет удобный интерфейс внутри кода. Это гораздо чище, чем вызывать subprocess.run(['wget', ...]).

import gdown

# Скачиваем файл и сразу проверяем его хеш-сумму
url = "https://drive.google.com/uc?id=1l_5RK28JRL19wpT22B-DY9We3TVXnnQQ"
output = "model_weights.npz"
md5 = "md5:fa837a88f0c40c513d975104edf3da17"

gdown.cached_download(url, output, hash=md5, postprocess=gdown.extractall)

Обратите внимание на cached_download: функция не будет качать файл заново, если он уже есть на диске и его MD5 совпадает. А параметр postprocess позволяет, например, автоматически распаковать архив сразу после загрузки.

Когда всё идет не по плану: решаем проблемы с доступом

Иногда даже gdown может выдать ошибку Permission Denied. Обычно это происходит по двум причинам:

  1. Файл не публичный. Убедитесь, что в настройках доступа на Google Drive выбрано «Все, у кого есть ссылка».
  2. Лимиты Google. Если файл слишком популярен, Google временно ограничивает к нему доступ.

Интересный лайфхак от разработчика: если файл открывается в браузере, но не качается через CLI, можно экспортировать куки из браузера (например, через расширение "Get cookies.txt LOCALLY") и положить их в ~/.cache/gdown/cookies.txt. После этого gdown подхватит вашу сессию и скачивание пойдет как по маслу.

Кому это пригодится?

В моей практике gdown чаще всего выручает в двух сценариях:

  • ML-инженеры: когда нужно быстро подтянуть веса предобученной модели в Docker-контейнер или на удаленный сервер.
  • Автоматизация бэкапов и отчетов: если ваши коллеги-менеджеры ведут таблицы в Google Sheets, а вам нужно забирать их в формате CSV для обработки скриптами.

gdown — это классический пример утилиты, которая делает одну вещь, но делает её превосходно. Она избавляет от необходимости возиться с тяжеловесными SDK и API, когда задача стоит максимально просто: «дай мне этот файл».

Если вы часто работаете с облачными хранилищами через консоль, этот инструмент определенно заслуживает места в вашем requirements.txt или списке установленных пакетов. Попробовать проект можно на GitHub — у него уже более 5 тысяч звезд, что говорит о признании сообществом.

А как вы обычно решаете проблему скачивания файлов из облака на сервер? Пользуетесь официальными CLI или ищете обходные пути? Поделитесь своим опытом в комментариях!

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.