Transmissão: Livrar-se dos arquivos antigos que nunca foram removidos?

2

Eu tenho usado a transmissão para baixar vários torrents, mas de vez em quando a transmissão não remove o arquivo, mas remove o arquivo torrent.

Isso faz com que minha pasta de download esteja cheia de torrents já removidos, mas os arquivos ainda estão lá.

Qual é a melhor maneira de descobrir quais arquivos não estão vinculados a qualquer torrent carregado e removê-los?

Obrigado pelo seu tempo!

    
por Bart 02.12.2015 / 23:03

2 respostas

2

Você pode solicitar transmissão remota para obter uma lista dos arquivos que ela conhece. Existem duas opções para solicitar arquivos, --files e --info-files/-if ; o que você provavelmente precisa depende da versão que você está executando:

$ 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
⋮

Infelizmente, ele é destinado a exibição, não à análise, e parece não haver uma opção para produzir saídas compatíveis com scripts. Se você é um programador, você pode pegar a fonte e consertar isso ou, alternativamente, hackear sua própria implementação em Perl / Python / Ruby / JavaScript / etc. para obter os nomes dos arquivos. A transmissão usa um protocolo JSON-sobre-HTTP documentado e bastante simples .

Você também pode tentar --move pedir à Transmissão para mover tudo o que sabe para um novo diretório.

    
por 02.12.2015 / 23:41
2

Esta é uma pergunta antiga, mas eu tropecei nisso enquanto tentava resolver isso e imagino que os outros também possam.

Usando a resposta do derobert Eu escrevi um script bash para remover todos os arquivos que não estão listados por 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

Observe que a linha para excluir os arquivos é comentada. Eu recomendo executar o script primeiro para ver o que será excluído antes de fazer isso. Ele também excluirá quaisquer arquivos não listados em Transmission, como o diretório "Incomplete", se você mantê-lo na sua pasta de downloads.

Eu estou longe de ser um expert em bash scripting e este é um script bem lento com um grande número de torrents pois procurar pela substring com este método parece lento, fique à vontade para sugerir alternativas. Eu suspeito que ele também possa romper com nomes de arquivos incomuns.

    
por 19.06.2017 / 00:40