Торрент-клиент с разграничением скорости по трекерам [FreeBSD]

feliks28

А есть ли торрент-клиент, который умеет разграничивать скорость не только по отдельным торрентам/глобально, но и по трекерам? Ну, или который хотя бы можно запустить в нескольких экземплярах с разными глобальными настройками?
Под FreeBSD+kde4

katrin2201

Ну, или который хотя бы можно запустить в нескольких экземплярах с разными глобальными настройками?
Почти все консольные так умеют. Если азуреусу прописать жестко разные конфиг диры, то он схавает. В общем, полно.
Чтоб по трекерам различал скорость - такого не видел. Но к тому же азуреусу легко написать плугин =)

vel1501

rtorrent, если не влом разбираться :)
разграничения по трекерам нет, но легко запускается в нескольких экземплярах

dangerr

запустить в нескольких экземплярах с разными глобальными настройками
/usr/ports/net-p2p/transmission-daemon

Andbar

смысл? Допустим, у торрента два трекера и всего один сидер. Оба трекера передают клиенту адрес этого сидера. На какой скорости должен качать торрент-клиент, если ты задал для этих двух трекеров разное ограничение?

Marusetta

скорость локально вообще-то регулируется
ergo, на заданной
а смысл - ну, на ТПБ, скажем, незачем траффик отдавать. Гораздо выгоднее пустить его через те же долбаные торрентс.ру, к примеру. Торрент-то тот же самый

feliks28

Поставил сначала azureus, но он дюже много памяти ест, ничего кроме обновления не качает/передает, а скачав обновление начал постоянно предлагать перезагружаться, чтобы обновиться, но не обновляться... Сходу я его настроить на нормальную работу не смог - опыта маловато - и снес.
Еще попробовал поставить qBittorrent и еще чего-то, но они не встали,т.к. требовали boost, который конфликтует с boost-python (требуется для kde4)
Пока остановился на 2х экземплярах transmission-daemon+transmission-web. Не очень понятно что с шифрованием (plain? отключен ли dht...
Так же не могу понять как выбрать какие файлы из торрента скачивать и, если торрент присутствует в папке, но переименован (не как по умолчанию в торрент-файле то как скормить transmission'у переименованный файл/папку, чтобы он не качал заново.
Если кто-то может с этим помочь, то это было бы здорово.
p.s. Исходная задача ставится не потому, что на один торрент разные источники, а потому что мы с девушкой пользуемся разными трекерами и "половиним" канал

dangerr

Так же не могу понять как выбрать какие файлы из торрента скачивать
transmission-remote -t15 -G8,9
не скачивать файлы 8 и 9 в 15 закачке
а вообще man transmission-remote

feliks28

Т.к. у transmission возможности указать, что раздаваемые файлы/папки переименованы, так мною и не нашлось, то второй день настраиваю rtorrent...
Пока сделал только автозагрузку (rc.d):
#!/bin/sh
. /etc/rc.subr

rtorrent_suffix="tracker_one"
rtorrent_username="tracker.one"
name="rtorrent_${rtorrent_suffix}"
rcvar=${name}_enable
start_cmd="${name}_start"

load_rc_config $name

eval "rtorrent_${rtorrent_suffix}_start "
{
eval "su -l ${rtorrent_username} -c \"/usr/local/bin/screen -dmS ${name} /usr/local/bin/rtorrent\""
/bin/sleep .5
eval "${name}_socket=`su -l ${rtorrent_username} -c \"/bin/ls -A ~ | /usr/bin/grep rpc.socket\"`"
if eval "[ -z \"\$${name}_socket\" ]"
then
echo "Error creating socket"
fi
}

run_rc_command "$1"

Возникло несколько вопросов:
1. Как бы получше написать stop для этого скрипта? В инете нашел такой способ: 1) вытащить pid из "<директория сессии>/rtorrent.lock" ; 2) проверить не закреплен ли pid за другим процессом (это вообще нужно? такое может быть?) ; 3) kill -s INT (а почему не обычный TERM) ?
А у самого screen'а есть какая-то возможность завершить поименованную сессию? Было бы идеально, но в мане не нашел...
2. Хочу дать пользователю "www" права к сокету, создаваемому пользователем, запускающим rtorrent (user:"tracker.one"). Есть способ лучший чем создать отдельную группу для "www" и "tracker.one" и назначать права группе?

dangerr

c rtorrent явно не ко мне. :confused:

klyv

зачем screen? ты планируешь что-то читать за ним, а не пользоваться внешней утилитой управления?
ну и если он таки нужен, сохрани pid запущенного rtorrent'а, как это все делают, в /var/run, потому убивай по этому pid'у.

feliks28

зачем screen? ты планируешь что-то читать за ним, а не пользоваться внешней утилитой управления?
Ну, screen нужен исключительно для того, чтобы процесс фоном запускать. А какие варианты? start-stop-daemon? А чем он лучше screen'а или чем плох screen?
ну и если он таки нужен, сохрани pid запущенного rtorrent'а, как это все делают, в /var/run, потому убивай по этому pid'у.
А как? $! пустую переменную возвращает...

tokuchu

наверное что-то вроде "screen -X" с правильной командой должно помочь

conv3rsje

А чем он лучше screen'а или чем плох screen?
Почитай ман
Наример вот этим

-K, --stop
Checks for the existence of a specified process. If such a process exists, start-stop-daemon sends it the signal specified
by --signal, and exits with error status 0. If such a process does not exist, start-stop-daemon exits with error status 1
(0 if --oknodo is specified). If --retry is specified, then start-stop-daemon will check that the process(es) have termi‐
nated.

tokuchu

А к screen зато подключиться можно. rtorrent — он всё же и интерактивное использование тоже подразумевает.

conv3rsje


Ну, screen нужен исключительно для того, чтобы процесс фоном запускать.
Судя по всему интерактив не особо нужен?

feliks28

Хммм... А что-то я порта start-stop-daemon под FreeBSD найти не могу. А он есть?

klyv

есть просто daemon типа-встроенный.
а уж остановить, надеюсь, имея pid-файл, не составит труда

conv3rsje

А хз :) Поискал сейчас, какие-то у них проблемы с лицензиями по поводу 'advertising clause'
Если без него, то что-то типа
cmd >/dev/null 2>&1 &
echo $! > /var/run/cmd.pid

Как вариант - воспользоваться нормальным супервизором, например runit'ом, раз уж в бзде до сих пор с rc.d сидят
Для справки - пример скрипта, который у меня поднимает transmission на сервере
#!/bin/sh

exec 2>&1
exec transmission-daemon -f

AlexV769

А к screen зато подключиться можно. rtorrent — он всё же и интерактивное использование тоже подразумевает.
wtorrent наше фсио!

feliks28

а уж остановить, надеюсь, имея pid-файл, не составит труда
Хм... Честно говоря, составило (т.е. через kill `cat /var/run/rtorrent/tracker.one/rtorrent_tracker_one.pid` убивается легко, но хочется по нормальному)
Существенно изменил скрипт:
#!/bin/sh

. /etc/rc.subr

rtorrent_suffix="tracker_one"
rtorrent_username="tracker.one"
rtorrent_cd_dir="/home/trackers" # cd = config/downloads :)
name="rtorrent_${rtorrent_suffix}"
rcvar=${name}_enable

load_rc_config $name

pidfile="/var/run/rtorrent/${rtorrent_username}/${name}.pid"
command="/usr/sbin/daemon"
command_args="-p ${pidfile} -u \"${rtorrent_username}\" /usr/local/bin/rtorrent -o \"import=${rtorrent_cd_dir}/config/${rtorrent_username}/rtorrent.rc\" \
-o \"session=${rtorrent_cd_dir}/config/${rtorrent_username}/.session\" > /dev/null"

run_rc_command "$1"

Теперь:
# sysctl kern.ps_arg_cache_limit
kern.ps_arg_cache_limit: 1024[/i]
# /usr/local/etc/rc.d/rtorrent_tracker_one.sh start
Starting rtorrent_tracker_one.
# ls -l /var/run/rtorrent/tracker.one/rtorrent_tracker_one.pid
-rw------- 1 tracker.one tracker.one 4 9 ноя 01:16 /var/run/rtorrent/tracker.one/rtorrent_tracker_one.pid
# /usr/local/etc/rc.d/rtorrent_tracker_one.sh stop
rtorrent_tracker_one not running? (check /var/run/rtorrent/tracker.one/rtorrent_tracker_one.pid).

и процесс остается...
Это можно пофиксить как-то?

klyv

что в этом pid-файле? есть ли этот процесс?

feliks28

Процесс создавался (один раз, а последующие ругался, что pid-файл уже есть). В pid-файл писался просто пид процесса.
В итоге вернулся к структуре _start/_stop:
#!/bin/sh

. /etc/rc.subr

rtorrent_suffix="tracker_one"
rtorrent_username="tracker.one"
rtorrent_cd_dir="/home/torrents" # cd = config/downloads :)
name="rtorrent_${rtorrent_suffix}"
rcvar=${name}_enable
start_cmd="${name}_start"
stop_cmd="${name}_stop"
pidfile="/var/run/rtorrent/${rtorrent_username}/${name}.pid"

rtorrent_tracker_one_start
{
eval "/usr/sbin/daemon -p ${pidfile} -u \"${rtorrent_username}\" /usr/local/bin/rtorrent -n -o \"import=${rtorrent_cd_dir}/config/${rtorrent_username}/rtorrent.rc\" -o \
\"session=${rtorrent_cd_dir}/config/${rtorrent_username}/.session\" >> /dev/null" #/var/log/rtorrent.${rtorrent_username}.log"

/bin/sleep .5
eval "${name}_socket=`/bin/ls -A ${rtorrent_cd_dir}/config/${rtorrent_username} | /usr/bin/grep rpc.socket`"
if eval "[ -z \"\$${name}_socket\" ]"
then
/bin/echo "Error creating socket"
else
eval "chmod g+w ${rtorrent_cd_dir}/config/${rtorrent_username}/\$${name}_socket"
fi
}

rtorrent_tracker_one_stop
{
/bin/kill -s TERM `cat /var/run/rtorrent/${rtorrent_username}/${name}.pid`
echo "rtorrent for ${rtorrent_username} terminated."
}

load_rc_config $name
run_rc_command "$1"

Сижу теперь и думаю: а wtorrent как-то можно заставить понимать сокет-файл, а не хост:порт?
В исходниках (php) идет вызов new xmlrpc_client(RT_DIR, RT_HOST, RT_PORT);

AlexV769

Сижу теперь и думаю: а wtorrent как-то можно заставить понимать сокет-файл, а не хост:порт?
Тока через прослойку lighttpd вроде бы

feliks28

Попробовал различные веб-морды к rtorrent'у. Чтобы можно было указать, что файл/папка с торрентом переименованы - нигде не нашел...
В связи с этим вопрос: А есть под фрю локальный аналог Torrent Editor'а, чтобы пасскей не светить?

klyv

прикрути к любому консольному редактору веб-морду

feliks28

Тут как раз веб-морда не обязательна, можно и вполне независимую утилиту. Хотя желательно бы гуёвую (kde). Только я в описаниях net-p2p ничего не нашел...
Оставить комментарий
Имя или ник:
Комментарий: