トランスポートから孤児急流データを識別して削除する方法は?

トランスポートから孤児急流データを識別して削除する方法は?

さまざまな急流をダウンロードするためにTransmissionを使用してきましたが、クライアントはファイルを削除せずに代わりに急流ファイルを削除することがあります。

これにより、削除された急流がダウンロードフォルダにいっぱいになりましたが、ファイルはそのまま残りました。

現在ロードされている急流にリンクされていないファイルを見つけて削除する最良の方法は何ですか?

答え1

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スクリプトの専門家から離れています。これは、多くの急流を含むかなり遅いスクリプトです。この方法で部分文字列を検索するのは遅いように見えるので、自由に代替案を提案してください。異常なファイル名が原因で問題が発生する可能性があります。

答え2

既知のファイルのリストをTransmission-remoteに要求できます。ファイルを要求する--filesには2つのオプションがあります--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/などで独自の実装を書くことができます。ファイル名を取得します。転送を採用文書化された非常に単純なJSON-over HTTPプロトコル

--move転送について知っているすべてを新しいディレクトリに移動するように要求することもできます。

関連情報