Rtorrent

Материал из Bryansk Linux Users Group.

Перейти к: навигация, поиск

Содержание

rtorrent - консольный клиент для Linux и прочих его аналогов на базе библиотеки libTorrent.

Запустим rtorrent. Выглядит не слишком понятно, но при самом поверхностном изучении обращаться с ним оказывается очень просто.

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

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

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

Разумеется, прежде всего нас волнует скачивание. Нажнём Enter и введём имя файла (разумеется, работает кнопка Tab).

Видим что-то вроде:


*  [DB]_Bleach_118_[71B7EAE3].avi
* [CLOSED]     0.0 /  170.2 MB Rate:   0.0 /   0.0 KB Uploaded: 0.0 MB  [R: 0.00]
* Inactive:


В первой строке - имя скачиваемого файла, во второй строке по порядку отображается:

сколько скачано / общий размер Rate: скорость отдачи / скорость скачивания Uploaded: сколько отдано R: рейтинг

Слово Inactive означает, что торрент неактивен (на паузе).

Чтобы запустить торрент, нажмём Ctrl-S. Чтобы остановить - Ctrl-D. Если торрент остановлен, то Ctrl-D удаляет его из клиента, так что надо быть внимательным и не нажимать Ctrl-D дважды без нужды.

Внимание: скорее всего вы не сможете воспользоваться комбинациями клавиш Ctrl-s, Ctrl-q, так как они используются для управлением терминалом. Впрочем есть решение - перед запуском rtorrent (или screen) выполнить команды:

$ stty stop undef
$ stty start undef

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

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

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

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

   * Ctrl+t/T - обновить трэкер.
   * Ctrl+ q — отключает программу, повторное нажатие закрывает программу не посылая трэкеру стоп сигнал
   * кнопки вниз/вверх — выбор торрента/адреса
   * кнопка <- — возвращает на предыдущий экран
   * кнопка -> — просмотр состояния загрузки/аплоуда торрента
   * a | s | d — увеличить скорость слота аплоуда на 1/5/50 кб.
   * A | S | D — увеличить скорость слота загрузки на 1/5/50 кб.
   * z | x | c — уменьшить скорость аплоуда на 1/5/50 кб.
   * Z | X | C — уменьшить скорость загрузки на 1/5/50 кб.
   * 1...8 — переключение вида на различные окна
   * Ctrl+S — начать закачку
   * Ctrl+D — остановить закачку (повторное нажатие удаляет торент закачку. Сам торрент файл сохраняется)
   * Ctrl+K — закрыть торент и его файлы
   * Ctrl+R — проверить хэш торрента
   * Ctrl+O — изменить директорию на загрузку, торрент должен быть закрыт.
   * + | - — увеличить уменьшить приоритет загрузки торрента
   * backspace добавить URL или путь к торренту
   * l просмотреть лог, чтобы выйти нужно нажать пробел
   * Ctrl+P — вызвать комманду или поменять настройку

Меню торрента

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

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

Можно быстро обнаружить определённые неудобства. Клиент не запоминает, какие раздачи в него добавили, поэтому после перезапуска приходится добавлять все торренты заново (и хешировать заодно, что бывает очень долго). Казалось бы, можно обойтись просто складыванием файлов в текущий каталог и запуском каждый раз командой rtorrent *.torrent, но лучше освоить приятную возможность клиента по использованию сессий.

Запустим клиент так:

rtorrent -s torrents -d downloads

Добавим какие-нибудь раздачи, некоторые можно запустить, затем выйдем из клиента (кстати, это делается комбинацией Ctrl-Q). После перезапуска обнаружим, что все торренты на месте, ничего лишнего не хешируется и тд и тп.

Чтобы не запускать каждый раз rtorrent с аргументами, можно в файле ~/.rtorrent.rc прописать:

directory=путь к каталогу, куда будут качаться файлы
session=путь к каталогу, где клиент будет хранить сессию

Пример файла .rtorrent.rc

#минимальное число пиров на торент
min_peers = 1

#максимальное число пиров на торент
max_peers = 1000

#максимальная скорость загрузки
download_rate = 0

#максимальная скорость отдачи. 0 - не ограничена
upload_rate = 0

#каталог для сохранения закачек или откуда буду сидироваться торенты.
directory = /адрес директории/

#каталог куда будет сохраняться состояние торентов. Здесь, в этом примере, они сохраняются в папку   session
session = /адрес директории/session

#rtorrent каждые 5 секунд проверяет этот каталог на новые *.torrent файлы и если они есть то ставит их на закачку
schedule = watch_directory,5,5,load_start=/адрес директории/*.torrent

#номер порта (или нескольких портов) который открывает клиент для обмена данными
port_range = 40890-40891

#случайный выбор порта для обмена данными. В данном случае он отключён
port_random = no

#проверять хэш торрента после закачки
check_hash = yes 

###использовать udp
use_udp_trackers = yes

###сохранять сессию
session_save = yes


Настройка

Создадим файл с настройками:

$ cat <<EOF >>~/.rtorrent.rc
port_range = 10000-10005
check_hash = yes
directory = /mnt/storage/torrent
session = /mnt/storage/torrent
tos = default
upload_rate = 95
download_rate = 0
EOF

В этом примере, в домашнем каталоге пользователя (не обязательно root, более того - желательно в каталоге пользователя отличного от root) создам файл со следующими настройками:

   * проверять хеш торрентов после завершения закачки
   * прослушивать свободный порт из диапазона 10000-10005
   * использовать сессии, и сохранять торренты и закачки в /mnt/storage/torrent
   * установить поле TOS исходящих IP пакетов по умолчанию для системы (но не по умолчанию для rtorrent). Если не определить эту настройку возможны задержки в комбинациями с некоторыми рутерами.
   * ограничить отдачу скоростью 95 kb/s
   * не ограничить закачку 

В список правил iptables добавляем строки (мы же хотим быть подключаемыми):

# iptables -A INPUT -p tcp -m state --state NEW -m multiport --destination-ports 10000:10005 -i $EXTIF -j ACCEPT
# iptables -A INPUT -p udp -m state --state NEW -m multiport --destination-ports 10000:10005 -i $EXTIF -j ACCEPT

если наш клиент не имеет внешнего IP, тогда на рутере (а у нас там Linux, верно?) настраиваем DNAT

# iptables -t nat -A PREROUTING --dst $INET_IP -p tcp -m multiport --destination-ports 10000:10005 -j DNAT --to-destination $LANSERV_IP
# iptables -t nat -A PREROUTING --dst $INET_IP -p udp  -m multiport --destination-ports 10000:10005 -j DNAT --to-destination $LANSERV_IP

В этих примерах: EXTIF - имя устройства "глядящего" наружу. например eth0 INET_IP - внешний IP адрес LANSERV_IP - IP адрес машины на которой запущен rtorrent клиент


Внимание: скорее всего вы не сможете воспользоваться комбинациями клавиш Ctrl-s, Ctrl-q, так как они используются для управлением терминалом. Впрочем есть решение - перед запуском rtorrent (или screen) выполнить команды:

$ stty stop undef
$ stty start undef

Удаленное управление

Усложняем задачу: имеем удаленный сервачок (конечно на нем запущен Fedora Core 6), без видеокарты, но с сетевухой и хорошим каналом в интернет - грех подобным не воспользоваться ;) Для организации отключаемых сессий можно воспользоваться dtach или screen (обе можно найти в репо Fedora Core). Мы воспользуемся последним.

Хотя предположительно наш сервер не перезагружается, неплохо бы обеспечить запуск rtorrent при запуске системы:

# cat <<EOF >/etc/init.d/rtorrent
#!/bin/bash
#
# Starting rtorrent in a screen session as daemon
# Author: Vasile Vsx
#
# chkconfig: 2345 50 01
#
# description: start rtorrent detached
# processname: rtorrent

# source function library
. /etc/rc.d/init.d/functions

# Source networking configuration.
[ -r /etc/sysconfig/network ] && . /etc/sysconfig/network 

# Check that networking is up.
[ "\${NETWORKING}" = "no" ] && exit 0


if [ -f /etc/sysconfig/rtorrent ]; then
        . /etc/sysconfig/rtorrent
if

if [ -z \$RTORRENT_USER ]; then
        exit 0
if

RETVAL=0
 
start() {
        echo -n "Starting rtorrent: "
        daemon --user \$RTORRENT_USER /usr/bin/screen -dmS rtorrent /usr/bin/rtorrent \$OPTIONS
        RETVAL=\$?
        echo
}

stop() {
        echo -n "Stopping rtorrent: "
        killproc rtorrent -INT
        RETVAL=\$?
        echo
}

restart() {
        stop
        start
}

case "\$1" in
  start)
        start
        ;;
  stop) 
        stop
        ;;
  restart)
        restart
        ;;
  status)
        status rtorrent
        ;;
  *)
        echo $"Usage: \$0 {start|stop|status|restart}"
        exit 1
esac

exit $RETVAL
EOF
# chmod +x /etc/init.d/rtorrent
# chkconfig --add rtorrent 


Определяем пользователя используемого для запуска rtorrent

# cat <<EOF >/etc/sysconfig/rtorrent 
RTORRENT_USER=username
EOF

запускаем и останавливает rtorrent командами:

# /sbin/service rtorrent start

и

# /sbin/service rtorrent stop

Подключаемся к запущенной сессии:

$ screen -r

отключаемся сочетанием клавиш: Ctrl-a d Также создаем простой скрипт (rt):

$ mkdir ~/bin && cat <<EOF >~/bin/rt
#!/bin/sh
stty stop undef
stty start undef
screen -rS rtorrent
EOF
chmod +x ~/bin/rt

p.s. единственное, что rtorrent пока не умеет создавать торренты(или я об этом не знаю) и придется пользоваться чем то другим


FAQ

1.Как его подружить с кириллическими именами торрентов? 2.Сможет ли он писать торренты в fat32 раздел и считывать сохранённую сессию оттуда? (само собой сам он будет находиться в ext3)

1. Сами торренты именуй по-английски, а файлы он отлично в utf-8 записывает. 2. Да. Хотя сессию я бы хранил на ext3 - она же маленькая. Установка

Личные инструменты