Linux32 - Блог



LINUX32

Свобода выбирать


ArchLinux
Блог >> 2015 >> Октябрь


27.10.2015

Настройка торрент-сервера




Всем привет.

Понадобилось на днях настроить торрент-сервер для сервера (такая тавтология). В конечном итоге я хотел видеть видеть работу торрента так: он всегда работает в фоне и отслеживает определенную директорию на наличие торрент-файлов. Как только в ней появляется такой файл, торрент автоматически начинает его загружать в заранее определенную папку, удаляя при этом сам торрент-файл. Далее, после полной загрузки торрента, он удаляется из списка загруженных/раздающихся торрентов, оставляя только контент.

Забегая вперед, скажу что реализовать это мне удалось и работает все замечательно. Итак, что нужно сделать:

• Установить торрент-сервер. Я остановил свой выбор на Transmission. так как он универсален: может работать без графики и в фоне, имеет web-интерфейс:

sudo pacman -S transmission-cli


• Отредактировать конфигурационный файл transmission ~/.config/transmission. В нем нужно изменить/добавить следующие параметры:

- download-dir: "путь до папки, в которую будут загружаться торренты". Тут все понятно, указываем путь для сохранения загрузок;

- trash-original-torrent-files: "true". Эта опция отвечает за удаление торрент-файла после начала загрузки торрента;

- watch-dir-enabled: "true". Говорит transmission о том что нужно следить за указанной папкой на предмет наличия в ней торрент-файлов и автоматически загружать их, если такие файлы есть;

- watch-dir: "путь до папки, в которой находятся торрент-файлы". Это, соответственно, папка из предыдущего пункта, состояние которой transmission будет отслеживать.

Остальные опции я не изменял. Тех, кто хочет больше настроек, прошу пожаловать сюда.

• Теперь осталось только настроить автоудаление торрентов из списка после полной их загрузки. Но штатными средствами осуществить это не вышло, поэтому потанцевав немного с бубном, пришел к следующему решению: удалять торренты будет самописный скрипт, запускающийся каждую минуту.

Скрипт я назвал rm-torrents и вот его содержание:

#!/bin/sh
TORRENTLIST=`transmission-remote -l | grep "100%" | awk '{print $1}'`
for TORRENTID in $TORRENTLIST
do
transmission-remote -t $TORRENTID -r
done


Чтобы запускать скрипт каждую минуту можно воспользоваться кроном, но так как системд шагает по планете, я решил не отставать от коллектива, поэтому запускать скрипт будет таймер от системд. Запускаться он будет от вашего пользователя (не от рута), поэтому идем в папку ~/.config и создаем в ней папку systemd (если еще не создана), а в ней папку user. Далее, в этой папке создаем файл rm-torrents.service:

[Unit]
Description=Remove downloaded torrents from transmission
[Service]
ExecStart=/usr/bin/sh путь/до/rm-torrents


И файл rm-torrents.timer:

[Unit]
Description=Remove complete downloaded torrents from transmission
[Timer]
OnBootSec=1min
OnUnitActiveSec=1min
[Install]
WantedBy=timers.target


Названия файлов до точки (расширения) должны совпадать, иначе таймер не поймет какой сервис ему запускать.

Принцип работы прост: rm-torrents.timer будет каждую минуту запускать сервис rm-torrents.service, который, в свою очередь, будет запускать скрипт удаления торрентов.

Те кто считает что запускать скрипт каждую минуту это перебор могут поэкспериментировать с опцией таймера "OnUnitActiveSec=" и выставить там, например 60min. Это значит что сервис будет запускаться каждый час.

• Теперь добавим transmission в автозагрузку, но для этого немного подредактируем его системд-сервис. Так как нам нужно запускать торрент от своего пользователя, а не от рута и не от только что созданного системного пользователя transmission. Следуя вики арча, создаем папку /etc/systemd/system/transmission.service.d и в ней файл username.conf со следующим содержимым:

[Service]
User=<ваше имя пользователя>


Далее, укажем системд перечитать свои сервис файлы (так как мы внесли изменение), запустим торрент и добавим его в автозагрузку:

sudo systemctl daemon-reload
sudo systemctl start transmission
sudo systemctl enable transmission


• Добавим теперь в автозагрузку наш созданный таймер. Добавлять уже будем от обычного пользователя, без sudo:

systemctl --user daemon-reload
systemctl --user enable rm-torrents.timer


На этом настройка завершена. На собственном опыте могу сказать что такая конструкция работает исправно.

Читайте, настраивайте, делитесь впечатлениями.

Статья


Ваш комментарий:

Имя:
E-mail:
Код с картинки:
Комментарий: