rTorrent

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 13:38, 5 мая 2017.

rTorrent
TaS.png
The main information screen for rTorrent and libTorrent
Создатели: Jari Sundell (a.k.a. rakshasa)
Разработчики: Jari Sundell
Выпущена: 25 January 2005 года; 15 years ago (2005-01-25)[1]
Состояние разработки: Active
Написана на: C++[2]
Операционная система: Unix-like
Платформа: IA-32, x86-64
Размер дистрибутива: 1.3 MiB: GNU/Linux
Тип ПО: BitTorrent client
Лицензия: GNU GPL v2
Веб-сайт rakshasa.github.io/rtorrent/

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

Особенности

  • Использует библиотеку ncurses для вывода,то есть он использует текстовый интерфейс.
  • Отличается высокой скоростью и нетребовательностью к системным ресурсам.
  • Поддерживает magnet ссылки.
  • Исходные тексты программы распространяются под GPL[3] на официальном сайте.
  • Использование mmap для отображения файлов в память позволяет добиться на широкополосных каналах трехкратного преимущества перед официальным клиентом [Источник 1]


Установка

Первый вариант установки rTorrent заключается в загрузке исходного кода программы с официального сайта,

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

Например[Источник 2]:

При использовании 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 Linux:

#  emerge rtorrent

В дистрибутиве Arch Linux:

#  pacman -Sy rtorrent

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

#  yum -y install rtorrent

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

#  urpmi rtorrent  

В дистрибутиве SUSE: Образ для установки

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

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

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

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

 sudo touch /home/user/.rtorrent.rc  #Тонкая настройка программы осуществляется при помощи конфигурационного файла .rtorrent.rc, размещаемого в домашнем каталоге пользователя. (По умолчанию файл .rtorrent.rc отсутствует. Его нужно создавать самостоятельно.) 
 sudo nano /home/user/.rtorrent.rc   #создаем конфигурационный файл

Oткрываем созданный файл для редактирования, вносим в файл следующие записи:

 min_peers = 1   #минимальное число пиров на торрент
 max_peers = 1000  #максимальное число пиров на торрент
 download_rate = 0   #максимальная скорость загрузки. 0(KB) -не ограничена
 upload_rate = 0   #максимальная скорость отдачи. 0 - не ограничена

Настраиваем каталог

 directory = /home/user/download/   #Kаталог для сохранения закачек или откуда будут сидироваться торренты.
#каталог куда будет сохраняться состояние торрентов.
#Здесь, в этом примере, они сохраняются в папку
 session session = /home/user/session/   

Rtorrent каждые 5 секунд проверяет этот каталог на новые *.torrent файлы и если они есть, то ставит их на закачку

  schedule = watch_directory,5,5,load_start=/home/user/torrent_auto_load/*.torrent  
  port_range = 40890-40890    #номер порта (или нескольких портов) который открывает клиент для обмена данными
  port_random = no   #случайный выбор порта для обмена данными. В данном случае он отключён
  check_hash = yes   #проверять хэш торрента после закачки
  session_save = yes   #сохранять сессию 
#Принимать зашифрованные входящие соединения, устанавливать незашифрованные исходящие соединения,
#если возвращает ошибку, повторять с шифрованием, предпочитать открытый текст после установления
#зашифрованного соединения
  encryption = allow_incoming,enable_retry,prefer_plaintext  
 use_udp_trackers = yes    #использовать udp
 #Разрешает работу DHT для безтрекерных торрентов или для случаев, когда все ретрекеры лежат(не работают).
#Может принимать значения "disable" (для полного отключения DHT), "off" (не стартует с DHT), "auto" (Включает DHT при возможности), или "on" (принудительно включает DHT). # Значение DHT по умолчанию "off". Для правильной работы DHT каталог сеансов "session" должен быть определен.
   dht = auto  
   dht_port = 6881    #UDP порт, используемый DHT.

Устанавливаем кодировку

#Принудительно устанавливает кодировку UTF-8 для xmlrpc. Рекомендуется для устранения проблем при использовании в наименованиях торрентов символов кириллицы. Актуально для GUI, работающих через xmlrpc.
   encoding_list = UTF-8  
#Добавить предпочитаемую кодировку
   encryption = option,...   

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

  bind = a.b.c.d  #bind прослушивает сокет и исходящие подключения к этому сетевому интерфейсу.
  ip = a.b.c.d, ip = hostname   #Это IP, на котором LibTorrent / rtorrent работает. Внешний IP Если вы находитесь за NAT.
#Устанавливает адрес для ответов к трекеру 
   port_range = a-b  
#Диапазон портов по которым будет идти подключение
  port_random = yes | no  
#Открывает случайный порт из заданного диапазона
   check_hash = yes | no  
#Проверять hash файла по окончании закачки
   directory = directory  
#Директория куда будут скачиваться Ваши файлы
  session = directory  
#Эта директория, в которую будут размещаться открытые закачки. Можете оставить это поле пустым, чтобы все файлы размещались в directory.
   http_proxy = url  
#HTTP прокси. Если нет нужды - оставьте поле пустым.
 encoding_list = кодировка   

Настройки шифрования[Источник 4].

 #По умолчанию, шифрование отключено, что эквивалентно параметру none.
#Также возможны варианты:
* allow_incoming  #принимать зашифрованные входящие соединения
* try_outgoing  #шифрование исходящих соединений
* require   #запретить незашифрованные обращения
* require_RC4  #также запретить передачу текста после первичного зашифрованного установления связи
* enable_retry   #если первоначальное исходящее установление связи окажется неудачным, повторить с шифрованием, если оно было отключено, и без, если шифрование использовалось
* prefer_plaintext   #использовать текст если пир предлагает выбор между открытым текстом и шифрованием RC4, иначе будет использоваться RC4. 
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,  #Останавливает торренты, когда они достигают минимального рейтинга отдачи min_ratio, отданной в процентах. 
stop_on_ratio = min_ratio,min_upload,  #min_upload указывает на минимальное количество информации в байтах. 
stop_on_ratio = min_ratio,min_upload,max_ratio  #Рекомендуется использовать совместно с 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 
Записывает все запросы к трекеру в файл
 use_udp_trackers = 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/" 
#Перемещает загруженный файл в другую папку после окончания закачки
#Удобно для мультимедийных центров, чтобы не пытаться воспроизвести недокачаный файл. 

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

#Чтобы не запускать каждый раз rtorrent вручную настроим его автозагрузку.Сначала установим screen, он нужен для работы rtorrent в фоне:
 $ sudo apt-get install screen 
#Затем загрузим стартовый скрипт с сервера:
 $ cd /etc/init.d/ 
 $ wget http://libtorrent.rakshasa.no/raw-attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh 
#Отредактируем файл,укажем имя пользователя от которого будет запускаться rTorrent:
 $ sudo nano rtorrentInit.sh 
 user="пользователь" 
#Делаем файл исполняемым:
 $ chmod +x rtorrentInit.sh 
#Зададим владельцем файла системного пользователя root:
 $ chown root:root rtorrentInit.sh 
# И наконец включаем «автозагрузку» при старте машины:
 $ update-rc.d rtorrentInit.sh defaults 
#Запускаем демон в работу командой:
 $ /etc/init.d/rtorrentInit.sh start 
#После этих нехитрых манипуляций rtorrent будет автоматически запускаться при старте компьютера.
#Проверить его работу можно следующей командой:
 $ screen -dr rtorrent 
#Для выхода нужно просто набрать Ctrl+A , затем Ctrl+D.

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

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

[Источник 5]

Внешний вид

Основной экран

Основной экран

В левом нижнем углу написано [Throttle off/off KB]. Это лимиты на Upload (отдачу) и Download (закачку) соответственно. По умолчанию они выключены. Их можно изменить кнопками a/z, s/x, d/c для изменения лимита отдачи вверх/вниз по 1, 5 и 50 кб/с соответственно, и те же буквы при нажатом Shift или CapsLock для изменения лимита закачки. Дальше идет [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. Так называют способ организации интерфейса, при котором передвижение осуществляется стрелками по правилу: вверх/вниз — в пределах текущего уровня, влево/вправо - на уровень выше и на уровень ниже.

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

OS3 2.png

  • 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://free384.blogspot.ru/2011/12/rtorrent-web.html (англ.)

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

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

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

 $ ./configure --with-xmlrpc-c  

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

  USE="xmlrpc" emerge rtorrent #!i##

Установить модуль 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

Добавить в настройки сервера:[Источник 7]

 LoadModule scgi_module /usr/lib/apache2/modules/mod_scgi.so  #!i##
#конкретно в UBUNTU 8.10 в настройках апача LoadModule нужно прописывать в файле /etc/apache2/apache2.conf 
SCGIMount /RPC2 127.0.0.1:5000  #!i##
#конкретно в UBUNTU 8.10 в настройках апача SCGIMount нужно прописывать в файле виртуального хоста 

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

 htpasswd -c /etc/httpd/passwd rtorrentuser 

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

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

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

  scgi_port = localhost:5000

 После этого заработают такие интерфейсы как
 '''ruTorrent''' https://github.com/Novik/ruTorrent 
 '''wTorrent''' http://www.wtorrent-project.org/trac/ 
 '''rtGui''' http://code.google.com/p/rtgui/ 
 '''nTorrent''' http://code.google.com/p/ntorrent/ 
 '''RtorrentManager''' http://code.google.com/p/rtorrentmanager/ 
 и другие 

Источники

  1. Хабрахабр [Электронный ресурс]: Разбираемся с rtorrent всерьёз дата обращения: 18.04.2017 . Режим доступа: https://habrahabr.ru/post/238413/
  2. wiki.vdsplanet. [Электронный ресурс]: rTorrent дата обращения: 18.04.2017 . Режим доступа: http://wiki.vdsplanet.ru/Rtorrent
  3. indev.wordpress. [Электронный ресурс]: Настройка и использование rtorrent дата обращения: 19.04.2017 . Режим доступа: https://lindev.wordpress.com/2009/02/01/настройка-и-использование-rtorrent/
  4. Торрент-клиент rTorrent. [Электронный ресурс]: Торрент-клиент rTorrent дата обращения: 18.04.2017 . Режим доступа: http://linux-bash.ru/mseti/3-rtorrent.pdf
  5. help.ubuntu.ru [Электронный ресурс]: Rtorrent дата обращения: 20.04.2017 . Режим доступа: http://help.ubuntu.ru/wiki/rtorrent
  6. Free.blogspot.ru [Электронный ресурс]: Установка rtorrent с web-интерфейсом из исходников дата обращения: 18.04.2017 . Режим доступа: http://free384.blogspot.ru/2011/12/rtorrent-web.html
  7. Викиучебник [Электронный ресурс]: rTorrent дата обращения: 18.04.2017 . Режим доступа: https://ru.wikibooks.org/wiki/RTorrent

Примечания

  1. Earliest known code import
  2. rakshasa/rtorrent, GitHub, retrieved 2015-07-14 
  3. GNU General Public License (переводят как Универсальная общественная лицензия GNU, Универсальная общедоступная лицензия GNU или Открытое лицензионное соглашение GNU) — лицензия на свободное программное обеспечение.
  4. Обзор конфигурации rtorrent