Transmission 완료된 파일 이동 스크립트
최광용 Lv. 15 llllllllll 
5995 hit since 2009/05/06 23:17

전에는 C로 코딩해서 컴파일을 해서 사용했었는데, 스크립트로도 가능할듯 하여 만들어봤다. 실은 소스코드를 잘못 관리해서 지워져버렸다;; 복잡하진 않아서 금방 만들순 있지만, 새로운 것을 시도해본다는 의미로... 깔끔하지는 않지만, 흐름은 간단하다!

  1. root@DNS-323:/# cat /ffp/bin/move_complete.sh 
  2. #!/ffp/bin/bash
  3. #
  4. # move_complete.sh
  5. #
  6. # Transmission 1.5x, DNS-323
  7. #

  8. PATH=/ffp/sbin:/ffp/bin:/usr/sbin:/sbin:/usr/bin:/bin
  9. STATUS=`/ffp/bin/transmission-remote 29091 -l`

  10. LINECOUNT=`echo "$STATUS" | wc -l`

  11. # Set Seperator
  12. IFS="
  13. "
  14. I=1

  15. # Main Loop for each line
  16. for LINE in `echo "$STATUS"`
  17. do
  18.   if [ $I -gt 1 ] && [ $I -lt $LINECOUNT ]
  19.   then
  20.     # Process Line
  21.     ID=${LINE:0:4}
  22.     ID=${ID// /}
  23.     DONE=${LINE:7:3}
  24.     DONE=${DONE// /}
  25.     NAME=${LINE:70}
  26.     echo "$ID: $NAME: $DONE%"

  27.     # Check 100% complete
  28.     if [ $DONE -eq 100 ]
  29.     then
  30.       /ffp/bin/transmission-remote 29091 -t $ID -r
  31.       /ffp/bin/mv "/mnt/HD_a2/.transmission-daemon/temp/$NAME" "/mnt/HD_a2/incoming/"
  32.       echo "Complete!"
  33.     fi
  34.   fi

  35.   I=$[$I+1]
  36. done

telnet으로 DNS-323에 접속한 뒤에 위의 스크립트를 실행하면 100% 완료된 파일들을 seeding 목록에서 지우고, 완료된 파일들을 특정 디렉토리로 이동시킨다.

수동으로 실행해도 되지만, cron을 이용하면 편하다.

  1. root@DNS-323:/# crontab -l
  2. 32 2 * * * /usr/sbin/rtc -s
  3. 30 2 2 * * /usr/sbin/rtc -c
  4. 59 1 * * * /usr/sbin/daylight &
  5. 15,45 7-22 * * * /ffp/bin/move_complete.sh >> /ffp/move_complete.log

단점이라면, 다운로드를 하지 않을때도 완료된 파일을 체크하기 위해서 HDD를 깨워야된다. transmission-remote파일만 root디렉토리에 복사해두고 실행하게 하면 괜찮을런지.. 음..

참고) 당연한 얘긴데, 위의 스크립트는 본인의 환경에 맞게 값들을 변경해줘야한다.