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]
- [U 7/0] Текущее количество используемых слотов раздач и их максимальное число, зависит от параметра max_uploads_global
- [D 0/0] Текущее количество используемых слотов для скачивания и их максимальное число (0 неограниченно).
- [H 0/32] Текущее количество активных запросов HTTP (к анонсам трекера и для скачивания .torrent файлов), и максимальное.
- [S 0/9/768] Эти три числа показывают обращения к пирам для установления соединения/открытые сокеты/максимальное количество открытых сокетов.
- [F 128/128] Здесь показано текущее и максимально возможное количество открытых файлов. Библиотека динамически закрывает наименее используемые файлы.
Рассмотрим сам торрент. Сначала идет название, далее написано Rate и
указаны текущие скорости отдачи и скачивания. После этого сколько было отдано с данного торрента. В квадратных скобках идет рейтинг (являющийся соотношением скачанного/отданного.
Если есть слово Inactive
означает, что торрент неактивен (на паузе).
В верхней строке написано View: main. Всего их 9: переключаемых кнопками 1-9:
- Main — по умолчанию.
- Name — показ торрентов с сортировкой по имени.
- Started — показ только запущенных торрентов.
- Stopped — показ только остановленных торрентов.
- Complete — показ только закачанных на 100% торрентов.
- Incomplete — показ только недокачанных торрентов.
- Hashing — показ только хешируемых торрентов.
- Seeding — показ только сидируемых торрентов.
- 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
После этого заработают такие интерфейсы как
- 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/
и другие
Ссылки
править- Официальное руководство(англ.)
- Руководство по DHT для RTorrent(англ.)
- Пример скрипта инициализации (автозапуска) rTorrent
- Другой вариант автозапуска rTorrent
- Демонизация rTorrent под FreeBSD
- Компиляция rTorrent под ubuntu(англ.)
- Веб-интерфейс n2Hell
- Компиляция, настройка и добавление web-ui в rtorrent под ubuntu
Примечания
править