rtorrent 的安装、使用

rtorrent 是什么

这是一个 PT 下载工具,和大家熟知的 utorrent、vuze、transmission 属于同类的产品。其优点 / 特点是:

  • 被广大国内外 PT 网站所接受,包括馒头、ttg、ipt 等
  • 自身仅支持 CLI,即命令行界面,对一些没有图形操作界面的系统比较友好
  • 有配套的远程控制指令,也有配套的 GUI,支持直观的用户操作
  • 支持程序控制,可以实现一定程度的自动化

不过另一方面 rtorrent 也有自己的弊端,安装较为复杂,目前稳定的 0.9.6 版本不支持后台运行等等……因此考虑使用 rtorrent 之前,请确认这个软件是否适合你。

安装

你可以点击 这里 访问 rtorrent 的 GitHub 项目。在安装介绍页面,对 rtorrent 的安装有一些介绍。

可以通过包管理工具进行安装

apt install rtorrent # Ubuntu & Debian
dnf install rtorrent # Fedora
pacman -S rtorrent # Arch
brew install rtorrent # macOS

你也可以通过 GitHub 下载源码,自行编译

./configure; make; make install

或者通过 docker 进行部署,这里就不做具体介绍了

服务配置

rtorrent 会默认读取位于 ~/.rtorrent.rc 里的配置信息,运行中获取的相关数据会保存在 ~/rtorrent 文件夹下。
rtorrent 提供了配置文件的模板,可以通过以下命令快速获取该模板,并完成基本配置的生成

curl -Ls "https://raw.githubusercontent.com/wiki/rakshasa/rtorrent/CONFIG-Template.md" \
    | sed -ne "/^######/,/^### END/p" \
    | sed -re "s:/home/USERNAME:$HOME:" >~/.rtorrent.rc
mkdir -p ~/rtorrent/

有一些常用的配置选项值得关注

# 请修改 ~/.rtorrent.rc 文件中的相关选项

# 如果希望开启 xmlrpc 远程控制,或者使用 GUI,请开启这个选项
network.scgi.open_port = 0.0.0.0:4000 # 地址设置为自己想要的地址和端口

# 取消下载完成后的强制哈希检查
pieces.hash.on_completion.set = no

# 设置下载后文件的读写权限,umask 相关知识请自行了解
system.umask.set = 0027

# 设置下载后的单个、最大文件
system.file.max_size.set = 500G

大多数配置例如分享比例设置、上传下载速度限制等等在示例配置文件中均有明确的说明,对其他配置感兴趣的同学也可以自行深入了解一下。

服务的使用

在命令行敲入 rtorrent 即可进入其命令行界面进行使用,但是这个用户操作界面不是很友好,所以我自己都没有仔细研究其操作手册,感兴趣的同学可以自行了解一下 命令行操作手册

在 0.9.7 版本之前,rtorrent 只能够运行在前台,所以为了不影响其他服务的使用,还请使用 tmux 之类的多窗口工具,关于 tmux 的使用,这里不做详细介绍。

tmux
# 进入 tmux 窗口
rtorrent # 在 tmux 窗口执行 rtorrent

在确保 rtorrent 运行的前提下,你可以使用一个 GUI 来使用服务,例如 rutorrent。
我自己使用的 GUI 是 flood,所以这里主要介绍 flood 的配置。

flood 用户界面的安装、配置与使用

开始前请确认:

  • 脑上安装了 node,需要版本 8 以上
  • rTorrent 已经运行,并且开启了 xmlrpc
# 全局安装 node-gyp
# 如果遇到问题,可以访问 https://www.npmjs.com/package/node-gyp#installation
npm install -g node-gyp
# 请先进入某个合适的路径
# 获取 flood
git clone https://github.com/Flood-UI/flood.git
cd flood
cp config.template.js config.js
# 这里请打开 config.js 把一些你认为需要的配置进行修改
# 进行安装
npm install
npm run build
# 运行
npm start

之后你可以通过 http://localhost:3000 访问 flood,这里会让你创建一个用户 / 密码,请牢记,并且设置 flood 连接的地址、端口为 rtorrent 配置文件中设置的 network.scgi.open_port

当然你也可以配置一个服务器进行转发,例如我使用的 nginx 配置文件如下

server {
    # the port your site will be served on
    listen      7678 ssl; # 使用你自己的端口,如果不使用
    # listen 7678;
    server_name nginx-flood;

    # 如果不使用 https,这一部分都可以忽略
    ssl_certificate /etc/nginx/cert/certificate.crt;
    ssl_certificate_key /etc/nginx/cert/private.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;

    charset     utf-8;
location / {
        proxy_pass http://127.0.0.1:3000; # 这里改为你自己的 flood 服务地址
    }
}

同样 flood 运行在前台,所以你可以需要另一个 tmux 进程来把 flood 包起来

开机自启动

我这里以 Ubuntu 为例进行说明,我的 配置文件如下

```shell
# /etc/systemd/system/rtorrent.service
[Unit]
Description=rTorrent System Daemon
After=network.target

[Service]
Type=forking
User=用户名
Group=用户分组名

ExecStart=/usr/bin/tmux -L rt new-session -s rt -n rt -d "/usr/bin/rtorrent -n -o import=/home/deluge/.rtorrent.rc"
ExecStop=/usr/bin/tmux kill-session -t rt

[Install]
WantedBy=multi-user.target

同理你也可以为 flood 设置开机自启动,只要修改 ExecStart 这一行的指令即可。

通过接口调用对 rtorrent 控制

rtorrent 提供了 xmlrpc 的服务能力,支持你通过接口调用的方式对 rtorrent 进行控制。
当你在 rtorrent 配置文件中设置了 network.scgi.open_port 后,你还需要设置一个服务器转发,因为这是一个 scgi 接口,不能通过 http 直接访问,我的 nginx 配置文件如下:

server {
    listen 127.0.0.1:8008; # 记得改为你自己想要的 xmlrpc 指令调用接口

    server_name ngnix-rtorrent;

    location /RPC2 {
        scgi_pass   127.0.0.1:4000; # 记得改为你自己 network.scgi.open_port 的地址
        include     scgi_params;
    }
}

你可以直接通过 xmlrpc-c 提供的命令行工具来进行 xmlrpc 的使用。

# Ubuntu 上安装 xmlrpc-c
sudo apt install libxmlrpc-c++8-dev

# 使用 xmlrpc 控制 rtorrent
## 查看可用的指令
xmlrpc localhost:8008 system.listMethods

或者你可以通过 python 来进行控制

>>> import xmlrpc.client as xc
>>> 
>>> sp = xc.ServerProxy('http://localhost:8008')
>>> sp.system.listMethods()

调试完成后,如果你希望对 rtorrent 提供的 xmlrpc 的指令有更多了解,可以参阅 这个文档。
我们以下载一个种子文件为例进行说明。

import xmlrpc.client as xc

sp = xc.ServerProxy('http://localhost:8000')
sp.load_start('http://种子文件地址 d.directory.set="下载后的地址" d.custom.set=starttime,时间戳')
# load_start 是获取种子文件后立即开始下载
# d.directory.set 是 rtorrent 提供的另一个参数,设置种子下载后的地址
# d.custom.set=starttime,时间戳 设置种子文件的添加时间

你可能感兴趣的:(实验室,网络应用)