Передача: избавиться от старых не удаленных файлов?

Я использую передачу для скачивания различных торрентов, но время от времени передача не удаляет файл, а удаляет файл торрента.

Это означает, что моя папка загрузки заполнена уже удаленными торрентами, но файлы все еще существуют.

Каков наилучший способ найти, какие файлы в настоящее время не связаны с каким-либо загруженным торрентом и удалить их?

Спасибо за ваше время!

2 Solutions collect form web for “Передача: избавиться от старых не удаленных файлов?”

Вы можете запросить пульт дистанционного управления для списка файлов, о которых он знает. Существует два варианта запроса файлов: --files и --info-files/-if ; который вам нужен, вероятно, зависит от версии, в которой вы работаете:

 $ transmission-remote «host» -N ~/.transmission-netrc -t all --files # or -if musopen-lossless-dvd (4 files): # Done Priority Get Size Name 0: 100% Normal Yes 8.07 GB musopen-lossless-dvd/Musopen-Lossless-DVD.zip ⋮ 

К сожалению, он предназначен для отображения, а не для синтаксического анализа, и, похоже, нет возможности сделать вывод на основе сценариев. Если вы программист, вы можете захватить источник и исправить это или, альтернативно, взломать собственную реализацию в Perl / Python / Ruby / JavaScript / etc. для получения имен файлов. Передача использует документированный, довольно простой протокол JSON-over-HTTP .

Вы также можете попробовать – --move чтобы --move передачу, чтобы переместить все, что он знает в новый каталог.

Это старый вопрос, но я наткнулся на него, пытаясь решить это, и я думаю, что другие могут тоже.

Используя ответ derobert, я написал сценарий bash, чтобы удалить все файлы, которые не перечислены transmission-remote

 #!/bin/bash # get a list of all torrents transmission-remote 2.52 transmission-remote 127.0.0.1 -t all --files > _all_torrents.tmp # all items in this directory for i in * do # is it a file or a directory if test -f "$i" -o -d "$i" then # does it NOT exist in the list of all torrent files #if [[ $all_files != *"$i"* ]] if ! grep -Fq "$i" _all_torrents.tmp then # does it not start with an underscore (my special char for files in directory not related to transmission if [[ "$i" != _* ]] then # delete them echo rm -rf \"$i\" # rm -rf "$i" fi fi fi done # clear tmp file rm _all_torrents.tmp 

Обратите внимание, что строка для фактического удаления файлов закомментирована. Я рекомендую сначала запустить сценарий, чтобы увидеть, что будет удалено, прежде чем делать это. Он также удалит все файлы, не перечисленные в разделе «Передача», например, «Неполный» каталог, если вы храните его в папке с загрузкой.

Я далек от эксперта по сценарию bash, и это довольно медленный скрипт с большим количеством торрентов, поскольку поиск подстроки с помощью этого метода кажется медленным, не стесняйтесь предлагать альтернативы. Я подозреваю, что это может сломаться и с необычными именами файлов.

  • Команда для снятия скриншота с нового файла
  • Можно ли переместить relpath в одной команде?
  • Могут ли каталоги и файлы наследовать те же разрешения, что и родительский каталог?
  • Как преобразовать файл из одного формата в другой с атрибутами файлов?
  • Как переименовать неназванные файлы с соответствующими расширениями?
  • Выгрузить определенный файл из кеша файловой системы Linux?
  • Настройка приложения по умолчанию для типов файлов через CLI?
  • Фильтрация файла журнала
  • как я могу прочитать число с файлом (магия)?
  • Дерево с именем каталога и именами файлов
  • ls -l vs ls -lL
  • Linux и Unix - лучшая ОС в мире.