트랜스미션에 다음과 같은 설정 항목이 있습니다.
해당 설정은 다운로드가 완료되면 지정 스크립트를 실행할지 여부를 결정하는 것인데, 다운로드가 완료된 항목을 삭제하는 스크립트를 작성한다면 우리 일 잘하는 트랜스미션이 다운로드 리스트에서 알아서 삭제해 줄 겁니다.
자동 삭제 스크립트
흠... 근데 다운로드가 완료된 것을 어떻게 알죠?
구글링해보면 먼저 고민하고 방법을 찾은 능력자분들이 분명 있을 겁니다.
"transmission auto remove"라는 문장으로 구글링해보니 아래와 같이 github에 작성된 스크립트가 보입니다.
아래와 같은 경로에 자동 삭제 스크립트를 생성해봅시다.
/etc/transmission-daemon/remove_finished.sh
[sudo] password for userid:
root@vu1804:/home/userid# cd /etc/transmission-daemon/
root@vu1804:/etc/transmission-daemon# ll
total 28
drwxrwsr-x 2 root debian-transmission 4096 Aug 29 17:09 ./
drwxr-xr-x 123 root root 12288 Aug 29 17:02 ../
-rw-r--r-- 1 root root 303 Jan 19 2018 README.json
-rw------- 1 debian-transmission debian-transmission 2468 Aug 29 17:09 settings.json
root@vu1804:/etc/transmission-daemon# vi remove_finished.sh
그리고 위에 링크에 있는 스크립트를 복사해서 붙여 넣어주세요.
여기서 주의할 점은 "Server string"관련 내용에 자신의 서버 정보를 수정해 줘야 합니다.
host는 127.0.0.1 혹은 nas의 ip 주소를 입력하면 됩니다.
[ remove_finished.sh]-----------------------------------------------------------------------------
#transmission_remove_finished.sh
#출처: https://gist.github.com/pawelszydlo/e2e1fc424f2c9d306f3a
#!/bin/bash
# Clears finished downloads from Transmission.
# Version: 1.1
#
# Newest version can always be found at:
# https://gist.github.com/pawelszydlo/e2e1fc424f2c9d306f3a
#
# Server string is resolved in this order:
# 1. TRANSMISSION_SERVER environment variable
# 2. Parameters passed to this script
# 3. Hardcoded string in this script (see below).
# Server string: "host:port --auth username:password"
SERVER="127.0.0.1:9091 --auth user:password"
# Which torrent states should be removed at 100% progress.
DONE_STATES=("Seeding" "Stopped" "Finished" "Idle")
# Get the final server string to use.
if [[ -n "$TRANSMISSION_SERVER" ]]; then
echo -n "Using server string from the environment: "
SERVER="$TRANSMISSION_SERVER"
elif [[ "$#" -gt 0 ]]; then
echo -n "Using server string passed through parameters: "
SERVER="$*"
else
echo -n "Using hardcoded server string: "a
fi
echo "${SERVER: : 10}(...)" # Truncate to not print auth.
# Use transmission-remote to get the torrent list from transmission-remote.
TORRENT_LIST=$(transmission-remote $SERVER --list | sed -e '1d' -e '$d' | awk '{print $1}' | sed -e 's/[^0-9]*//g')
# Iterate through the torrents.
for TORRENT_ID in $TORRENT_LIST
do
INFO=$(transmission-remote $SERVER --torrent "$TORRENT_ID" --info)
echo -e "Processing #$TORRENT_ID: \"$(echo "$INFO" | sed -n 's/.*Name: \(.*\)/\1/p')\"..."
# To see the full torrent info, uncomment the following line.
# echo "$INFO"
PROGRESS=$(echo "$INFO" | sed -n 's/.*Percent Done: \(.*\)%.*/\1/p')
STATE=$(echo "$INFO" | sed -n 's/.*State: \(.*\)/\1/p')
# If the torrent is 100% done and the state is one of the done states.
if [[ "$PROGRESS" == "100" ]] && [[ "${DONE_STATES[@]}" =~ "$STATE" ]]; then
echo "Torrent #$TORRENT_ID is done. Removing torrent from list."
transmission-remote $SERVER --torrent "$TORRENT_ID" --remove
else
echo "Torrent #$TORRENT_ID is $PROGRESS% done with state \"$STATE\". Ignoring."
fi
done
-------------------------------------------------------------------------------------------------------------------------------
Script to clear finished torrents from transmission-daemon
Script to clear finished torrents from transmission-daemon - transmission_remove_finished.sh
gist.github.com
편집이 끝났다면 저장하고 편집기를 종료해 주세요.
그리고 스크립트의 소유자와 퍼미션을 변경해 줍니다.
소유자와 소유자 그룹은 "debian-transmission"으로 퍼미션은 770으로 설정합니다.
root@vu1804:/etc/transmission-daemon# chown debian-transmission.debian-transmission remove_finished.sh
root@vu1804:/etc/transmission-daemon# chmod 770 remove_finished.sh
root@vu1804:/etc/transmission-daemon# ll
total 28
drwxrwsr-x 2 root debian-transmission 4096 Aug 29 17:09 ./
drwxr-xr-x 123 root root 12288 Aug 29 17:02 ../
-rw-r--r-- 1 root root 303 Jan 19 2018 README.json
-rwxrwx--- 1 debian-transmission debian-transmission 2017 Aug 29 17:46 remove_finished.sh*
-rw------- 1 debian-transmission debian-transmission 2468 Aug 29 17:09 settings.json
remove_finished.sh 스크립트가 제대로 동작하는지 확인해봅시다.
우선 필자는 다운로드 완료된 항목이 하나 있습니다.

터미널에서 아래와 같이 스크립트를 실행하고 다운로드 리스트에서 삭제되었나 확인해봅시다.
root@vu1804:/etc/transmission-daemon# ./remove_finished.sh
Using hardcoded server string: 127.0.0.1:(...)
Processing #1: "ubuntu-20.04.1-live-server-amd64.iso"...
Torrent #1 is done. Removing torrent from list.
127.0.0.1:9091/transmission/rpc/ responded: "success"

오~ 다운로드 리스트에 있던 항목이 삭제되었네요.
잘 동작되는 것 같습니다.
트랜스미션 설정
그렇다면 트랜스미션(Transmission) 설정 파일을 편집하여 다운로드가 완료되면 위에 스크립트를 실행하도록 설정합시다.
늘 말씀드리는 것이지요? 트랜스미션은 설정 파일을 편집하기 전에 데몬을 중지시켜야 합니다.
root@vu1804:/etc/transmission-daemon# service transmission-daemon stop
root@vu1804:/etc/transmission-daemon# vi settings.json
-중략-
"script-torrent-done-enabled": true,
"script-torrent-done-filename": "/etc/transmission-daemon/remove_finished.sh",
-중략-
root@vu1804:/etc/transmission-daemon# service transmission-daemon start
다운로드가 완료되면 "/etc/transmission-daemon/remove_finished.sh"가 실행되도록 설정을 마쳤습니다.