狗仔小分队的博客

  • 服务器
    • 干货推荐
    • 教程&一键脚本
    • 特价监控
  • 实用工具
    • 小工具汇总
  • 教程
    • Ubuntu
    • Python
    • 学习
  • 福利
    • 商城
    • 薅羊毛
    • 影视&资源推荐
  1. 首页
  2. 服务器
  3. 教程&一键脚本
  4. 正文

transmission 种子自动清理 避免超出 硬盘空间

2017年12月14日 3862点热度 0人点赞 0条评论

之前的文章,记录了transmission的安装流程,以及RSS下载种子的配置

但是,RSS一直在保持添加种子状态,如果出硬盘空间,下载就会崩溃剩下不几个种子了。这里提供一个自动清理种子的脚本。

自动删除种子脚本

新建脚本文件:

vi /root/trans_cleanup.sh

内容:

#!/bin/bash
#====================================================================
# trans_cleanup.sh
#
# Copyright (c) 2011, WangYan <webmaster@wangyan.org>
# All rights reserved.
# Distributed under the GNU General Public License, version 3.0.
#
# Monitor disk space, If the Over, delete some files.
#
# See: http://wangyan.org/blog/trans_cleanup.html
#
# V0.2, since 2012-10-29
#====================================================================
 
# The transmission remote login username
USERNAME='xiaofd'
 
# The transmission remote login password
PASSWORD='xiaofd.net'
 
# The transmission download dir
DLDIR="/var/lib/transmission-daemon/downloads"
 
# The maximum allowed disk (%)
DISK_USED_MAX="90"
 
# Enable auto shutdown support (Disable=0, Enable=1)
ENABLE_AUTO_SHUTDOWN="0"
 
# Log path settings
LOG_PATH="/var/log/trans_cleanup.log"
 
# Date time format setting
DATA_TIME=$(date +"%y-%m-%d %H:%M:%S")
 
#====================================================================
 
dist_check()
{
 DISK_USED=`df -h $DLDIR | grep -v Mounted | awk '{print $5}' | cut -d '%' -f 1`
 DISK_OVER=`awk 'BEGIN{print('$DISK_USED'>'$DISK_USED_MAX')}'`
}
 
dist_check
 
if [ "$DISK_OVER" = "1" ];then
 for i in `transmission-remote --auth $USERNAME:$PASSWORD -l | grep 100% | grep Done | awk '{print $1}' | grep -v ID`
 do
 j=$(echo $i | cut -d"*" -f1)
 echo "remove $i"
 [ "$j" -gt "0" ] && echo -n "$DATA_TIME [Done] " >> $LOG_PATH
 transmission-remote --auth $USERNAME:$PASSWORD -t $i --remove-and-delete >> $LOG_PATH 2>&1
 [ "$j" -gt "0" ] && sleep 2 && dist_check
 [ "$DISK_OVER" = "0" ] && break
 done
fi
 
if [ "$DISK_OVER" = "1" ];then
 for ii in `transmission-remote --auth $USERNAME:$PASSWORD -l | grep Stopped | awk '{print $1}' | grep -v ID`
 do
 jj=$(echo $ii | cut -d"*" -f1)
 echo "remove $ii"
 [ "$jj" -gt "0" ] && echo -n "$DATA_TIME [Stopped] " >> $LOG_PATH
 transmission-remote --auth $USERNAME:$PASSWORD -t $ii --remove-and-delete >> $LOG_PATH 2>&1
 [ "$jj" -gt "0" ] && sleep 2 && dist_check
 [ "$DISK_OVER" = "0" ] && break
 done
fi
 
if [ "$DISK_OVER" = "1" ];then
 for iii in `transmission-remote --auth $USERNAME:$PASSWORD -l | grep -v Sum | awk '{print $1}' | grep -v ID`
 do
 jjj=$(echo $iii | cut -d"*" -f1)
 echo "remove $iii"
 [ "$jjj" -gt "0" ] && echo -n "$DATA_TIME [Up or Down] " >> $LOG_PATH
 transmission-remote --auth $USERNAME:$PASSWORD -t $iii --remove-and-delete >> $LOG_PATH 2>&1
 [ "$jjj" -gt "0" ] && sleep 2 && dist_check
 [ "$DISK_OVER" = "0" ] && break
 done
fi
 
if [ "$DISK_OVER" = "1" ];then
 rm -rf $DLDIR/*
fi
 
if [ "$ENABLE_AUTO_SHUTDOWN" = "1" ];then
 SHUTDOWN=1
 for STATUS in `transmission-remote --auth $USERNAME:$PASSWORD -l | awk '{print $9}'`
 do
 if [[ "$STATUS" = "Up" || "$STATUS" = "Uploading" ]];then
 SHUTDOWN=0
 fi
 done
 TASK_TOTAL=`transmission-remote --auth $USERNAME:$PASSWORD -l | grep -Ev '(ID|Sum)' | wc -l`
 if [ "$TASK_TOTAL" -gt "0" ] && [ "$SHUTDOWN" -eq "1" ];then
 echo -n "$DATA_TIME " >> $LOG_PATH
 shutdown now >> $LOG_PATH 2>&1
 fi
fi

注意替换用户名,密码,下载路径以及硬盘最大使用百分比

添加定时任务: crontab -e  每分钟执行一次

*/1 * * * * /bin/bash /root/trans_cleanup.sh

说明

脚本每分钟检测一次,当超过设定的阈值,就会按顺序清理已完成种子、正在下载种子,直到空间足够,没有塞满硬盘的风险。

FROM

哈哈,文章代码是扒来的,http://www.kalso.net/archives/781

标签: 暂无
最后更新:2017年12月16日

xiaofd

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2021 xiaofd.net. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS