Skip to content

deliciousNesquik/rget

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rget — Утилита для удаленного получения файлов

Python 3.7+ License

Высокопроизводительный параллельный загрузчик для получения файлов с удаленных серверов через 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 Позволяет перед отобразить все файлы которые будут скачаны

Поисковые аргументы (--help group: find arguments)

Флаг По умолчанию Описание
-m, --maxdepth 1 Глубина рекурсии поиска (0 = только в текущей директории).
-i , --ignore-case false Позволяет включить игнорирование регистрозависимости
--size-gt Позволяет указать размер чтобы фактический размер файла был больше указанного
--size-lt Позволяет указать размер чтобы фактический размер файла был меньше указанного

Параметры подключения (--help group: сonnection arguments)

Флаг По умолчанию Описание
-H, --host Адрес удаленного сервера.
-u, --username Имя пользователя SSH.
-P, --port 22 Порт SSH.
-d, --remote-dir Удаленная папка для поиска.

Аутентификация (--help group: authentication arguments)

Флаг Описание
-k, --ssh-key Путь до приватного ключа
--passphrase Фраза для приватного ssh ключа
-p, --password Пользовательский пароль (использовать с осторожностью)

Производительность (--help group: performance arguments)

Флаг По умолчанию Описание
-c, --concurrent 5 Количество одновременных загрузок.
-t, --timeout 30 Таймаут соединения в секундах.

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

  • Для небольших файлов (<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:

class Config:
    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. Поддерживает отслеживание прогресса, гибкую аутентификацию и умное управление потоками.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages