RTorrent (Русский)

From ArchWiki
Jump to: navigation, search

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

Tango-dialog-warning.pngИнформация в этой статье или разделе устарелаTango-dialog-warning.png

Причина: rc.d references. Needs update, see Systemd (Русский). (Обсудить)

rTorrent - это быстрый и эффективный клиент BitTorrent использующий библиотеку libtorrent. rTorrent написан на C++ и использует программную библиотеку ncurses, которая означает, что он использует текстовый интерфейс. В сочетании с GNU Screen и Secure Shell, он становится удобным удаленным клиентом BitTorrent.

Установка

Установите пакет rtorrent. Кроме того, существуют пакеты rtorrent-svnAUR[ссылка недействительна: сохранено в aur-mirror] или rtorrent-extendedAUR[ссылка недействительна: сохранено в aur-mirror].

Конфигурация

Примечание: Смотрите статью rTorrent для получения дополнительной информации: Common Tasks in rTorrent for Dummies

До запуска rTorrent, найдите пример конфигурационного файла /usr/share/doc/rtorrent/rtorrent.rc и скопируйте его в ~/.rtorrent.rc:

$ cp /usr/share/doc/rtorrent/rtorrent.rc ~/.rtorrent.rc

Производительность

Примечание: Смотрите статью rTorrent для получения дополнительной информации: Performance Tuning

Значения следующих параметров зависят от аппаратной части системы и скорости интернет-соединения. Чтобы найти оптимальные значения, читайте статью: Optimize Your BitTorrent Download Speed

min_peers = 40
max_peers = 52

min_peers_seed = 10
max_peers_seed = 52

max_uploads = 8

download_rate = 200
upload_rate = 28

Опция check_hash выполняет проверку хэш-кода, когда загрузка завершена или запущен rTorrent. При запуске, она проверяет на наличие ошибок завершенные (загруженные) файлы.

check_hash = yes

Создание и управление файлами

Опция directory будет определять место, где ваши данные будут сохраняться. Обязательно указывайте абсолютный путь, так как rTorrent не поддерживает относительные пути:

directory = /home/[пользователь]/torrents/

Опция session позволяет rTorrent сохранять текущее состояние (прогресс) ваших загрузок. Рекомендуется создать директорию с названием .session (например: $ mkdir ~/.session).

session = /home/[пользователь]/.session/

Опция schedule в rTorrent наблюдает за определенным каталогом на наличие новых торрент-файлов. Сохранение торрент-файла в эту директорию, автоматически начнет загрузку. Не забудьте создать каталог, для автоматической загрузки (например: $ mkdir ~/obs). Будьте осторожны, при использовании этой опции так как rTorrent переместит торрент-файл в вашу папку .session и переименует его в хэш-значение.

schedule = watch_directory,5,5,load_start=/home/[user]/watch/*.torrent
schedule = untied_directory,5,5,stop_untied=
schedule = tied_directory,5,5,start_tied=

Следующая опция schedule предназначена для остановки rTorrent от загрузки данных, когда не хватает дискового пространства.

schedule = low_diskspace,5,60,close_low_diskspace=100M

Настройка портов

Параметр port_range задает порт(ы) для прослушивания. Рекомендуется использовать порт, который больше чем 49152 (см.: List of port numbers). Несмотря на то, что rTorrent позволяет использовать диапазон портов, рекомендуется использовать один.

port_range = 49164-49164

Кроме того, убедитесь, что переадресация включена для надлежащих портов (см.: Port Forward Guides).

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

Параметр encryption включает или отключает шифрование. Очень важно включить эту опцию, не только для Вас, но так же для Ваших коллег (пиров). Некоторым пользователям нужно скрыть использование своей пропускной способности от их интернет-провайдера.

encryption = allow_incoming,try_outgoing,enable_retry

Последняя опция dht включает поддержку DHT. DHT распространен среди открытых трекеров и позволяет клиенту получить больше пиров.

dht = auto
dht_port = 6881
peer_exchange = yes
Примечание: См. статью rTorrent для получения дополнительной информации: Using DHT

Привязка клавиш

rTorrent управляется горячими клавишами. Краткий справочник доступен в таблице ниже. Полное руководство доступно в статье rTorrent (см.: rTorrent User Guide).

Примечание: Двойное быстрое нажатие Ctrl-q заставит rTorrent завершить работу не дожидаясь отправки сигнала стоп к подключенным трекерам.
Команда Действие
Ctrl-q Выход из приложения
Ctrl-s Начать загрузку. В первую очередь запускает хэширование, если оно еще не было сделано.
Ctrl-d Остановка активной загрузки или удаление остановленной загрузки.
Ctrl-k Остановить и закрыть файлы активной загрузки.
Ctrl-r Инициировать хэш-проверку торрента. Без запуска загрузки/отдачи.
Влево Возврат к предыдущему экрану.
Вправо Переход к следующему экрану
Backspace/Return(Enter) Добавляет указанный *.torrent
a|s|d Регулировка увеличения глобальной скорости отдачи на 1|5|50 КБ/с
A|S|D Регулировка увеличения глобальной скорости загрузки на 1|5|50 КБ/с
z|x|c Регулировка уменьшения глобальной скорости отдачи на 1|5|50 КБ/С
Z|X|C Регулировка уменьшения глобальной скорости загрузки на 1|5|50 КБ/с

Избыточные привязки клавиш

Ctrl-s Часто используется в управлении терминалом для того что-бы остановить вывод на экран, тогда как Ctrl-q используется для того что-бы его включить. Эти назначения могут конфликтовать с rTorrent'ом. Проверьте и посмотрите, не совпадают ли эти опции терминала с назначенными клавишами:

$ stty -a
...
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
...

Для того что-бы удалить назначения, измените свойства терминала стерев определения вышеупомянутых специальных символов (i.e. stop and start):

# stty stop undef
# stty start undef

Для того что-бы эти назначения удалялись автоматически, предыдущие две команды можно добавить в файл ~/.bashrc file.

Дополнительные советы

Разделить сессию с помощью Screen'а

GNU Screen это обертка которая позволяет разделить текстовую программу и консоль с которой она была запущена.

Контроль потока Screen'а взаимодействует с привязкой Ctrl-q (см.: Избыточные привязки клавиш). Что-бы отключить это, вставьте следующее в файл ~/.screenrc:

defflow off

Альтернативой может быть заключение команды в ESC последовательность и отправлением ее напрямую на терминал. Другими словами, используйте Ctrl-a q для того что-бы выйти из rTorrent'а внутри GNU Screen'а.

Для того что-бы автоматически запускать rTorrent изнутри Screen'а добавьте следующее в конфигурационный файл ~/.screenrc:

screen -t rtorrent rtorrent 

Запуск в качестве демона

Tango-dialog-warning.pngИнформация в этой статье или разделе устарелаTango-dialog-warning.png

Причина: update for systemd (Обсудить)
Примечание: См. викистатью об rTorrent по этой теме для получения дополнительной информации: Starting rTorrent on System Startup

Альтернативно, GNU Screen и rTorrent могут быть запущены совместно в качестве демона daemon (см. также: Arch Linux Forums thread, Gentoo Discussion Forums thread).

Для того что-бы использовать этот скрипт с tmux, замените строку 9 следующим su - USER -c 'tmux new -s rtorrent -d rtorrent' &> /dev/null (см.: rTorrent демон вместе с tmux).

При привилегиях администратора создайте следующий файл:

/etc/rc.d/rtorrent
#!/bin/bash

. /etc/rc.conf
. /etc/rc.d/functions

case "$1" in
  start)
    stat_busy "Запускается rtorrent"
    su - USER -c 'screen -d -m -S rtorrent rtorrent' &> /dev/null
    if [ $? -gt 0 ]; then
      stat_fail
    else
      add_daemon rtorrent
      stat_done
    fi
    ;;
  stop)
    stat_busy "Останавливается rtorrent"
    killall -w -s 2 /usr/bin/rtorrent &> /dev/null
    if [ $? -gt 0 ]; then
      stat_fail
    else
      rm_daemon rtorrent
      stat_done
    fi
    ;;
  restart)
    $0 stop
    sleep 1
    $0 start
    ;;
  *)
    echo "usage: $0 {start|stop|restart}"
esac
exit 0

Убедитесь в том, чтобы заменить USER на имя пользователя, который будет запускать rtorrent.

Сделайте файл исполняемым:

# chmod +x /etc/rc.d/rtorrent

Создание файла .rtorrent.rc с относительными путями в домашнем каталоге пользователя сорвет выполнение скрипта rc.d. Для того что-бы запускать множество экземпляров rTorrent с относительными путями под разными учетными записями замените строку 9 в файле /etc/rc.d/rtorrent следующим содержимым:

   su username -c 'cd /home/username && screen -d -m -S rtorrent rtorrent' &> /dev/null

Альтернативно вы можете установить абсолютные пути в конфигурационном файле.

To run the daemon user multiple users create one rc.d script for each user. Then replace line 9 in /etc/rc.d/rtorrent with the following:

   su - username -c 'killall -w -s 2 /usr/bin/rtorrent' &> /dev/null

Для соединения с процессом демона на удаленной машине используйте SSH:

$ ssh -t rtorrent@192.168.1.10 'screen -r'

Или если вы использовали tmux вместо screen:

$ ssh -t rtorrent@192.168.1.10 'tmux attach -t rtorrent'

Для дополнительной информации о скриптах работающих в фоновом режиме смотрте: Writing rc.d scripts

Этот скрипт может быть найден в rtorrent-daemon-git репозитория AUR.

Другие скрипты могут быть найдены на следующих страницах: Gentoo Wiki Archives, Joyent CodeSnippets и ByteTouch.

Резерв места, предупреждение фрагментации (pre-allocation)

Пакету rTorrent не хватает резерва места (pre-allocation). Компиляция rTorrent с резервом места позволяет выделить место для файлов до загрузки торрента. Главная выгода заключается в том что это ограничивает и предотвращает фрагментацию файловой системы. Однако, это создает задержку во время резерва места если файловая система не поддерживает системный вызов fallocate естественным путем.

Таким образом этот ключ рекомендуется для файловых систем, таких как: xfs, ext4 и btrfs, которые имеют "родную" поддержку системного вызова fallocate. В них не происходит задержки во время резерва места и фрагментирования файловой системы. Резерв места на других файловых системах создает задержку но не фрагментирует файлы.

Для того что-бы сделать резерв места доступным, перекомпилируйте libtorrent из дерева ABS со следующим ключом:

 $ ./configure --prefix=/usr --disable-debug --with-posix-fallocate

Для того что-бы его включить добавьте следующие строки в ваш конфигурационный файл ~/rtorrent.rc:

~/rtorrent.rc
  # Резервирование места под файлы; сокращает фрагментацию файлов на файловой системе.
  system.file_allocate.set = yes

Управление законченными файлами

Примечание: Currently, this part requires either the svn version of rtorrent/libtorrent or having applied the patch to 0.8.6 that adds 'equal'.
Примечание: If you're having trouble with this tip, it's probably easier to follow this

Возможно задать приложению rtorrent сортировать законченные данные по указанным каталогам согласно тому в какой 'watch' каталог вы закинули тот или иной торрент во процессе продолжения его раздачи. It is possible to have rtorrent sort completed torrent data to specific folders based on which 'watch' folder you drop the *.torrent into while continuing to seed. Множество примеров показывают как этого добиться с торрентами загруженными с помощью rtorrent. Основное осложнение заключается в том что если вы попытаетесь закинуть на 100% законченный торрент и указать приложению rtorrent сверить данные и продолжить, данные не будут сортированными.

В качестве решения используйте следующий пример в вашем ~/.rtorrent.rc. Убедитесь в том что поменяли пути на нужные вам.

# месторасположение данных нового торрента и место куда должны быть помещены
# 'законченные' данные перед тем как вы поместите файлы торрентов в каталог наблюдения
directory = /home/user/torrents/incomplete

# назначить событие таймера под названием 'watch_directory_1':
# 1) срабатывать через 10 секунд после запуска rtorrent"а
# 2) а затем срабатывать с интервалом в каждые 10 секунд
# 3) По срабатыванию пытаться загрузить (и запустить) новые файлы торрентов найденные в /home/user/torrents/watch/
# 4) передать переменной под названием 'custom1' значение "/home/user/torrents/complete"
# На заметку: если вы не желаете что-бы скрипт автоматически запускал торрент, измените 'load_start' на 'load'
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"

# вставить метод с псевдонимом 'checkdirs1'
# 1) вернуть "истинно" (true) если текущий путь данных торрента не равен значению переменной custom1
# 2) в противном случае вернуть "ложно" (false)
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""

# вставить метод с псевдонимом 'movecheck1'
# 1) вернуть "истинно" если все 3 команды вернули "истинно"
#    ('результат checkdirs1' && 'торрент на 100% завершен', 'поставлена переменная custom1')
# 2) в противном случае вернуть "ложно"
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"

# вставить метод с псевдонимом 'movedir1'
# (последовательность команд разделенных с помощью ';') 
# 1) "установить путь равным значению переменной custom1";
# 2) "mv -u <current data path> <custom1 path>";
# 3) "очистить custom1", "остановить торрент","возобновить торрент"
# 4) остановить торрент
# 5) запустить торрент (дать торренту обновить "базовый путь")
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="

# поставить ключ с именем 'move_hashed1' который будет запускаться событием hash_done.
# 1) По завершению хеширования торрента сработает этот пользовательский ключ.
# 2) по срабатыванию выполнить метод 'movecheck1' и проверить возвращаемое значение.
# 3) если метод 'movecheck' возвращает "истинно" выполнить метод 'movedir1' вставленный нами ранее.
# На заметку: 'branch' это условный оператор 'if': if(movecheck1){movedir1}
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"

Вы можете добавить дополнительные каталоги наблюдения если вы хотите отсортировать ваши торренты в особом порядке.

На пример, если вы хотите что-бы ваши торренты загружались в:

/home/user/torrents/incomplete

а затем отсортировать данные торрентов основываясь на том куда вы закинули файл торрента:

/home/user/torrents/watch => /home/user/torrents/complete
/home/user/torrents/watch/iso => /home/user/torrents/complete/iso
/home/user/torrents/watch/music => /home/user/torrents/complete/music

Вы можете записать следующие строки в ваш .rtorrent.rc:

directory = /home/user/torrents/incomplete
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"

schedule = watch_directory_2,10,10,"load_start=/home/user/torrents/watch/iso/*.torrent,d.set_custom1=/home/user/torrents/complete/iso"

schedule = watch_directory_3,10,10,"load_start=/home/user/torrents/watch/music/*.torrent,d.set_custom1=/home/user/torrents/complete/music"

system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"

Смотрите также pyroscope особенно примеры rtcontrol. Там также есть пакет AUR.

Уведомления с почтой Гугла

Сотовые операторы позволяют вам отправлять электронные письма на ваш телефон:

Verizon: 10digitphonenumber@vtext.com
AT&T: 10digitphonenumber@txt.att.net
Former AT&T customers: 10digitphonenumber@mmode.com
Sprint: 10digitphonenumber@messaging.sprintpcs.com
T-Mobile: 10digitphonenumber@tmomail.net
Nextel: 10digitphonenumber@messaging.nextel.com
Cingular: 10digitphonenumber@cingularme.com
Virgin Mobile: 10digitphonenumber@vmobl.com
Alltel: 10digitphonenumber@alltelmessage.com OR
10digitphonenumber@message.alltel.com
CellularOne: 10digitphonenumber@mobile.celloneusa.com
Omnipoint: 10digitphonenumber@omnipointpcs.com
Qwest: 10digitphonenumber@qwestmp.com
Telus: 10digitphonenumber@msg.telus.com
Rogers Wireless: 10digitphonenumber@pcs.rogers.com
Fido: 10digitphonenumber@fido.ca
Bell Mobility: 10digitphonenumber@txt.bell.ca
Koodo Mobile: 10digitphonenumber@msg.koodomobile.com
MTS: 10digitphonenumber@text.mtsmobility.com
President's Choice: 10digitphonenumber@txt.bell.ca
Sasktel: 10digitphonenumber@sms.sasktel.com
Solo: 10digitphonenumber@txt.bell.ca
  • Очистите файл /etc/mail.rc и введите:
Примечание: Older versions of Heirloom's mailx use /etc/nail.rc.
set sendmail="/usr/bin/mailx"
set smtp=smtp.gmail.com:587
set smtp-use-starttls
set ssl-verify=ignore
set ssl-auth=login
set smtp-auth-user=USERNAME@gmail.com
set smtp-auth-password=PASSWORD

Теперь для того что-бы передать сообщение мы должны перенаправить его на стандартный вход программы mailx.

  • Make a Bash script:
/path/to/mail.sh
echo "$@: Done" | mailx 5551234567@vtext.com

Где $@ это переменная содержащая все аргументы переданные нашему скрипту.

  • И на конец, добавьте одну важную строку в файл ~/.rtorrent.rc :
system.method.set_key = event.download.finished,notify_me,"execute=/path/to/mail.sh,$d.get_name="

Breaking it down:

notify_me идентификатор команды который может быть использован другими командами которые могут быть абсолютно любыми пока они уникальны.

execute= это команда rtorrent'а, в данном случае для выполнения команды оболочки.

/path/to/mail.sh это имя нашего скрипта (или любой команды которую вы хотите исполнить) с последующим списком передаваемых ключей/аргументов разделенных запятыми.

$d.get_name= 'd' это псевдоним для чего угодно запускаемого командой, get_name это имя функции возвращающей имя нашей загрузки и '$' говорит rTorrent'у заменить команду ее выводом перед тем как он вызовет запуск.

The end result? When that torrent, 'All Live Nudibranches', that we started before leaving for work finishes, we will be texted:

All Live Nudibranches: Done

Displaying active torrents

The rtorrent doesn't list the active tab properly by default, add this line to your .rtorrent.rc to show only active torrents

schedule = filter_active,30,30,"view_filter = active,\"or={d.get_up_rate=,d.get_down_rate=}\""

Then press 9 in your rTorrent client to see the changes in action.

Troubleshooting

CA certificates

To use rTorrent with a tracker that uses HTTPS, do the following as root:

# cd /etc/ssl/certs

# wget --no-check-certificate https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Global_eBusiness_CA-1.cer

# mv Equifax_Secure_Global_eBusiness_CA-1.cer Equifax_Secure_Global_eBusiness_CA-1.pem

# c_rehash

And from now on run rTorrent with:

$ rtorrent -o http_capath=/etc/ssl/certs

If you use GNU Screen, update the .screenrc configuration file to reflect this change:

$ screen -t rtorrent rtorrent -o http_capath=/etc/ssl/certs

In rTorrent 0.8.9, set network.http.ssl_verify_peer.set=0 to fix the problem.[1]

For more information see: rTorrent Error & CA Certificate and rTorrent Certificates Problem

Web interface

There are numerous web interfaces and front ends for rTorrent including:

  • WTorrent is a web interface to rtorrent programmed in php using Smarty templates and XMLRPC for PHP library.
  • nTorrent is a graphical user interface client to rtorrent (a cli torrent client) written in Java.
  • rTWi is a simple rTorrent web interface written in PHP.
  • Rtgui is a web based front end for rTorrent written in PHP and uses XML-RPC to communicate with the rTorrent client.
  • rutorrent and Forum - A web-based front-end with an interface very similar to uTorrent which supports many plugins and advanced features (см. также: RuTorrent и Guide for rTorrent + ruTorrent Installation).
Примечание: rTorrent is currently built using XML-RPC for C/C++, which is required for some web interfaces (e.g. ruTorrent).

XMLRPC interface

If you want to use rtorrent with some web interfaces (e.g. rutorrent) you need to add the following line to the configuration file:

scgi_port = localhost:5000

For more information see: Using XMLRPC with rtorrent

See also


Forum threads