완료된 토렌트 Seeding 자동으로 제거하기 (feat. Transmission 도커)
안녕하세요.
최근에 서버포럼 게시글을 통해
오라클 클라우드를 이용하여 VPN 경유로 토렌트 사용하는 방법을 알게되어 성공적으로 구축을 완료하였습니다.
아래 게시글이 정말 큰 도움이 되었네요.
구축을 완료하고나서 한 가지 추가로 필요했던 부분이
다운로드가 완료된 파일의 Seeding을 자동으로 제거하는 부분이었습니다.
해당 부분의 내용을 공유하고자 글 작성합니당.
transmission 도커에는 기본적으로 다운로드가 완료된 파일의 배포를 자동으로 제거시켜주는 기능이 없습니다.
그래서 스크립트를 사용해야하는데요
스크립트는 아래와 같습니다.
# transmission 설정 정보
HOST=localhost
PORT=9091 #transmission web 포트
USER=ID #transmission 아이디
PASS=Password #transmission 패스워드
# transmission-remote로 현재 토렌트 목록 가져오기 (상태 정보 포함)
TORRENTLIST=`transmission-remote $HOST:$PORT --auth $USER:$PASS -l | sed -e '1d;$d;s/^ *//'`
# 각 토렌트에 대해 반복문 실행
while read -r line; do
# 해당 라인에서 토렌트 ID와 상태 추출하기
TORRENTID=$(echo $line | awk '{print $1}')
STATE=$(echo $line | awk '{print $9}')
# 상태가 'Seeding'이면 해당 토렌트 삭제하기 (--remove 옵션 사용)
if [ "$STATE" == "Seeding" ] || [ "$STATE" == "Paused" ] || [ "$STATE" == "Finished" ]; then
transmission-remote $HOST:$PORT --auth=$USER:$PASS -t $TORRENTID --remove
fi
done <<< "$TORRENTLIST"
이 스크립트를 파일로 저장하여 실행시켜주는게 핵심입니다.
저는 이 파일을 /volume1/docker/transmission/config/autoDelete.sh 파일로 저장하였습니다.
트랜스미션 GUI에 톱니바퀴를 눌러 설정화면에 들어가면
Execute the following script when the torrent download is complete 라는 옵션을 보실 수 있습니다.
이 옵션에 좀 전에 만든 autoDelete.sh 파일을 넣어주면
다운로드가 완료되었을 때 해당 .sh 파일이 실행되면서
다운이 완료된 후에 배포를 하지 않도록 막아줍니다.
기존 작업스케쥴러보다 이 방법이 훨씬 좋은 것 같아서 수정하였습니다.ㅎ
transmission의 설정파일인 settings.json 에 보면
"script-torrent-done-enabled": false, "script-torrent-done-filename": "" 라는 부분이 있어서
여기에 등록을 해주면 파일 다운로드가 완료되었을때 스크립트를 실행하는 기능은 있는 것 같아요.
그런데 도커로 구동을 하다보니 저 부분에 설정을 넣을 수가 없더라고요;;
설정을 반영하려면 재기동을 해야하는데 재기동하면 설정이 날아가버리더군요;;
그래서 작업 스케쥴러에 등록하여 실행해주면 문제없이 잘 실행됩니다.
아래 그림과 같이 설정하시면 5분 간격으로 완료된 파일이 있는지 확인해서 있으면 제거시켜줍니다.
사진과 완전히 똑같이 하시면 안되고 도커 ID값(5bd25~)과 파일 경로는 확인하셔서 변경해주셔야 합니다.
도커 ID값은 시놀로지 ssh 접속 후 docker ps 입력하시면 조회가 가능하며
파일 경로는 도커기준으로 경로를 작성해주셔야 합니다.
저의 경우 /volume1/docker/transmission/config 를 도커의 /config 경로에 마운트하였으므로
실제 파일위치는 /volume1/docker/transmission/config/autoDelete.sh 이지만
스크립트에는 /config/autoDelete.sh 로 입력하였습니다.
트랜스미션 소개글과함께 가이드에 포함시켜야겠네요~~
트랜스미션 도커.... 설정 들어가서
레이쇼 리밋을 0로 하면 완료 되면 시딩 중지 바로 될 건데요?
"ratio-limit": 0,
"ratio-limit-enabled": true,
원래 이런 비슷한 스크립트는 시딩멈추는 것보다는 다운로드 완료 후 목록 지우는 목적으로 많이 사용되는듯 합니다.... 텔레그램도 연동시켜 주고요....
한번 해봐야겟네요
변경해도 도커를 재시작하면 설정이 돌아가버려요ㅠ
환경변수로 설정하는 매뉴얼도 따로 안보이는데 혹시 방법이 없을까요?
안되시면 트렌스미션 설정 가셔서 아래 시딩 stop 옵션을 체크하고 값을 0으로 주시면 되니다.
json의 "ratio-limit": 0, "ratio-limit-enabled": true, 와 동일한 기능입니다.
값이 0이면 다운끝나면 시딩을 멈춥니다.
혹시 따로 접속포트나 그런게 있을까요?
다운로드 리스트나 그런거 보는 기본포트는 9091인데 여기랑은 화면이 다른 것 같아요ㅠ
제 경우 스킨이 적용되어서 ui가 다를겁니다....
화면 구석구석 보시면 셋팅이 어딘가에 있을껍니다....
암만 뒤져봐도 저 옵션은 안보이네요ㅠ
대신 GUI 상에서 다운로드 완료 시 실행할 스크립트 경로 입력하는 부분을 찾아 적용하였습니다.
작업 스케쥴러로 주기적으로 돌리는 것보다는
이 옵션으로 다운되자마자 제거하는게 더 좋네용
감사합니다.
음.... 위 스크립트를 보니 이건 시딩 멈추는 목적 스크립트가 아닌 다운로드가 완료되어 시딩 상태일때 완료된 토렌트 목록을 삭제해 주는 스크립트 입니다.
제 경우 ExpressVPN하고 같이 쓰는데 개인용도로 정리해논 위키가 있어 링크를 추가해 드립니다.
다운이 완료되면 텔레크램으로 완료 목록을 전송해주고, 트랜스미션 리스트에서 삭제해 줍니다.
위키의 손쉬운 사용항목 보시면 됩니다.
https://wiki.dhcloud.me/books/torrent-vpn-torrent
감사합니다ㅎ
환경변수에 TRANSMISSION_SCRIPT_TORRENT_DONE_FILENAME=/config/transmission-home/done.sh
위처럼 경로를 지정해두면 다운로드 완료시 확실하게 트리거 되니까요!
내용은 다르지만 아래의 내용에서 쉘 파일을 참고하셔도 됩니다.
https://svrforum.com/blog/883418?member_srl=176199
근데 GUI상에서 설정이 가능해서 환경변수로 안해도 되어보입니다.
감사합니다ㅎ
cmt alert