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

Установка править

Исходные тексты программы распространяются под GPL на официальном сайте.

$ svn co svn://rakshasa.no/libtorrent/trunk/libtorrent
$ svn co svn://rakshasa.no/libtorrent/trunk/rtorrent

Также возможна установка с помощью менеджера пакетов дистрибутива Linux или BSD. Например:

При использовании apt-get (дистрибутивы Debian/Ubuntu) нужно выполнить команду:

# apt-get install rtorrent

В системе FreeBSD нужно выполнить команду:

# pkg_add -r rtorrent

А для установки из системы портов FreeBSD:

# cd /usr/ports/net-p2p/rtorrent && make install clean

Для установки из системы mac-портов Mac OS X:

# port install rtorrent

В дистрибутиве Gentoo:

# emerge rtorrent

В дистрибутиве SUSE:

http://software.opensuse.org/search?baseproject=ALL&p=1&q=rtorrent (2-Click Install)

В дистрибутиве Archlinux:

# pacman -Sy rtorrent

В системах основанных на RedHat (Fedora, CentOS, RHEL):

# yum -y install rtorrent

В дистрибутиве Mandriva

# urpmi rtorrent

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

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

Для создания этого файла можно использовать приведенный ниже пример, либо взять пример с сайта программы.

Настройка параметров работы программы править

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

network.bind_address.set = a.b.c.d
# bind_address прослушивает сокет и исходящие подключения к этому сетевому интерфейсу.
# (Это IP, на котором LibTorrent / rtorrent работает. Внешний IP Если вы находитесь за NAT.)
network.local_address.set = a.b.c.d, network.local_address.set = hostname
# Устанавливает адрес для ответов к трекеру
# (Тот адрес который трекер потом отдает пирам для скачки файла)
network.port_range.set = a-b
# Диапазон портов по которым будет идти подключение
network.port_random.set = yes | no
# Открывает случайный порт из заданного диапазона
pieces.hash.on_completion.set = yes | no
# Проверять hash файла по окончании закачки
directory.default.set = directory
# Директория куда будут скачиваться Ваши файлы (пробелы экранируются символом «\», символ «~» в начале пути интерпретируется как путь к домашней папке)
session.path.set = directory
# Эта директория, в которую будут размещаться открытые закачки. Можете оставить это поле пустым,
# чтобы все файлы размещались в directory.
network.http.proxy_address.set = url
# HTTP прокси. Если нет нужды - оставьте поле пустым.
encoding.add = кодировка
# Добавить предпочитаемую кодировку для имен файлов. Если при распознавании ни одна кодировка 
# не подойдет, будет использована кодировка по-умолчанию.
protocol.encryption.set = option,...
# Настройки шифрования. По умолчанию, шифрование отключено, что эквивалентно параметру none. 
# Также возможны варианты: 
* allow_incoming (принимать зашифрованные входящие соединения), 
* try_outgoing (шифрование исходящих соединений), 
* require (запретить незашифрованные обращения), 
* require_RC4 (также запретить передачу текста после первичного зашифрованного установления связи), 
* enable_retry (если первоначальное исходящее установление связи окажется неудачным, повторить с 
# шифрованием, если оно было отключено, и без, если шифрование использовалось), 
* prefer_plaintext (использовать текст если пир предлагает выбор между открытым текстом и 
# шифрованием RC4, иначе будет использоваться RC4). 
protocol.pex.set = yes | no
# Включает/выключает расширения торрентов не помеченных как приватные. По умолчанию выключено.
schedule2 = <schedule_id>, start, interval, <commands>
# Вызывает команду через некоторый заданный период времени, начиная с какого то момента.
# Интервал равный нулю равен выполнению команды единожды.
# При выполнении  команды Вы можете использовать временной формат вида:
# день:час:минута:секунда, для примера: выполнять задачу каждый день в
# 18:00 используйте 18:00:00,24:00:00
schedule_remove2 = 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', чтобы отключить все запросы к трекеру.
# Бывает полезно в использовании с расписанием.
# В новой версии:
trackers.enable = yes
#trackers.disable = yes
tracker_dump = filename
# Записывает все запросы к трекеру в файл
trackers.use_udp.set = yes
# Использовать UDP протокол, лучше отключить (параметр 'no'), если вы находитесь за firewall’ом.

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

set_max_file_size = size
# Устанавливает максимальный размер файла, отключается параметром -1
set_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/"
# Перемещает загруженный файл в другую папку после окончания закачки
# Удобно для мультимедийных центров, чтобы не пытаться воспроизвести недокачаный файл.

Дополнительные настройки

system.umask.set = 002
# Установить значение umask для этого процесса, оно будет присвоено всем файлам созданных программой.
# Выбранная маска будет соответствовать правам доступа -rw-rw-r-- для файлов
set_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
trackers.use_udp.set = yes

# Разрешает работу DHT для безтрекерных торрентов или для случаев, когда все ретрекеры лежат 
# (не работают).
# Может принимать значения "disable" (для полного отключения DHT), "off" (не стартует с DHT),
# "auto" (Включает DHT при возможности), или "on" (принудительно включает DHT).
# Значение DHT по умолчанию "off". Для правильной работы DHT каталог сеансов "session" должен
# быть определен.
#  
dht.mode.set = auto
#
# UDP порт, используемый DHT. 
# 
dht.port.set = 6881

# Принудительно устанавливает кодировку UTF-8 для xmlrpc. 
# Рекомендуется для устранения проблем при использовании в 
# наименованиях торрентов символов кириллицы. Актуально для
# GUI, работающих через xmlrpc.
encoding.add = UTF-8
# Устанавливает внешний вид. Значения ( full | compact ).
# По умолчанию full.
ui.torrent_list.layout.set = compact
# Устанавливает вкладку при открытии программы. Значения ( main | name | started | stopped | complete | incomplete | hashing | seeding | leeching | active ).
ui.current_view.set = started

Внешний вид править

Основной экран править

 
Внешний вид клиента

В левом нижнем углу написано [Throttle off/off KB]. Это лимиты на Upload (отдачу) и Download (закачку) соответственно. По умолчанию они выключены. Их можно изменить кнопками a/z, s/x, d/c для изменения лимита отдачи вверх/вниз по 1, 5 и 50 кб/с соответственно, и те же буквы при нажатом Shift или CapsLock для изменения лимита закачки.

[Throttle off/off] [Rate: 0.0 / 0.0 KB] [Port:xxxxx]

Дальше идет [Rate: 0.0 / 0.0 KB] Здесь показаны текущие Upload / Download скорости. [Port:xxxxx] это порт, который использует rTorrent, для входящих соединений.

В правом нижнем углу отображается информация обо всех раздачах

[U 7/0] [D 0/0] [H 0/32] [S 0/9/768] [F 128/128]

  1. [U 7/0] Текущее количество используемых слотов раздач и их максимальное число, зависит от параметра max_uploads_global
  2. [D 0/0] Текущее количество используемых слотов для скачивания и их максимальное число (0 неограниченно).
  3. [H 0/32] Текущее количество активных запросов HTTP (к анонсам трекера и для скачивания .torrent файлов), и максимальное.
  4. [S 0/9/768] Эти три числа показывают обращения к пирам для установления соединения/открытые сокеты/максимальное количество открытых сокетов.
  5. [F 128/128] Здесь показано текущее и максимально возможное количество открытых файлов. Библиотека динамически закрывает наименее используемые файлы.

Рассмотрим сам торрент. Сначала идет название, далее написано Rate и указаны текущие скорости отдачи и скачивания. После этого сколько было отдано с данного торрента. В квадратных скобках идет рейтинг (являющийся соотношением скачанного/отданного. Если есть слово Inactive означает, что торрент неактивен (на паузе).

В верхней строке написано View: main. Всего их 9: переключаемых кнопками 1-9:

  1. Main — по умолчанию.
  2. Name — показ торрентов с сортировкой по имени.
  3. Started — показ только запущенных торрентов.
  4. Stopped — показ только остановленных торрентов.
  5. Complete — показ только закачанных на 100% торрентов.
  6. Incomplete — показ только недокачанных торрентов.
  7. Hashing — показ только хешируемых торрентов.
  8. Seeding — показ только сидируемых торрентов.
  9. Active — показ только активных торрентов.

В клиенте используется навигация в стиле Lynx. Так называют способ организации интерфейса, при котором передвижение осуществляется стрелками по правилу: вверх/вниз — в пределах текущего уровня, влево/вправо - на уровень выше и на уровень ниже.

Для примера можно выбрать какую-либо из раздач и нажать стрелку вправо. Мы увидим вот такое меню.

  • Peer list — список пиров
  • Info — информация о торренте
  • File list — список файлов в закачиваемом торренте
  • Tracker list — список трекеров
  • Chunks seen — просмотреть
  • Transfer list — список передаваемых кусков

Выберем стрелками пункт File list и нажмём стрелку вправо. Теперь, выбрав нужный файл, можно с помощью пробела поставить ему высокий приоритет (hig) или вообще отказаться от его закачки (off).

Экран Peer list править

Некоторые части этого экрана достаточно загадочны, далее расшифровка полей.

IP UP DOWN PEER C/RE/LO QS DONE REQ SNUB
1.1.1.1 1.1 0.0 20.5 r/ci/un 3/0 32

Объяснение

# IP - IP адрес пиров.
# UP - Скорость отдачи (KiB/sec). 
# DOWN - Скорость скачивания (KiB/sec). 
# PEER - Скорость скачивания (KiB/sec) пира для этого торрента (сообщает вашему клиенту клиент пира). 

# C/RE/LO 
# C = тип соединения, может быть r, l, R or L. 
* r = Входящее, пир инициировал подключение к вашему клиенту. 
* l = Исходящее, ваш клиент инициировал подключение к пиру. 
* R = Входящее, с использованием шифрования. 
* L = Исходящее, с использованием шифрования. 
# RE = Информация об удаленном клиенте, состоит из двух частей; первая u или c и вторая i или n. 
* c = Пир заблокировал ваш клиент (это значит, что он не собирается отправлять вам куски сейчас). 
* u = Пир не заблокировал ваш клиент. 
* i = Пир заинтересован в загрузке с вашего клиента. 
* n = Пир не заинтересован в загрузке с вашего клиента. 
# LO = Информация о локальном клиенте, состоит из двух частей; первая u или c и вторая i или n. 
* c = Ваш клиент заблокировал этого пира (это значит, что ваш клиент не собирается отправлять 
      ему куски сейчас). 
* u = Ваш клиент не заблокировал этого пира. 
* i = Ваш клиент заинтересован в загрузки с этого пира. 
* n = Ваш клиент не заинтересован в загрузке с этого пира. 

# QS - Очередь исходящих/Входящие куски. Первое число показывает количество кусков, ожидающих 
  отправки пиру. Второе - количество кусков, запрошенных вашим клиентом и ожидающих отправления.
# DONE - Процент файла имеющийся у пира. 
# REQ - Количество кусков, которые в настоящее время стоят в начале очереди.
# SNUB - В этом поле отображается *, когда пир пренебрегает вашим клиентом. Когда пир соглашается 
  отправить вам кусок, который ваш клиент запросил, и не отправляет его в определенный период 
  времени, ваш клиент обозначит этого пира пренебрегающим. Это означает, что пир является ненадежным
  и лучше просить куски у других пиров.

В статусной строке отображается следующая информация:

Peers: 99(1002) Min/Max: 40/100 Uploads: 15 U/I/C/A: 3/71/5/3 Failed: 0

# Peers - Сумма пиров с которымы вы соединены (не соединены). 
# Min/Max - Минимальная и максимальная сумма пиров для сохранения соединения. Может быть изменена 
  клавишами 3, 4, 5 и 6. 
# Uploads - Максимальное количество раздач одновременно (с учетом global upload slots). Может быть 
  изменено клавишами 1 и 2. 
# U/I/C/A 
* U = Количество незаблокированных пиров в данный момент
* I = Количество заинтересованных пиров
* C = Завершенные пиры 
* A = Счетчик пиров
# Failed - Количество ошибочных кусков.

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

  • 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 — вызвать команду или поменять настройку

Меню торрента править

Просматривая состояния конкретного торрента (кнопка ->) можно изменять дополнительные параметры:

  • Peer list:
    • * - остановить отдачу (для выделенного пира)
    • k - отсоединиться от пира
  • File list
    • space - изменить приоритет файла
    • стрелка вправо - развернуть (для директорий)
    • / - cвернуть (для директорий)
    • * - изменить приоритет всем файлам
  • Tracker list
    • * - отключить/включить трекер

Графический интерфейс править

Помимо консольного, существует несколько WEB (через браузер) и графических интерфейсов: http://libtorrent.rakshasa.no/wiki/UtilsList (англ.)

Для добавления возможности работы с rtorrent через графический интерфейс необходимо:

Установить xmlrpc-c http://xmlrpc-c.sourceforge.net

Собрать rtorrent с опцией --with-xmlrpc-c

  $ ./configure --with-xmlrpc-c

В дистрибутиве Gentoo:

# USE="xmlrpc" emerge rtorrent

Установить модуль mod_scgi http://www.mems-exchange.org/software/scgi/

Актуально для сервера Apache. Lighttpd уже содержит этот модуль.

Скачать можно, например, отсюда http://python.ca/scgi/releases/ или

$ git clone http://quixote.ca/src/scgi.git
$ cd ./scgi/apache2/
$ make

В зависимости от используемой версии Apache собрать и установить mod_scgi.so

Добавить в настройки сервера:

LoadModule scgi_module /usr/lib/apache2/modules/mod_scgi.so

(конкретно в UBUNTU 8.10 в настройках апача LoadModule нужно прописывать в файле /etc/apache2/apache2.conf )

SCGIMount /RPC2 127.0.0.1:5000

(конкретно в UBUNTU 8.10 в настройках апача SCGIMount нужно прописывать в файле виртуального хоста )

Для повышения безопасности можно задать пароль для подключающихся клиентов:

htpasswd -c /etc/httpd/passwd rtorrentuser

И в настройках сервера указать

<Location /RPC2>
 AuthName "Private"
 AuthType Basic
 AuthBasicProvider file
 AuthUserFile /etc/httpd/passwd
 Require user rtorrentuser
</Location>

В файле конфигурации rtorrent (например .rtorrent.rc) добавить:

scgi_port = localhost:5000

После этого заработают такие интерфейсы как

и другие

Ссылки править

Примечания править