You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Высокопроизводительный параллельный загрузчик для получения файлов с удаленных серверов через SSH/SFTP. Поддерживает отслеживание прогресса, гибкую аутентификацию и умное управление потоками.
Ключевые особенности
Параллельная загрузка — настраиваемое количество одновременных потоков (по умолчанию: 5).
Гибкая аутентификация — SSH-ключи (с паролем или без), SSH-агент или пароль.
Индикаторы прогресса — визуализация процесса загрузки с помощью библиотеки tqdm.
Умный поиск — использование серверной команды find для быстрого поиска по шаблону.
Кроссплатформенность — полная поддержка Linux, macOS и Windows.
Подробная отладка — детальное логирование (verbose mode) для диагностики проблем.
Безопасность по тайм-ауту — защита от «зависших» соединений.
Требования:
Python: версии 3.7 или выше
Удаленный сервер: доступ по SSH/SFTP и наличие установленной команды find.
Менеджер пакетов: рекомендуется uv для автоматического управления окружением.
Быстрый старт
Склонируйте репозиторий и синхронизируйте окружение одной командой:
# Install dependencies
git clone https://github.com/deliciousNesquik/rget.git
cd rget
uv sync
Используйте uv run для запуска утилиты. Благодаря настроенным скриптам в pyproject.toml, вы можете вызывать команду напрямую:
# Basic usage: download all 2026_01_15__* files from /logs/2026/01_15/
uv run rget.py "2026_01_15__*" ./downloads/ \
--host myserver.com \
--username admin \
--remote-dir /logs/2026/01_15/
Методы аутентификации
Метод
Флаг CLI
Безопасность
Примечания
SSH-ключ
--ssh-key ~/.ssh/id_ed25519
✅ Высокая
Рекомендуется. Можно использовать с --passphrase.
SSH-агент
(авто)
✅ Высокая
Используется автоматически, если ключи добавлены в агент.
Пароль
--password yourpass
⚠️ Низкая
Пароль может быть виден в истории команд и списке процессов.
Справочник по командам
Основные аргументы
Аргумент
Описание
Пример
pattern
Шаблон имени файла в формате glob
"backup_*.tar.gz"
local_dir
Локальный путь, куда будут сохранены файлы.
./downloads/
Прочие аргументы (--help group: other arguments)
Флаг
Описание
--dry-run
Позволяет перед отобразить все файлы которые будут скачаны
Для небольших файлов (<10 МБ) или серверов с жесткими дисками: оптимальное значение -c 3-5
Для больших файлов (>100 МБ) на серверах с SSD: попробуйте -c 10-20
Если -c 10 работает медленнее, чем -c 5: ваш сервер испытывает перегрузку ЦП/диска (уменьшите количество параллельных запросов)
Перегрузка сети: если скорость не улучшается при увеличении значения -c, ваша сеть работает на пределе своих возможностей
Помощь (--help group: options)
Флаг
Описание
-v, --verbose
Включить отладочное логирование
--version
Показать версию
Примеры использования
# 1. Download logs with SSH key + passphrase# Загрузка архивов с использованием ключа
uv run rget.py "*.tar.gz" ./backups/ -H storage.net -u worker -k ~/.ssh/id_rsa
# Поиск во всех подпапках (maxdepth 0) с высокой скоростью (20 потоков)
uv run rget.py "report_*.pdf" ./reports/ -H files.corp -u user -d /data -m 0 -c 20
# Режим отладки для проверки ошибок подключения
uv run rget.py "*" ./test/ -H 192.168.1.10 -u pi -v
Настройка через код
Вы можете изменить стандартные настройки в классе Config внутри rget.py:
classConfig:
DEFAULT_REMOTE_HOST="myserver.com"DEFAULT_REMOTE_USER="deploy"DEFAULT_REMOTE_DIR="/data/backups"DEFAULT_MAX_CONCURRENT=10# ... и другие параметры
Ограничения и примечания
Требуется команда find на удаленном сервере (стандартная функция в Linux/macOS).
Пустые файлы (0 байт) намеренно пропускаются в процессе обнаружения.
Пути в Windows: используйте косую черту (/) или прямые строки (r"C:\path")
В случае сбоя частично поврежденные файлы автоматически удаляются.
Основано на asyncssh — чистый Python, не зависит от системного SSH-клиента.
Лицензия
Лицензия MIT — подробности см. в файле LICENSE.
About
Высокопроизводительный параллельный загрузчик для получения файлов с удаленных серверов через SSH/SFTP. Поддерживает отслеживание прогресса, гибкую аутентификацию и умное управление потоками.