Понадобилось на днях настроить torrent-сервер для сервера в Linux. В конечном итоге я хотел видеть видеть работу torrentа так: он всегда работает в фоне и отслеживает определенную директорию на наличие torrent-файлов. Как только в ней появляется такой файл, torrent автоматически начинает его загружать в заранее определенную папку, ликвидируя при этом сам torrent-файл. Далее, после полной загрузки torrentа, он удаляется из списка наполненных/раздающихся torrentов, оставляя только контент. Забегая вперед, скажу что реализовать это мне вышло и работает все замечательно. Итак, что нужно сделать:
• Установить torrent-сервер. Я остановил собственный подбор на Transmission. так как он универсален: может работать без графики и в фоне, имеет web-интерфейс:
sudo pacman - S transmission-cli
• Отредактировать конфигурационный файл transmission ~/.config/transmission. В нем нужно изменить/добавить следующие параметры:
— download-dir: «путь до папки, в которую станут загружаться torrentы». Тут все ясно, указываем путь для сохранения загрузок;
— trash-original-torrent-files: «true». Эта функция отвечает за удаление torrent-файла после приступила загрузки torrentа;
— watch-dir-enabled: «true». Сообщает transmission о том что нужно следить за указанной папкой на объект наличия в ней torrent-файлов и автоматически занимать их, если такие файлы есть;
— watch-dir: «путь до папки, в какой ищутся torrent-файлы». Это, соответственно, папка (Папка — канцелярская принадлежность, обложка, конверт для бумаг, папка.Папка-регистратор — канцелярская папка с арочным механизмом для хранения документов.Папка — экранный предмет в) из предыдущего пункта, состояние которой transmission станет отслеживать.
Остальные опции я не менял. Тех, кто хочет больше настроек, прошу пожаловать семо.
• Теперь осталось лишь настроить автоудаление torrentов из списка после полной их загрузки. Но настоящими средствами реализовать это не вышло, поэтому потанцевав немного с бубном, пришел к следующему заключению: удалять torrentы станет самописный скрипт, запускающийся каждую минуту.
Скрипт я наименовал 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, который, в свою очередь, будет запускать скрипт удаления torrentов.
Те кто считает что запускать скрипт каждую минуту это перебор могут поэкспериментировать с предназначением таймера «OnUnitActiveSec=» и выставить там, например 60min. Это значит что сервис будет запускаться любой час.
• Сейчас добавим transmission в автозагрузку, но для этого немного подредактируем его системд-сервис. Так как нам нужно бросать torrent от собственного пользователя, а не от рута и не от только что созданного системного пользователя transmission. Вытекая вики арча, творим папку /etc/systemd/system/transmission. service. d и в ней файл username. conf со последующим охватываемым:
[Service]
User=
Далее, укажем системд перечитать свои сервис компданные (так как мы вписали изменение), запустим torrent и добавим его в автозагрузку:
sudo systemctl daemon-reload
sudo systemctl start transmission
sudo systemctl enable transmission
• Добавим теперь в автозагрузку наш созданный таймер. Добавлять уже будем от обычного пользователя, без sudo:
systemctl --user daemon-reload
systemctl --user enable rm-torrents. timer

