전송에서 고아 토렌트 데이터를 식별하고 삭제하는 방법은 무엇입니까?

전송에서 고아 토렌트 데이터를 식별하고 삭제하는 방법은 무엇입니까?

다양한 토렌트를 다운받기 위해 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데도 두 가지 옵션이 있습니다 --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또한 전송에 대해 알고 있는 모든 것을 새 디렉토리로 이동하도록 요청할 수도 있습니다 .

관련 정보