Торрент-клиент с разграничением скорости по трекерам [FreeBSD]
Ну, или который хотя бы можно запустить в нескольких экземплярах с разными глобальными настройками?Почти все консольные так умеют. Если азуреусу прописать жестко разные конфиг диры, то он схавает. В общем, полно.
Чтоб по трекерам различал скорость - такого не видел. Но к тому же азуреусу легко написать плугин =)
разграничения по трекерам нет, но легко запускается в нескольких экземплярах
запустить в нескольких экземплярах с разными глобальными настройками/usr/ports/net-p2p/transmission-daemon
смысл? Допустим, у торрента два трекера и всего один сидер. Оба трекера передают клиенту адрес этого сидера. На какой скорости должен качать торрент-клиент, если ты задал для этих двух трекеров разное ограничение?
ergo, на заданной
а смысл - ну, на ТПБ, скажем, незачем траффик отдавать. Гораздо выгоднее пустить его через те же долбаные торрентс.ру, к примеру. Торрент-то тот же самый
Еще попробовал поставить qBittorrent и еще чего-то, но они не встали,т.к. требовали boost, который конфликтует с boost-python (требуется для kde4)
Пока остановился на 2х экземплярах transmission-daemon+transmission-web. Не очень понятно что с шифрованием (plain? отключен ли dht...
Так же не могу понять как выбрать какие файлы из торрента скачивать и, если торрент присутствует в папке, но переименован (не как по умолчанию в торрент-файле то как скормить transmission'у переименованный файл/папку, чтобы он не качал заново.
Если кто-то может с этим помочь, то это было бы здорово.
p.s. Исходная задача ставится не потому, что на один торрент разные источники, а потому что мы с девушкой пользуемся разными трекерами и "половиним" канал
Так же не могу понять как выбрать какие файлы из торрента скачиватьtransmission-remote -t15 -G8,9
не скачивать файлы 8 и 9 в 15 закачке
а вообще man transmission-remote
Пока сделал только автозагрузку (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" и назначать права группе?
c rtorrent явно не ко мне.
ну и если он таки нужен, сохрани pid запущенного rtorrent'а, как это все делают, в /var/run, потому убивай по этому pid'у.
зачем screen? ты планируешь что-то читать за ним, а не пользоваться внешней утилитой управления?Ну, screen нужен исключительно для того, чтобы процесс фоном запускать. А какие варианты? start-stop-daemon? А чем он лучше screen'а или чем плох screen?
ну и если он таки нужен, сохрани pid запущенного rtorrent'а, как это все делают, в /var/run, потому убивай по этому pid'у.А как? $! пустую переменную возвращает...
наверное что-то вроде "screen -X" с правильной командой должно помочь
А чем он лучше 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.
А к screen зато подключиться можно. rtorrent — он всё же и интерактивное использование тоже подразумевает.
Судя по всему интерактив не особо нужен?
Ну, screen нужен исключительно для того, чтобы процесс фоном запускать.
Хммм... А что-то я порта start-stop-daemon под FreeBSD найти не могу. А он есть?
а уж остановить, надеюсь, имея pid-файл, не составит труда
Если без него, то что-то типа
cmd >/dev/null 2>&1 &
echo $! > /var/run/cmd.pid
Как вариант - воспользоваться нормальным супервизором, например runit'ом, раз уж в бзде до сих пор с rc.d сидят
Для справки - пример скрипта, который у меня поднимает transmission на сервере
#!/bin/sh
exec 2>&1
exec transmission-daemon -f
А к screen зато подключиться можно. rtorrent — он всё же и интерактивное использование тоже подразумевает.wtorrent наше фсио!
а уж остановить, надеюсь, имея 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).
и процесс остается...
Это можно пофиксить как-то?
что в этом 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);
Сижу теперь и думаю: а wtorrent как-то можно заставить понимать сокет-файл, а не хост:порт?Тока через прослойку lighttpd вроде бы
В связи с этим вопрос: А есть под фрю локальный аналог Torrent Editor'а, чтобы пасскей не светить?
прикрути к любому консольному редактору веб-морду
Тут как раз веб-морда не обязательна, можно и вполне независимую утилиту. Хотя желательно бы гуёвую (kde). Только я в описаниях net-p2p ничего не нашел...
Оставить комментарий
feliks28
А есть ли торрент-клиент, который умеет разграничивать скорость не только по отдельным торрентам/глобально, но и по трекерам? Ну, или который хотя бы можно запустить в нескольких экземплярах с разными глобальными настройками?Под FreeBSD+kde4