29 декабря 2016

Transmission: перенос торрентов.



Началось всё со сборки маленького домашнего сервера. Собрал коробку, поставил систему, поставил нужные программы и начал перетаскивать туда данные с Cubietruck. С файлами проблем не возникло, с большинством торрент-раздач в Transmission тоже, споткнулся только об раздачи, в которых были выбраны не все файлы. Откладывал их перенос очень долго, но всё же сделал его с минимальными трудозатратами.

Способ местами костыльный, полностью ручной, но всё равно действенный.

Раздача в Transmission состоит из трех основных частей:
  • Файлы, которые хранятся в указанном месте;
  • torrent-файл в каталоге с данных программы;
  • resume-файл, которых тоже хранится в каталоге данных программы.
Перед началом переноса я остановил оба клиента, чтобы они не офигели от исчезающих файлов и не перезаписали что-нибудь во время процедуры.

Сначала я примонтировал расшаренный через NFS ресурс и скопировал файлы раздачи с помощью rsync, добавив ключ "--sparse", чтобы частично загруженные файлы занимали минимум дискового пространства.


Далее необходимо скопировать torrent-файл и resume-файл в доступное место. Найти их можно по пути из параметра "--config-dir", который передаётся при запуске Transmission. У меня путь равен "/var/lib/transmission-daemon/info", а нужные файлы лежат в подкаталогах "torrents" и "resume".

Если на новом месте файлы раздачи будут лежать по другому пути, то необходимо отредактировать resume-файл. Сам файл имеет формат bencode. Я для этого использую программу BEncode Editor. Есть ещё кроссплатформенная программа Torrent File Editor, но ей я ни разу не пользовался.

Открываем файл в программе и смотрим на список значений в нём:



Надо изменить параметр "destination" на путь, по которому будет лежать переносимая раздача. Если раздача многофайловая и представляет собой каталог с файлами, то имя этого каталога в пути указывать не надо.
Ещё можно сбросить в ноль параметр "uploaded", если хочется измерять объем розданного на другой машине с нуля.

Осталось сохранить файл, перенести его и torrent-файл в соответствующие каталоги, проверить права и запустить клиент заново. Перенесённая раздача должна подхватиться.

UPD:
В новых версиях программы torrent- и resume-файлы именуются не по названию раздачи, а по хэшу. Сам принцип переноса не изменился, но искать нужные файлы стало сложнее.
Посмотреть значение хэша нужного торрента можно через web-интерфейс или с помощью клиента, например, Transmission Remote GUI.