rTorrent — консольный BitTorrent клиент для Linux/Unix систем, написанный на C++ на основе библиотеки libTorrent. Использует библиотеку ncurses для вывода. Отличается высокой скоростью и нетребовательностью к системным ресурсам, поддерживает Magnet-ссылки.
Распространяется на условиях лицензии GNU GPL.

Установка

Для установки программы следует выполнить:

sudo apt-get install rtorrent

Настройка

Настройка клиента

Тонкая настройка программы осуществляется при помощи конфигурационного файла .rtorrent.rc, размещаемого в домашнем каталоге пользователя1).

Примеры секций конфигурационного файла

Основные настройки

bind = a.b.c.d
# bind прослушивает сокет и исходящие подключения к этому сетевому интерфейсу.
# (Это IP, на котором LibTorrent / rtorrent работает. Внешний IP Если вы находитесь за NAT.)
ip = a.b.c.d, ip = hostname
# Устанавливает адрес для ответов к трекеру (требуется пояснение)
port_range = a-b
# Диапазон портов по которым будет идти подключение
port_random = yes | no
# Открывает случайный порт из заданного диапазона
check_hash = yes | no
# Проверять hash файла по окончании закачки
directory = directory
# Директория куда будут скачиваться Ваши файлы
session = directory
# Эта директория, в которую будут размещаться открытые закачки. Можете оставить это поле пустым,
# чтобы все файлы размещались в directory.
http_proxy = url
# HTTP прокси. Если нет нужды - оставьте поле пустым.
encoding_list = кодировка
# Добавить предпочитаемую кодировку для имен файлов. Если при распознавании ни одна кодировка 
# не подойдет, будет использована кодировка по-умолчанию.
encryption = option,...
# Настройки шифрования. По умолчанию, шифрование отключено, что эквивалентно параметру none. 
# Также возможны варианты: 
* allow_incoming (принимать зашифрованные входящие соединения), 
* try_outgoing (шифрование исходящих соединений), 
* require (запретить незашифрованные обращения), 
* require_RC4 (также запретить передачу текста после первичного зашифрованного установления связи), 
* enable_retry (если первоначальное исходящее установление связи окажется неудачным, повторить с 
# шифрованием, если оно было отключено, и без, если шифрование использовалось), 
* prefer_plaintext (использовать текст если пир предлагает выбор между открытым текстом и 
# шифрованием RC4, иначе будет использоваться RC4). 
peer_exchange = yes | no
# Включает/выключает расширения торрентов не помеченных как приватные. По умолчанию выключено.
schedule = id,start,interval,command
# Вызывает команду через некоторый заданный период времени, начиная с какого то момента.
# Интервал равный нулю равен выполнению команды единожды.
# При выполнении  команды Вы можете использовать временной формат вида:
# день:час:минута:секунда, для примера: выполнять задачу каждый день в
# 18:00 используйте 18:00:00,24:00:00
schedule_remove = id
# Удаляет id задачи из расписания
start_tied =
# Стартует торренты, с похожими именами, которые были заново добавлены.
stop_untied =, close_untied =, remove_untied =
# Останавливает, закрывает или удаляет торренты с именами похожими на удалённые.
# Очистка ассоциаций идет с ключом U
close_low_diskspace = space
# Закрывает все торренты, при достижении критического остатка на жестком диске,
# следует использовать вместе с schedule
load = file, load_verbose = file, load_start = file, load_start_verbose = file
# Загружать и стартовать торренты, если это возможно, или использовать регулярные выражения типа “*”
stop_on_ratio = min_ratio,
stop_on_ratio = min_ratio,min_upload,
stop_on_ratio = min_ratio,min_upload,max_ratio
# Останавливает торренты, когда они достигают минимального рейтинга отдачи min_ratio,
# отданной в процентах. min_upload указывает на минимальное количество информации в байтах.
# Рекомендуется использовать совместно с schedule.
on_insert = id,command, on_erase = id,command, on_open = id,command, on_close = id,command,
on_start = id,command, on_stop = id,command, on_hash_queued = id,command, on_hash_removed = id,command,
on_hash_done = id,command, on_finished = id,command
# Вызывает команду, когда статус закачки изменяется.

Настройка загрузки

upload_rate = KB, download_rate = KB
# Определяет скорость раздачи, скачивания.
min_peers = value, max_peers = value
# Указывает минимальное и максимальное количество пиров в загружаемой закачке (торренте)

Если к клиенту подключено меньше пиров, чем указано в min_peers, он попытается получить больше у имеющихся трекеров. Через 30 секунд, клиент повторит попытку, если было получено меньше 10 новых пиров или меньше 3 запросов было выполнено. Дальше он попытается обратиться к следующей группе трекеров в списке, а не к другим трекерам в этой же группе. Такое поведение позволит получить достаточно пиров, сведя к минимуму количество запросов к трекеру, хотя это займет несколько больше времени, чем у других, более агрессивных клиентов.

min_peers_seed = value, max_peers_seed = value
# Устанавливает значение минимального и максимального количества пиров в раздаваемом (сидируемом) торренте,
# по умолчанию -1, то есть неограничено
max_uploads = value
# Устанавливает количество раздач с торрента
max_uploads_div = value, max_downloads_div = value
# Устанавливает количество отдач для одного человека. Отключается, если поставить 0
max_uploads_global = value, max_downloads_global = value
# Количество слотов отдачи и загрузки.

Параметры работы с трекерами

enable_trackers = yes
# Установите значение 'no', чтобы отключить все запросы к трекеру.
# Бывает полезно в использовании с расписанием.
tracker_dump = filename
# Записывает все запросы к трекеру в файл
use_udp_trackers = yes
# Использовать UDP протокол, лучше отключить (параметр 'no'), если вы находитесь за firewall’ом.

Настройка работы с файлами

max_file_size = size
# Устанавливает максимальный размер файла, отключается параметром -1
split_file_size = size
# Разделяет файлы, больше чем size на несколько файлов, отключается параметром -1
split_suffix = string
# Устанавливает суффикс для таких файлов, по умолчанию: .part
on_finished = move_complete,"execute=mv,-u,$d.get_base_path=,/var/hdd/torrents/complete/ ;d.set_directory=/var/hdd/torrents/"
# Перемещает загруженный файл в другую папку после окончания закачки
# Удобно для мультимедийных центров, чтобы не пытаться воспроизвести недокачаный файл.

Дополнительные параметры

umask = 002
# Установить значение umask для этого процесса, оно будет присвоено всем файлам созданных программой.
# Выбранная маска будет соответствовать правам доступа -rw-rw-r-- для файлов
handshake_log = yes
# Включить журналированние соединений. Это создает большое количество сообщений, 
# но позволяет обнаружить ошибки соединений. 
execute_log = /home/my_name/rtorrent.log
# Сохраняет лог в файл. 
# В новых версиях команда запысывается так:
log.execute = /home/my_name/rtorrent.log

Пример готового .rtorrent.rc

#минимальное число пиров на торрент
min_peers = 1
 
#максимальное число пиров на торрент 
max_peers = 1000
 
#максимальная скорость загрузки
download_rate = 0
 
#максимальная скорость отдачи. 0 - не ограничена
upload_rate = 0
 
#каталог для сохранения закачек или откуда будут сидироваться торренты.
directory = /home/user/download/
 
#каталог куда будет сохраняться состояние торрентов.
#Здесь, в этом примере, они сохраняются в папку  session
session = /home/user/session/
 
#rtorrent каждые 5 секунд проверяет этот каталог на новые *.torrent файлы
#и если они есть то ставит их на закачку
schedule = watch_directory,5,5,load_start=/home/user/torrent_auto_load/*.torrent
 
#проверяет каталоги 2 и 3 на новые *.torrent файлы и сохраняет закачки в соответствующие папки
schedule = watch_directory_2,5,5,"load_start=/home/user/torrent_auto_load_2/*.torrent,
d.set_directory=/home/user/download2"
schedule = watch_directory_3,5,5,"load_start=/home/user/torrent_auto_load_3/*.torrent,
d.set_directory=/home/user/download3"
 
#номер порта (или нескольких портов) который открывает клиент для обмена данными
port_range = 40890-40890
 
#случайный выбор порта для обмена данными. В данном случае он отключён
port_random = no
 
#проверять хэш торрента после закачки
check_hash = yes
 
#сохранять сессию
session_save = yes
 
#принимать зашифрованные входящие соединения, устанавливать незашифрованные исходящие соединения, 
#если возвращает ошибку, повторять с шифрованием, предпочитать открытый текст после установления
#зашифрованного соединения
encryption = allow_incoming,enable_retry,prefer_plaintext 
 
#использовать udp
use_udp_trackers = yes
 
# Разрешает работу DHT для безтрекерных торрентов или для случаев, когда все ретрекеры лежат 
# (не работают).
# Может принимать значения "disable" (для полного отключения DHT), "off" (не стартует с DHT),
# "auto" (Включает DHT при возможности), или "on" (принудительно включает DHT).
# Значение DHT по умолчанию "off". Для правильной работы DHT каталог сеансов "session" должен
# быть определен.
#  
dht = auto
#
# UDP порт, используемый DHT. 
# 
dht_port = 6881
 
# Принудительно устанавливает кодировку UTF-8 для xmlrpc. 
# Рекомендуется для устранения проблем при использовании в 
# наименованиях торрентов символов кириллицы. Актуально для
# GUI, работающих через xmlrpc.
encoding_list = UTF-8

Автозапуск

Для запуска понадобится программа screen. Для ее установки следует выполнить:

sudo apt-get install screen

Затем необходимо создать файл /etc/systemd/system/rtorrent.service

sudo nano /etc/systemd/system/rtorrent.service

следующего содержания

[Unit]
Description=rTorrent
After=network.target
 
[Service]
Type=forking
KillMode=none
User=ПОЛЬЗОВАТЕЛЬ
ExecStart=/usr/bin/screen -dmfa -S rtorrent /usr/bin/rtorrent
ExecStop=/usr/bin/bash -c "test `pidof rtorrent` && killall -w -s 2 /usr/bin/rtorrent"
WorkingDirectory=%h
Restart=on-failure
 
[Install]
WantedBy=multi-user.target

Где в строке User=ПОЛЬЗОВАТЕЛЬ необходимо указать от имени какого пользователя должен запускаться rtorren Для добавления юнита в автозагрузку необходимо выполнить

sudo systemctl enable rtorrent

Для ручного управления используются команды

sudo systemctl start rtorrent
sudo systemctl stop rtorrent

Внешний вид

FIXME необходимо дополнить статью материалом отсюда но только к Ubuntu.

Использование

Знак ^ означает клавишу Ctrl.

Enter — добавить новый torrent файл. Для упрощения ввода имени файла, можно пользоваться клавишей Tab.
^T — обновить трекер
^Q — отключает программу, повторное нажатие закрывает программу не посылая трэкеру стоп сигнал
^N|<стрелка вниз> — выбор следующего торрента/адреса
^P|<стрелка вверх> — выбор предыдущего торрента/адреса
^F|<стрелка вправо> — просмотр состояния загрузки/аплоуда торрента
^B|<стрелка влево> — возвращает на предыдущий экран
A|S|D — увеличить скорость загрузки на 1/5/50 кб
Z|X|C — уменьшить скорость загрузки на 1/5/50 кб
a|s|d — увеличить скорость отдачи на 1/5/50 кб
z|x|c — уменьшить скорость отдачи на 1/5/50 кб
1—9 — переключение между различными группами (по состоянию загрузки)
^S — начать закачку
^D — остановить закачку (повторное нажатие удаляет торрент-файл. Данные остаются)
^K — закрыть торрент и его файлы
^E — пересоздать все файлы торрента
^R — перечитать хэш торрента
^O — изменить директорию на загрузку (торрент должен быть закрыт)
+|- — увеличить уменьшить приоритет загрузки торрента
<backspace> — добавить URL или путь к торренту
L — просмотреть лог (чтобы выйти нужно нажать пробел)
^X — вызвать команду или поменять настройку

Основное меню

Ссылки

1)
По умолчанию файл .rtorrent.rc отсутствует. Его нужно создать самостоятельно