Files

傳輸:擺脫舊的從未刪除的文件?

  • February 12, 2021

我一直在使用傳輸下載各種種子,但偶爾傳輸不會刪除文件而是刪除種子文件。

這使得我的下載文件夾充滿了已刪除的種子,但文件仍然存在。

找到哪些文件目前未連結到任何載入的種子並將其刪除的最佳方法是什麼?

謝謝你的時間!

您可以向傳輸遠端請求它知道的文件列表。請求文件有兩個選項,--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要求傳輸將它知道的所有內容移動到新目錄。

使用 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 腳本專家,這是一個相當慢的腳本,包含大量種子,因為使用這種方法搜尋子字元串似乎很慢,請隨時提出替代方案。我懷疑它也可能會因不尋常的文件名而中斷。

引用自:https://unix.stackexchange.com/questions/246977