rTorrent

Материал из Викиучебника — открытых книг для открытого мира

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

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

и другие

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

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

Дятел


  1. Обзор конфигурации rtorrent