База знаний (цифровой суверенитет)
  • Bash - скачивание и загрузка в сеть

    Команды BASH
    1 6 21

    A
    1,168
    0

    Содержание

  • A
    1,168
    0

    Скачивание файла с Гугл-диска


    Вот актуальные на 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.zip
    

    3. Обновлённый 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.txt
    

    4. Ещё проще — 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 ИД
  • A
    1,168
    0

    Скачивание сайта с помощью 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 ./site GUI + лучше работает с 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 % сайтов без бана и работает локально как настоящий сайт.

  • A
    1,168
    0

    Пакетное скачивание репозиториев с 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+ репозиториев.

  • A
    1,168
    0

    Скачивание с 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 версии).

  • A
    1,168
    0

    Скачивание с 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/