Rtorrent

Материал из FedoraMD.org Wiki
Перейти к навигации Перейти к поиску

ВНИМАНИЕ: команды предваряемые символом '#' должны выполняться с правами root (Суперпользователь). Открыв терминал (или находясь в консоли) с правами обычного пользователя, введите команду $ su - для повышения уровня привелегий. Символы '$' и '#' в начале строки не являются частью команды и не должны вводится. Прочие команды могут выполняться с правами обыкновенного пользователя.


Домашняя страница

Установка

Подготовка

Ставить rtorrent не просто, но очень просто, как и всё что находится в Fedora Extras:

# yum -y install rtorrent

Также можно найти более новую версию в dag: rtorrent и libtorrent.

Настройка

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

$ 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 клиент

Запуск

Теперь можно запускать rtorrent:

$ rtorrent

Управляем клиентом стрелками и: backspace - для добавления torrent'a (работает автозаполнение по Tab) return - то же самое, но торрент остаётся неактивным Ctrl-O Указать иной каталог для торрента. Ctrl-s Запустить закачку (опционально проверив хеш) Ctrl-d Остановить активную закачку, или удалить неактивный торрент. Ctrl-r Перепроверить хеш.

Больше можно узнать в странице man rtorrent или Руководстве пользователя.

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

$ stty stop undef
$ stty start undef

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

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

$ yum install screen

Хотя предположительно наш сервер не перезагружается, неплохо бы обеспечить запуск 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
fi

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

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