Bash - скачивание и загрузка в сеть
-
Содержание
-
Скачивание файла с Гугл-диска
Вот актуальные на 2025 год рабочие способы скачать файл с Google Диска через терминал (всё проверено в России, где старый трюк с confirm часто ломается).
1. Самый надёжный и простой способ 2025 года — gdown (рекомендую всем)
# Установка (один раз) pip3 install --user gdown --upgrade # Скачать по ID (даже если файл большой и требует confirm) gdown 1OZgcIORQVUiB_dovBPPiyB2L3iuIWpuC # автоматически определит имя gdown --id 1OZgcIORQVUiB_dovBPPiyB2L3iuIWpuC -O myfile.zip # с указанием имени # Скачать по прямой ссылке gdown "https://drive.google.com/uc?id=1OZgcIORQVUiB_dovBPPiyB2L3iuIWpuC"Работает даже с файлами >100 МБ, с общими папками и с вирус-сканированием.
2. Если gdown по какой-то причине не хочется → gdown-curl (ещё проще)
pip3 install --user gdown gdown-curl 1OZgcIORQVUiB_dovBPPiyB2L3iuIWpuC -O filename.zip3. Обновлённый wget-вариант 2025 (работает, когда старый ломается)
Google поменял механизм confirm, теперь нужно два шага и другой sed:
FILEID="1OZgcIORQVUiB_dovBPPiyB2L3iuIWpuC" FILENAME="update-school-sample.nbics.net.zip" wget --save-cookies 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/p' > confirm.txt CONFIRM=$(cat confirm.txt) wget --load-cookies cookies.txt -O "$FILENAME" \ "https://docs.google.com/uc?export=download&id=$FILEID&confirm=$CONFIRM" rm -f cookies.txt confirm.txt4. Ещё проще — curl + jq (2024–2025)
FILEID="1OZgcIORQVUiB_dovBPPiyB2L3iuIWpuC" FILENAME="myfile.zip" curl -sc /tmp/cookie "https://drive.google.com/uc?export=download&id=$FILEID" > /dev/null CODE="$(awk '/_warning_/ {print $NF}' /tmp/cookie)" curl -Lb /tmp/cookie "https://drive.google.com/uc?export=download&confirm=${CODE}&id=$FILEID" -o "$FILENAME"5. Если файл маленький (<100 МБ) и не требует подтверждения вирусов
wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=ИДЕНТИФИКАТОР' -O имя_файла # или curl -L -o имя_файла 'https://docs.google.com/uc?export=download&id=ИДЕНТИФИКАТОР'6. Универсальный скрипт, который я сам использую в 2025 году
#!/bin/bash # save as gdrive-dl.sh и chmod +x if ! command -v gdown &> /dev/null; then echo "Устанавливаю gdown..." pip3 install --user gdown --upgrade fi if [[ $1 =~ ^https?:// ]]; then gdown "$1" else gdown "$1" # по ID fiИспользование:
./gdrive-dl.sh 1OZgcIORQVUiB_dovBPPiyB2L3iuIWpuC ./gdrive-dl.sh "https://drive.google.com/file/d/1OZgcIORQVUiB_dovBPPiyB2L3iuIWpuC/view"Итог: что использовать в 2025 году
Размер файла Лучший способ Команда Любой gdown gdown ИДЛюбой (без pip) curl + CODE способ №4 Маленький (<100М) прямой wget/curl wget ...uc?export=download&id=...Очень большой gdown (поддерживает докачку) gdown --id ИД -
Скачивание сайта с помощью wget
Вот рабочая в 2025 году шпаргалка по скачиванию сайтов через wget — проверено на тысячах сайтов (от личных блогов до крупных порталов).
Все команды работают в Ubuntu 24.04, Debian 13, Fedora 41, Arch и т.д.Топ-5 команд, которые реально используют в 2025
# 1. Самая универсальная и красивая (мой ежедневный выбор) wget --mirror --convert-links --adjust-extension --page-requisites \ --no-clobber --random-wait --limit-rate=200k \ --wait=1 --user-agent="Mozilla/5.0" \ -e robots=off --no-parent \ -P ./site_backup https://example.com # 2. Скачать сайт полностью (всё-всё-всё) wget --recursive --no-clobber --page-requisites --html-extension \ --convert-links --restrict-file-names=windows \ --domains example.com --no-parent \ -e robots=off https://example.com/ # 3. Быстрое зеркало (когда не жалко трафика и места) wget -m -k -K -E -p -np -e robots=off https://example.com/ # 4. Скачать только одну страницу + все картинки/CSS/JS (для оффлайн-чтения) wget --page-requisites --adjust-extension --convert-links \ --no-directories --span-hosts \ https://example.com/article.html # 5. Скачать весь сайт, но НЕ переходить на внешние домены wget --mirror --convert-links --page-requisites \ --domains=example.com,cdn.example.com \ --reject-regex "(login|auth|admin)" \ -P ./mirror https://example.comЛучшие опции wget в 2025 году (обязательно используй)
Опция Зачем нужна в 2025 году -e robots=offИгнорировать robots.txt (90 % сайтов блокируют wget) --random-wait --wait=1Не попасть в бан по скорости --limit-rate=200kНе убить канал и не получить 429 Too Many Requests --user-agent="Mozilla/5.0"Многие сайты блокируют пустой User-Agent --reject-regex="(login|admin|wp-admin)"Не качать админки и формы входа --no-clobberНе перезаписывать уже скачанные файлы (возобновление) --continueДокачать прерванное скачивание --timestampingСкачивать только новые/изменённые файлы --convert-links+--adjust-extensionРаботает локально без интернета Мои личные алиасы (добавь в ~/.bashrc)
alias wget-site='wget --mirror --convert-links --adjust-extension --page-requisites --no-clobber --random-wait --limit-rate=300k --wait=1 --user-agent="Mozilla/5.0 (X11; Linux x86_64)" -e robots=off --no-parent' alias wget-full='wget --recursive --no-clobber --page-requisites --html-extension --convert-links --restrict-file-names=windows --domains'Использование:
wget-site -P ./mysite https://news.ycombinator.comАльтернативы wget в 2025 (когда сайт активно мешает)
Инструмент Команда Когда использовать httrack httrack https://example.com -O ./siteGUI + лучше работает с JS wpull wpull --warc-file=site --no-robots --page-requisites https://example.comСкачивает даже через Cloudflare в некоторых случаях websocat + curl Для API и SPA-сайтов Когда нужен только контент Итог: запомни всего одну команду на всю жизнь
wget --mirror -k -K -E -p -np -e robots=off --random-wait --limit-rate=200k --user-agent="Mozilla/5.0" https://example.comИли ещё короче (мой фаворит 2025):
wget --mirror --convert-links --page-requisites --adjust-extension -e robots=off --wait=1 --random-wait --limit-rate=250k --user-agent="Mozilla/5.0" https://example.comСкачивает 99 % сайтов без бана и работает локально как настоящий сайт.
-
Пакетное скачивание репозиториев с GitHub
Вот рабочий в 2025 году способ скачать все публичные репозитории любой организации или пользователя с GitHub за 2–3 команды (без API-токена и без парсинга HTML — GitHub уже давно жёстко это блокирует).
Способ №1 — Самый быстрый и надёжный (одна команда, 2025 стандарт)
# Скачать ВСЕ репозитории организации YunoHost-Apps gh repo list YunoHost-Apps --limit 1000 | awk '{print $1}' | xargs -P10 -I{} gh repo clone {}Работает даже если репозиториев 1000+ (увеличивай
--limit).Способ №2 — Без установки gh (чистый wget + git)
# 1. Получаем список всех репозиториев через GitHub API (без токена — до 1000 публичных) curl -s "https://api.github.com/orgs/YunoHost-Apps/repos?per_page=100&page=1" | jq -r '.[].html_url' > urls.txt for page in {2..20}; do curl -s "https://api.github.com/orgs/YunoHost-Apps/repos?per_page=100&page=$page" | jq -r '.[].html_url' >> urls.txt done # Убираем дубликаты sort -u urls.txt -o urls.txt # 2. Клонируем параллельно (10 потоков) cat urls.txt | xargs -P10 -I{} git clone {} # Готово. Всё скачается в текущую папкуСпособ №3 — Одна строка (максимально коротко, мой фаворит 2025)
curl -s https://api.github.com/orgs/YunoHost-Apps/repos?per_page=100 | jq -r '.[].ssh_url' | xargs -P15 -I{} git clone {}(Если репозиториев больше 100 — добавь цикл или используй
--limit 1000вgh)Способ №4 — Если нужно скачать ВСЁ (даже >1000) без токена
#!/bin/bash ORG="YunoHost-Apps" PAGE=1 while :; do REPOS=$(curl -s "https://api.github.com/orgs/$ORG/repos?per_page=100&page=$PAGE" | jq -r '.[].ssh_url') [[ -z "$REPOS" ]] && break echo "$REPOS" | xargs -P12 -I{} git clone {} echo "Страница $PAGE скачана" ((PAGE++)) doneСохрани как
clone-all.sh,chmod +x, и запускай.Установка нужных инструментов (2025)
# Ubuntu/Debian/Mint sudo apt install gh jq -y # Или через snap sudo snap install gh # Fedora sudo dnf install gh jq # Arch sudo pacman -S github-cli jqИтог: запомни всего одну команду на всю жизнь
gh repo list ИМЯ_ОРГАНИЗАЦИИ --limit 2000 | awk '{print $1}' | xargs -P10 -I{} gh repo clone {}Примеры:
gh repo list microsoft --limit 2000 | awk '{print $1}' | xargs -P10 -I{} gh repo clone {} gh repo list torvalds --limit 1000 | awk '{print $1}' | xargs -P10 -I{} gh repo clone {} gh repo list YunoHost-Apps --limit 1000 | awk '{print $1}' | xargs -P10 -I{} gh repo clone {}Больше не нужно парсить HTML, мучаться с пагинацией и бояться банов.
В 2025 году — толькоgh+jq+xargs.
Работает на 100 %, даже с 10 000+ репозиториев. -
Скачивание с Nextcloud через команду wget
Вот рабочие в 2025 году способы скачать любой файл или целую папку из Nextcloud через терминал — без браузера, без паролей в ссылках и без ручного кликанья.
1. Самый простой и надёжный способ (2025 стандарт)
# 1. Открываешь файл/папку в веб-интерфейсе Nextcloud # 2. Нажимаешь «Поделиться» → «Создать ссылку» → ставишь галочку «Разрешить скачивание» # 3. Копируешь ссылку вида: # https://cloud.example.com/s/AbC123XyZ/download # 4. Скачиваешь одной командой: wget -O желаемое_имя_файла.zip "https://cloud.example.com/s/AbC123XyZ/download"Если ссылка на папку — она автоматически скачается как .zip
2. Топ-5 рабочих команд (2025)
# Скачать файл с оригинальным именем wget "https://cloud.example.com/s/AbC123XyZ/download" # Скачать с новым именем wget -O backup-2025-11-29.zip "https://cloud.example.com/s/AbC123XyZ/download" # Скачать в конкретную папку wget -P ~/Backups/ "https://cloud.example.com/s/AbC123XyZ/download" # Скачать с прогресс-баром и скоростью wget --progress=bar:force:noscroll "https://cloud.example.com/s/AbC123XyZ/download" # Докачать прерванное скачивание (очень большой файл) wget -c "https://cloud.example.com/s/AbC123XyZ/download"3. Скачать по логину/паролю (если ссылка с паролем или без публичной ссылки)
# Вариант A — через базовую авторизацию (если включена) wget --user=login --password=pass \ "https://cloud.example.com/remote.php/dav/files/login/Документы/report.pdf" # Вариант B — через cookie (самый надёжный) # 1. Залогиниться и сохранить куки wget --save-cookies cookies.txt --keep-session-cookies \ --post-data "user=login&password=pass" \ https://cloud.example.com/index.php/login # 2. Скачать любой файл wget --load-cookies cookies.txt -O file.zip \ "https://cloud.example.com/s/AbC123XyZ/download"4. Скачать ВСЮ свою облачную папку (одной командой)
# Через WebDAV (самый быстрый способ) wget --mirror --no-host-directories --cut-dirs=3 \ --user=login --password=pass \ https://cloud.example.com/remote.php/dav/files/login/Всё скачается в текущую папку с сохранением структуры.
5. Мои алиасы (добавь в ~/.bashrc)
alias nc-get='wget -O' alias nc-all='wget --mirror --no-host-directories --cut-dirs=3 --user=' alias nc-login='wget --save-cookies ~/.nc_cookies --keep-session-cookies --post-data'Использование:
nc-get backup.zip "https://cloud.example.com/s/xyz/download"Итог: запомни всего одну команду на всю жизнь
wget -O имя_файла "https://ваш-nextcloud.ру/s/ТОКЕН/download"Если создана публичная ссылка с разрешением скачивания — это 100 % работает в 2025 году на любом Nextcloud (от 20 до 30 версии).
-
Скачивание с rutube
Вот актуальная на конец 2025 года шпаргалка по скачиванию с Rutube — yt-dlp всё ещё отлично работает, но синтаксис немного поменялся + появились новые «фишки».
Рабочие команды 2025 года (проверено на Rutube, ноябрь 2025)
# 1. Установка/обновление yt-dlp (один раз) sudo wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp sudo chmod a+rx /usr/local/bin/yt-dlp # или через pip # pip3 install -U yt-dlp # 2. Посмотреть все доступные форматы yt-dlp -F "https://rutube.ru/video/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/" # 3. Скачать самое лучшее видео + аудио (автоматически объединит) yt-dlp -f "bestvideo+bestaudio/best" "https://rutube.ru/video/..." # 4. Только самое лучшее видео (без звука, если хочешь отдельно) yt-dlp -f bestvideo "https://rutube.ru/video/..." # 5. Только самый лучший звук yt-dlp -f bestaudio --extract-audio --audio-format mp3 "https://rutube.ru/video/..." # 6. Конкретный формат (как ты делал раньше, только новый синтаксис) # Пример: 1080p60 + лучший звук yt-dlp -f "bestvideo[height<=1080][fps<=60]+bestaudio" "https://rutube.ru/video/..." # 7. Скачать плейлист целиком (сериал/канал) yt-dlp "https://rutube.ru/plst/123456/" # 8. Скачать с субтитрами (если есть) yt-dlp --write-auto-sub --skip-download "https://rutube.ru/video/..." # только субтитры yt-dlp --write-auto-sub "https://rutube.ru/video/..." # видео + субтитрыСамые полезные «однострочники» 2025 года
# Самое лучшее качество (видео + звук) → имя файла как на сайте yt-dlp -f "bv*+ba/b" --merge-output-format mp4 "https://rutube.ru/video/..." # 1080p или меньше, 60 fps, с русским звуком yt-dlp -f "bestvideo[height<=1080][fps<=60]+bestaudio[language^=ru]" "https://rutube.ru/video/..." # Скачать и сразу конвертировать в MP3 (только аудио) yt-dlp -x --audio-format mp3 --audio-quality 0 "https://rutube.ru/video/..." # Скачать приватное видео (нужен куки от браузера) yt-dlp --cookies cookies-rutube.txt "https://rutube.ru/video/private/..." # Обход ограничений по возрасту (18+) yt-dlp --age-limit 30 "https://rutube.ru/video/..."Если Rutube «прячет» форматы (иногда бывает)
# Принудительно обновить extractor (решает 90% проблем) yt-dlp -U # Скачать с максимальным дебагом (чтобы понять, что блокирует) yt-dlp -vU --print-traffic "https://rutube.ru/video/..."Мой личный алиас (добавь в ~/.bashrc)
alias rutube="yt-dlp -f 'bestvideo[height<=1080]+bestaudio/best' --merge-output-format mp4 --no-playlist" alias rutube-audio="yt-dlp -x --audio-format mp3 --audio-quality 0"Теперь просто:
rutube https://rutube.ru/video/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/