Dragon
主机之家测评主机之家测评  2019-08-19 15:14 主机之家测评 隐藏边栏 |   抢沙发  161 
文章评分 0 次,平均分 0.0

手上有 VPS 的想刷 PT 的朋友可以看看,但是如果你的硬盘空间不到 50G 的话,很有可能会爆仓,今天给大家分享一个教程,可以自动刷 PT 流量的同时还可以自动删除种子。

Transmission 安装

脚本:

 

1
2
wget http://github.itzmx.com/1265578519/transmission/master/2.84/transmissionbt.sh -O transmissionbt.sh
sh transmissionbt.sh

访问地址为 http://IP:9091,默认用户名和密码均为 itzmx.com,文件下载位置:/home/transmission/Downloads/

如需修改配置,需要先暂停服务,否则修改无效。

 

1
2
service transmissiond stop
vi /home/transmission/.config/transmission/settings.json

rpc-username 帐号

rpc-password 密码

rpc-port 端口

rpc-authentication-required 是否开启使用账号密码加密访问

preallocation 需要设置为 0,这是这个办法中不会爆盘的关键。

启动 Transmission 服务:

 

1
service transmissiond start

如需卸载 Transmission:

 

1
2
3
service transmissiond stop
rm -rf /home/transmission
rm -rf /usr/share/transmission

FlexGet 安装

这是一个扩展工具,可以令 Transmission 具备 RSS 下载的功能,其实也能自动删除种子(但是我的情况比较特殊,VPS 硬盘比较小,用 FlexGet 的 clean_transmission 和 free_space 插件会有问题)。

安装编译环境:

 

1
yum install -y gcc make zlib zlib-devel readline-devel sqlite sqlite-devel openssl-devel mysql-devel gd-devel

安装 Python(一般的 VPS 系统都自带,有能力自行修改后面代码的可以不安装):

 

1
2
3
4
5
6
7
8
9
wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz
tar zxf Python-2.7.13.tgz
pushd Python-2.7.13
./configure--prefix=/root/python&&
make&&
make install&&
ln -s /root/python/bin/python2.7 /usr/local/bin/python
source ~/.bash_profile
popd

安装 pip:

 

1
2
3
wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate
/usr/local/bin/python get-pip.py
ln -s /root/python/bin/pip /usr/local/bin/pip

安装 virtualenv:

 

1
2
/usr/local/bin/pip install virtualenv
ln -s /root/python/bin/virtualenv /usr/local/bin/virtualenv

安装 FlexGet:

 

1
2
3
4
cd /root/
virtualenv /root/flexget/
/root/flexget/bin/pip install flexget
/root/flexget/bin/pip install transmissionrpc

添加 FlexGet 配置文件:

 

1
vi /root/flexget/config.yml

配置文件示例:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
tasks:
  mt:
    rss: https://tp.m-team.cc/torrentrss.php?https=1&rows=10&cat410=1&cat429=1&cat424=1&cat430=1&icat=1&isize=1&iuplder=1&linktype=dl&passkey=*****
    accept_all: yes
    content_size:
      min: 256
      max: 3072
    download: /home/transmission/torrent
    transmission:
      host: 127.0.0.1
      port: 9091
      username: user
      password: password

这个示例是我看到的教程中给的,其原文还给了 clean_transmission 和 free_space 两个插件的配置,附在上面的配置后面即可。

 

1
2
3
4
5
6
7
8
9
10
11
    clean_transmission:
      host: 127.0.0.1
      port: 9091
      username: user
      password: password
      finished_for: 6 hours
      tracker: tp.m-team.cc
      delete_files: Yes
    free_space:
      path: /home/transmission/Downloads
      space: 3072

但是我并没有使用这两个插件,原作者可能没有我这样小硬盘的 VPS。这两个插件的意思是,种子下载完成以后 6 个小时自动删除,当硬盘剩余空间小于 3G 时,不再自动添加种子。但是我的使用中,当剩余空间不足 3G 时,确实不会添加新的种子了,但是这个时候“6 小时自动删除”的设置却也无效了,因为 free_space 的优先级很高,检测到空间不足时,就会退出任务,clean_transmission 插件的任务不再执行了。所以用这个办法还是得偶尔查看一下 Transmission,当然如果你的硬盘足够大,应该是不需要考虑这个问题的,这个配置可以使用。
注意:使用这个的话,Transmission 的 preallocation 需要设置为 1。

先创建 torrent 下载的目录:

 

1
mkdir /home/transmission/torrent

执行 FlexGet:

 

1
/root/flexget/bin/flexget -c /root/flexget/config.yml execute

可以添加一个定时任务:

 

1
crontab -e

在其中加入:

 

1
*/5 * * * * /root/flexget/bin/flexget -c /root/flexget/config.yml execute

意思是,每 5 分钟执行一次。

自动清理种子脚本

自动清理种子的任务我交给了另外一个脚本来执行。

新建脚本文件:

 

1
vi /root/trans_cleanup.sh

脚本文件内容:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#! /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="username"
# The transmission remote login password
PASSWORD="password"
# The transmission download dir
DLDIR="/home/transmission/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
                [ "$i" -gt "0" ] && echo -n "$DATA_TIME [Done] " >> $LOG_PATH
                transmission-remote --auth $USERNAME:$PASSWORD -t $i --remove-and-delete >> $LOG_PATH 2>&1
                [ "$i" -gt "0" ] && sleep 10 && 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
                [ "$ii" -gt "0" ] && echo -n "$DATA_TIME [Stopped] " >> $LOG_PATH
                transmission-remote --auth $USERNAME:$PASSWORD -t $ii --remove-and-delete >> $LOG_PATH 2>&1
                [ "$ii" -gt "0" ] && sleep 10 && 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
                [ "$iii" -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
                [ "$iii" -gt "0" ] && sleep 10 && 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

 

 

 

 

 

 

 

修改好其中的用户名、密码、Transmission 下载目录和硬盘最大使用的百分比(DISK_USED_MAX=”90″)。

定时任务(crontab -e)中添加:

 

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

每分钟执行一次。

注意事项

1、因为 Transmission 下载时,没有预分配磁盘空间,因此硬盘是一点一点占用的,只要达到了设置的阈值(比如 90%),这个脚本就会清理已经完成的种子,如果空间还不够,就会清理正在下载的种子。因为脚本是每分钟执行的,所以没有硬盘塞满的风险。

2、硬盘总空间太小,就会经常需要删除旧的种子,这样一个种子的分享率可能就不高,长久下来,PT 网站的总分享率也就不高了,可以通过调节接收种子的最大体积来影响(FlexGet 配置文件中的 3072 表示最大接受 3G 的种子,超过就会被过滤,不会添加到 Transmission 中)。

3、Debian 和 Ubuntu 应该也是可以使用的,只需要自己安装好 Transmission 和 FlexGet 就行。

4、如果重启后,transmission web ui 无法连接,可能是 centos 默认的 firewall 防火墙的问题,关闭即可。

 

1
2
3
4
#停止 firewall
systemctl stop firewalld.service
#禁止 firewall 开机启动
systemctl disable firewalld.service

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

发表评论

扫一扫二维码分享