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 - она же маленькая. Установка

