rufus 25.03.2011 18:40
Скрипты — torrent tracker в домашних условиях
На хабре есть пост на эту тему "Переводим раздачу контента на BitTorrent", но там не учтено, что сервер может быть без выделенного ip и веб-сервера.Предистория //
Есть хранилище файлов, где куча папок с разными названиями и большими файлами. Юзеры задолбали звонками //не могу скачать //не докачал //не понимаем названия папок на фтп (proftpd),
надо было срочно искать решение этим проблемам, кто то советовал поднять DC++ // это не удобно //, решение было только одно - торренты...
Рассмотри самую простую схему создания торрент-трекера.
нам понадобится:
ctorrent --сам клиент
ctcs --CTorrent Control Server для мониторинга раздачи файлов
OpenBitTorrent --для идексации сидов и личеров
Настраиваем cron таким образом:
1 0-23 * * * root /путь/до/скрипта/tor.sh > log.tor // каждый час и минуту запускать скрипт
Так мы получаем такую систему --> при создании торрента и передачи его клиенту указывается путь где лежат исходники, клиент проверяет их и начинает раздавать, так мы становимся первыми сиддерами.
Для автозапуска после перезагрузки можно прописать в /etc/rc.local
а мне больше нравится 1023! каждый час сидирование торрента завершается, скрипт запускает все заново // новые файлы могут появится в течении часа как пирожки
> log.tor
Кстати, тогда лог будет перетираться каждый час. Две галки нужно.
А причем тут торрент трекер?
Скрипт не торрент трекера, а раздавальщика файлов. Торрент трекер тут http;//openbittorrent.kg.
BitTorrent-трекер — веб-сервер, осуществляющий координацию клиентов BitTorrent.
Трекер «связывает» клиентов друг с другом, но напрямую не участвует в обмене раздаваемых файлов. Более того, трекер не имеет никакой информации об этих файлах, поскольку клиенты только сообщают ему инфохеш
.ВикипедияТрекер «связывает» клиентов друг с другом, но напрямую не участвует в обмене раздаваемых файлов. Более того, трекер не имеет никакой информации об этих файлах, поскольку клиенты только сообщают ему инфохеш
Скрипт не торрент трекера, а раздавальщика файлов. Торрент трекер тут http;//openbittorrent.kg.
Или я не так читаю или не так понимаю.
Правильно ли я понимаю, что эта конструкция позволяет указать директорию из содержимого которой создастся торрент файл который можно отдать другому и он себе скачает содержимое директории через торрент?
Правильно ли я понимаю, что эта конструкция позволяет указать директорию из содержимого которой создастся торрент файл который можно отдать другому и он себе скачает содержимое директории через торрент?
спс. пытался с другими клиентами настроить работу, но как то коряво очень.
если интересно:
#rtorrent
#rtorrent -d $k -s ./get $k.torrent
#ctorrent
#ctorrent -t -u "http://tracker.openbittorrent.kg:2710/announce" -s $k.torrent $k && ctorrent -d -S localhost:2780 $k.torrent
#./ctcs >> l.log&
#transmission
#transmissioncli -n $i -a "http://tracker.openbittorrent.com/announce" $k.torrent &&transmission-remote -n 1:1 -a $k.torrent -w $i
если интересно:
#rtorrent
#rtorrent -d $k -s ./get $k.torrent
#ctorrent
#ctorrent -t -u "http://tracker.openbittorrent.kg:2710/announce" -s $k.torrent $k && ctorrent -d -S localhost:2780 $k.torrent
#./ctcs >> l.log&
#transmission
#transmissioncli -n $i -a "http://tracker.openbittorrent.com/announce" $k.torrent &&transmission-remote -n 1:1 -a $k.torrent -w $i
Какая же там трабла то? О_о если этот скрипт просто генерит торрент для раздачи, выкладывает его и добовляет в торрент-клиент на этой же машине для раздачи, то я не вижу никакой проблемы.
проблема с добавлением пути скачивания файла, идет смещение путей и он не скачивает
Господи, да всё там в порядке. Вот скриптец, который создаёт торрент из указанной папки и добавляет его на раздачу в трансмишн:
В твоей конкретной строчке нужно заменить -w $i на
-w "$(dirname $(readlink -f $i))"
Минусы — это прекрасно, однако эта тема — не холивар, так что прошу обоснования.
они
Эти...Как их...Линуксоиды, во!
Тут и пилить нечего. Стоит вытащить всё, что кастомизуется в шапку скрипта и сделать переменными. А то сейчас нужно весь скрипт посмотреть и все пути поправить под себя. Ну и совсем круто - научить скрипт есть параметры командной строки.
найти человека хорошо знающего пёрл и добавить функционала в ctcs --CTorrent Control Server
А ты можешь сделать все описанные тобой действия? Мне и думаю не только мне очень бы пригодился такой скрипт =)
Вот:
#!/bin/bash
WHEREFINDEXP="find /где/искать/ -name ready\* -type d" # Выражение для поиска. Искать можно как файлы так и КАТАЛОГИ (если файлы то убираем --type d)
TORRENTPATH="/var/torrents/" #Куда кладём торренты
CTCSPATH="/путь/до/скрипта/ctcs"
fil=`$WHEREFIND`
for k in $fil
do
if < `dirname $k` >; then #Проверка что это действительно КАТАЛОГ (для файла filename $k)
if < -f $TORRENTPATH`basename $k`.torrent >; then # проверка на уже существующие torrent файлы
echo "torrent added"
ctorrent -d -s $k -e 1 -S localhost:2780 /home/www/get/$(basename $k).torrent # Добавляем существующие на раздачу (раздовать будет -e 1 час)
else
echo "torrents made and added"
# Создаем и отправляем на раздачу
ctorrent -t -u "http://tracker.openbittorrent.kg:2710/announce" -s $k.torrent $k
ctorrent -d -s $k -e 1 -S localhost:2780 $k.torrent
chmod 777 $k.torrent
mv $k.torrent $TORRENTPATH`basename $k`.torrent # Так как торрент файл создается рядом с исходным файлом, перемещаем его в отдельный КАТАЛОГ
fi
fi
done
$CTCSPATH >> ctcs.log& # Запускаем сам монитор на localhost:2780
exit 0
Спойлер испортил форматирование. В файле должно нормально смотреться.
А можешь это всё сделать для трансмишн?
Вот тут http://welinux.ru/post/5346/#cmnt101572 он сам пытался.
Вот тут http://welinux.ru/post/5346/#cmnt101572 он сам пытался.
Искать можно как файлы так и КАТАЛОГИ (если файлы то убираем --type d)
Да ты что?
if [ `dirname $k` ]; then #Проверка что это действительно КАТАЛОГ (для файла filename $k)
Эта строчка вообще-то отдаёт каталог, в котором содержится файл, а точнее программа принимает путь к файлу/каталогу и печатает родительский для последнего объекта каталог. Алсо
Это как-то связано с возможными коллапсами при выполнении в 00.00?
Ну и, по-моему, в данном случае "0-23" равнозначно "*", но звёздочка как-то очевидней смотрится.