Как я могу «исправить» состояние transmission-gtk после перемещения каталога загрузки?

Как я могу «исправить» состояние transmission-gtk после перемещения каталога загрузки?

Предположим, что вы используете клиент 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.

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

Связанный контент