вторник, 26 мая 2009 г.

rtorrent

Перед тем как начать отмечу одну важную вещь: Не выбирайте в качестве каталога для скачиваемых файлов ntfs-разделы. Драйвера ntfs-3g несовершенны, при высокой скорости записи они сильно грузят процессор. Вскоре загрузка процессора приближается к 100%, и отжирает процессорное время именно ntfs-3g, что видно по команде top . У меня при экспериментальной попытке писать на ntfs раздел скорость скачивания торрента не превышала 150 кбайт/сек, очевидно что большей скорости препятствовала полная загрузка процессора драйвером ntfs-3g. Кулер ноутбука выл не переставая. В общем, пишем торренты только на нативные разделы linux.

Почему именно rtorrent? Некоторое время я использовал deluge, пожалуй лучший _графический_ torrent-клиент под linux. Время шло, винчестер ноутбука заполнялся скачанными торрентами. Вес скачанного перевалил за 100 гигабайт, счет сидируемым торрентам пошел на десятки. И тут стали проявляться принципиальные ограничения deluge. Написанный на Python и GTK+ он стал ощутимо подтормаживать систему, что особенно заметно, если работать в запущенной рядом виртуалке. Ну а если еще открыт firefox с десятком вкладок... Надо было что-то решать. Лучшим выходом стал бы домашний сервер, на который можно было бы вынести торренты. Но когда еще руки дойдут до сборки и настройки сервера. Пока же я перевел всё торрент-хозяйство под управление rtorrent.
Маленький, легкий, консольный, написанный на Си клиент. Идеален для применения на сервере, а для меня и на десктопной машине. Может легко управлять сотнями гигабайт файлов на скоростях исчисляемых десятками мегабит/с при этом почти не загружает систему. К rtorrent-у можно прикрутить веб-морду, но для меня оказалось очень удобно и стандартное управление. Итак, приступаем:

Код:
sudo apt-get install rtorrent


Создадим конфигурационный файл rtorrent. В домашней папке делаем:

Код:
touch .rtorrent.rc
gedit .rtorrent.rc



Вставляем в конфигурационный файл следующее:

Код:
min_peers = 100
max_peers = 100
max_uploads = 100
download_rate = 0
upload_rate = 0
directory = /home/user/torrents/
session = /home/user/torrents/.rtsession
schedule = watch_directory,10,10,load_start=/home/user/torrents/watch/*.torrent
port_range = 6881-6881
port_random = no
check_hash = yes

peer_exchange = yes

В строках directory, session, schedule вместо user в путях ставим свое имя пользователя.
В строках download_rate, upload_rate указываем максимальную скорость на скачивание и на аплоад, например, если нужно ограничить скорость скачивания 50 кбайт/с, пишем

Код:
download_rate = 50K


(0 - неограниченно). Сохраняем конфигурационный файл, выходим из редактора. Создадим структуру каталогов. Находясь в домашней папке:

Код:
mkdir torrents
cd torrents
mkdir watch
mkdir .rtsession


Здесь: каталог torrents - основная рабочая директория. Сюда будут скачиваться, и отсюда сидироваться файлы. Каталог watch .В этот каталог нужно кидать файлы с расширением .torrent, получаемые с торрент-трекеров. В течении 10 секунд после помещения файла rtorrent начнет закачку. .rtsession Здесь будет хранится служебная информация rtorrent.
Запускаем rtorrent, набрав в окне терминала:

Код:
rtorrent


Помещаем полученный с трекера файл с расширением .torrent в папку ~/torrents/watch и в течении 10 секунд будет выполнен анонс и начнется скачивание. Самое время научиться управлять rtorrent-ом:



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

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

Рассмотрим более подробно одну из записей:

Здесь:
В первой строке - имя скачиваемого торрента, во второй строке по порядку отображается:
сколько скачано / общий размер
Rate: скорость отдачи / скорость скачивания
Uploaded: сколько отдано
Прогнозируемое время окончания закачки
R: рейтинг

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

Peer list - список пиров
Info - информация
File list - список файлов
Tracker list - список трекеров
Chunks seen - виденные куски
Transfer list - список передаваемых кусков
Больше всего нас интересует третий пункт. Выберем его стрелками и нажмём стрелку вправо. Теперь, выбрав нужный файл, можно с помощью пробела поставить ему высокий приоритет (hig) или вообще отказаться от его закачки (off):

И на последок - как корректно закрывать rtorrent. Для этого нажимаем Ctrl-q . Просто закрыть окно терминала нельзя - процесс будет убит, статистика не будет передана на торрент-трекер и не будет учтена в рейтинге, и после повторного старта будет пересчитываться хеш недокачанных файлов.
Можно ли запустить rtorrent так, чтобы можно было закрыть окно терминала а он остался работать? Да. Для этого запускаем rtorrent через screen. Если screen не установлен, установим его:

Код:
sudo apt-get install screen


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

Код:
screen rtorrent


При таком способе запуска терминал можно закрыть, и rtorrent останется работать в виртуальном терминале screen. Вернуться к нему можно набрав:

Код:
screen -r


Update - Наконец-то дошли руки разобраться со скриптом автозапуска rtorrent!

Итак: (в системе должен быть установлен screen. Если его нет, установите как написано выше)

Код:
cd /etc/init.d


Скачаем скрипт автозапуска с сайта разработчиков, и затем отредактируем его ( запускаем wget через sudo, т.к. у обычного пользователя нет прав писать в /etc/init.d ):

Код:
sudo wget http://libtorrent.rakshasa.no/raw-attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh


Отредактируем скрипт:

Код:
sudo gedit rtorrentInit.sh


Ищем строку: user="user" ( строка №34 ) и меняем user на свое имя пользователя - скрипт будет запускаться от указанного имени. Сохраняемся, выходим из редактора. Дадим скрипту права на выполнение:

Код:
sudo chmod +x rtorrentInit.sh


Затем:

Код:
sudo update-rc.d rtorrentInit.sh defaults
sudo /etc/init.d/rtorrentInit.sh start


Готово! Теперь rtorrent будет корректно запускаться при старте системы, при выключении корректно выключаться, итп. Попасть в него можно набрав:

Код:
screen -r


При написании how-to использовались материалы:
1. Постинг http://torrents.ru/forum/viewtopic.php?t=290679# ShurShur c форума torrents.ru
2. rtorrent-WikiУчебник http://ru.wikibooks.org/wiki/RTorrent
3. Блог librarian-а http://librarian.spb.ru/page/kak-ustanovit-veb-interfejs-k-rtorrentwtorrent-rtgui-dubl-2
4. Сайт разработчиков http://libtorrent.rakshasa.no/
5. Блог lhav http://blog.lhav.ru/it/linux/skript-avtozapuska-rtorrent.html

источник

2 комментария: