
Предположим, что вы используете клиент BitTorrent transmission-gtk (v2.94) в системе Linux для раздачи некоторых файлов, например, ISO-образов дистрибутивов Linux и версий LibreOffice. Предположим, что базовый "Сохранить в расположение" — это: /path1/torrents
и неполный путь torrent — это /path1/torrents/incomplete
.
Теперь предположим, что вы закрыли transmission-gtk и переименовали /path1
в /path2
(и не создаете символическую ссылку со старого пути на новый).
Изменить местоположение будущих торрентов можно с помощью диалогового окна конфигурации приложения или в $HOME/.config/transmission
. Однако при этом все ранее активные торренты теперь помечаются красным цветом, а данные, предположительно, отсутствуют.
Что нужно сделать, чтобы исправить местоположения существующих торрентов (полных и неполных)? И - можно ли это как-то автоматизировать, чтобы можно было делать из командной строки (например, для файлов в $HOME/.config/transmission/resume
)?
решение1
Щелкните правой кнопкой мыши по торренту, нажмите «Установить местоположение» и выберите новый родительский каталог ( /path2/torrents
в данном случае). Вы можете сделать это для всех торрентов сразу, если они все были перемещены в один и тот же каталог.
После обновления местоположения снова щелкните правой кнопкой мыши и выберите «Проверить локальные данные», чтобы позволить Transmission повторно проверить, какие файлы/части уже загружены.
Это можно автоматизировать из CLI, но сначала включите функцию «веб-интерфейса» в Transmission, которая также позволяет использовать transmission-remote
.
Для каждого торрента запустите transmission-remote --find
с новым родительским каталогом.
Файлы в ~/.config/transmission/resume/ находятся в том же формате «Bencode», что и сами файлы .torrent, и их, вероятно, можно изменить, используя, например, Perl's Convert::Bencode или очень осторожный sed, но я не уверен, что рекомендовал бы этот метод.
Вам нужно обновить элемент «destination» в словаре верхнего уровня:
$ bencode2json < 16a3968b347a81845384394e7f1b38656aeee97a.resume | head
{
"activity-date": "1619012434",
"added-date": "1619011497",
"bandwidth-priority": "0",
"corrupt": "0",
"destination": "/home/xxx/Downloads",
"dnd": [
...
(Если вы используете прямое двоичное редактирование, обратите внимание, что строки в формате Bencode имеют префикс с длиной, которую также необходимо обновить, как 19:/home/xxx/Downloads
в этом случае.)
решение2
Дополнение к замечательному ответу @user1686: Вы можете обновить местоположение всех торрентов одновременно:
- Выберите «Все» и «Все» в строке «Показать:» (чтобы были видны все торренты).
- Нажмите Ctrl+A, чтобы выбрать все видимые торренты.
- Щелкните правой кнопкой мыши любой из выбранных торрентов.
- Выберите «Установить местоположение».
- Выберите «Другое».
- Перейдите в новую папку для торрентов (в вашем случае «/path2/torrents»).
- Выберите «Локальные данные уже есть».
- Нажмите «Применить».
- Подождите некоторое время, пока торренты обновятся.
- Когда диалоговое окно исчезнет, перезапустите transmission-gtk.
Все ваши торренты должны быть распознаны как возобновляемые. Однако вам все равно придется их возобновлять — они автоматически приостанавливаются, если данные не могут быть найдены.