跳转至内容

rTorrent

来自 ArchWiki

rTorrent 是一个快速高效的 BitTorrent 客户端,它使用并与 libTorrent(请勿与 libtorrent-rasterbar混淆)库一同开发。它用 C++ 编写,并通过 ncurses 编程库提供基于终端的用户界面。当与终端多路复用器(例如 GNU ScreenTmux)和 Secure Shell 结合使用时,它便成为了一个便捷的远程 BitTorrent 客户端

安装

安装 rtorrent 包。

配置

本文或本章节已过时。

原因:此章节(尤其是使用配置/XMLRPC 命令的部分)应重构为“新语法”,详情请参阅 此 rTorrent wiki 页面,其中包含一个有帮助的 sed 脚本。(在 Talk:RTorrent 中讨论)

在运行 rTorrent 之前,将示例配置文件 /usr/share/doc/rtorrent/rtorrent.rc 复制到 ~/.rtorrent.rc,并查看 相关的 rTorrent wiki 页面,其中包含一个*现代*的基础配置文件。

性能

注意有关此主题的更多信息,请参阅 rTorrent wiki 文章: 性能调优

以下选项的值取决于系统的硬件和互联网连接速度。

throttle.min_peers.normal.set = 40
throttle.max_peers.normal.set = 52

throttle.min_peers.seed.set = 10
throttle.max_peers.seed.set = 52

throttle.max_uploads.set = 8

throttle.global_down.max_rate.set = 200
throttle.global_up.max_rate.set = 28

pieces.hash.on_completion.set 选项会在 rTorrent 启动时执行哈希检查。它会检查已完成文件的错误。

pieces.hash.on_completion.set = yes

创建和管理文件

directory.default.set 选项将决定您的 torrent 数据将保存在哪里(可以是相对路径)

directory.default.set = ~/downloaded

session.path.set 选项允许 rTorrent 保存您的 torrent 进度。建议在主目录中创建一个目录(例如 mkdir ~/.rtorrent.session)。

session.path.set = ~/.rtorrent.session

schedule2 选项让 rTorrent 监控特定目录的新 torrent 文件。将 torrent 文件保存到该目录将自动开始下载。请记住创建要监控的目录(例如 mkdir ~/watch)。另外,使用此选项时要小心,因为 rTorrent 会将 torrent 文件移动到您的会话文件夹并将其重命名为其哈希值。

schedule2 = watch_directory,5,5,load.start=/home/user/watch/*.torrent
schedule2 = untied_directory,5,5,stop_untied=
schedule2 = tied_directory,5,5,start_tied=

以下 schedule2 选项旨在当磁盘空间不足时阻止 rTorrent 下载数据。

schedule2 = low_diskspace,5,60,((close_low_diskspace,100M))

端口配置

network.port_range.set 选项设置用于监听的端口。建议使用大于 49152 的端口(请参阅:端口号列表)。尽管 rTorrent 允许端口范围,但建议使用单个端口。

network.port_range.set = 49164-49164

此外,请确保为正确的端口启用了端口转发(请参阅:端口转发指南)。

附加设置

protocol.encryption.set 选项启用或禁用加密。启用此选项非常重要,不仅对您自己,也对 torrent swarm 中的对等方。有些用户需要向 ISP 隐藏他们的带宽使用情况。即使您不需要额外的安全措施,启用它也没有坏处。

protocol.encryption.set = allow_incoming,try_outgoing,enable_retry

还可以强制所有连接使用加密。但请注意,这个更严格的规则会降低您的客户端的可用性。

protocol.encryption.set = require,require_RC4,allow_incoming,try_outgoing

另请参阅 Wikipedia:BitTorrent 协议加密

最后一个 dht.mode.set 选项启用 DHT 支持。DHT 在公共 Tracker 中很常见,它允许客户端获取更多对等节点。

dht.mode.set = auto
dht.port.set = 6881
protocol.pex.set= yes

按键绑定

rTorrent 完全依赖键盘快捷键进行用户输入。下表提供了快速参考。rTorrent wiki 上提供了完整指南(请参阅:rTorrent 用户指南)。

注意 连续按两次 Ctrl-q 会使 rTorrent 在不发送停止公告到已连接的 Tracker 的情况下退出。
命令 动作
Ctrl-q 退出应用程序
Ctrl-s 开始下载。先运行哈希检查,除非已完成。
Ctrl-d 停止活动下载或删除已停止的下载
Ctrl-k 停止并关闭活动下载的文件。
Ctrl-r 启动 torrent 的哈希检查。如果文件不可用,则开始下载。
Ctrl-o 指定已添加但未启动的 torrent 的下载目录。
左对齐 返回上一屏幕
转到下一屏幕
Backspace 添加并启动指定的 *.torrent
回车 添加并启动指定的 *.torrent
a|s|d 增加全局上传限速约 1|5|50 KB/s
A|S|D 增加全局下载限速约 1|5|50 KB/s
z|x|c 减小全局上传限速约 1|5|50 KB/s
Z|X|C 减小全局下载限速约 1|5|50 KB/s

冗余映射

Ctrl-s 通常用于终端控制以停止屏幕输出,而 Ctrl-q 用于启动它。这些映射可能会干扰 rTorrent。检查这些终端选项是否绑定到映射。

$ stty -a
...
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
...

要删除映射,请更改终端特性以取消定义上述特殊字符(即 stopstart)。

# stty stop undef
# stty start undef

要自动删除启动时的这些映射,可以将前面的两个命令添加到您的 ~/.bashrc 文件中。

附加提示

无头服务器的 systemd 服务

此单元文件依赖于运行一个名为 rtorrent 的用户,并将 rtorrent 配置为作为守护进程运行。

创建以下文件

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

[Service]
Type=simple
User=rtorrent
Group=rtorrent
# Modify the next 2 lines to use absolute paths
ExecStartPre=-/bin/rm -f /<home>/.session/rtorrent.lock
ExecStart=/usr/bin/rtorrent
Restart=on-failure
RestartSec=3

[Install]
WantedBy=multi-user.target

用户守护进程的 systemd 服务

此单元允许多个用户或单个用户将 rtorrent 作为守护进程运行。

要使 rtorrent 在启动时启动,请启用 rtorrent@user(其中 user 是将运行 rtorrent 的用户)。

创建以下文件

/etc/systemd/system/rtorrent@.service
[Unit]
Description=rTorrent for %i
After=network.target

[Service]
Type=simple
User=%i
Group=%i
WorkingDirectory=/home/%i
# Modify the next line to the absolute path for rtorrent.lock, for example
ExecStartPre=-/bin/rm -f /home/%i/.session/rtorrent.lock
ExecStart=/usr/bin/rtorrent -o system.daemon.set=true
Restart=on-failure
RestartSec=3

[Install]
WantedBy=multi-user.target

使用 tmux 或 screen 的 systemd 服务

本文或本章节已过时。

原因: rTorrent 0.9.7+ 包含 守护进程模式。更多详情,请参阅 此问题,尤其是 此评论 关于配置语法。(在 Talk:RTorrent 中讨论)

以下服务的用法取决于服务单元的类型。

对于系统服务(在 /etc/systemd/system/ 中)

启动时启动

# systemctl enable rtorrent

手动启动

# systemctl start rtorrent

停止

# systemctl stop rtorrent

确保已创建 'rtorrent' 用户,并将其主目录设置为存放 rtorrent.rc 的位置。

对于用户服务(在 /etc/systemd/user/ 中)

$ systemctl --user enable rtorrent

手动启动

$ systemctl --user start rtorrent

停止

$ systemctl --user stop rtorrent

使用 screen

  • 作为系统服务单元
/etc/systemd/system/rtorrent.service
[Unit]
Description=rTorrent
After=network.target

[Service]
Type=forking
KillMode=none
User=rtorrent
ExecStartPre=/usr/bin/bash -c "if test -e %h/.rtorrent_session/rtorrent.lock && test -z `pidof rtorrent`; then rm -f %h/.rtorrent_session/rtorrent.lock; fi"
ExecStart=/usr/bin/screen -dmfa -S rtorrent /usr/bin/rtorrent
ExecStop=/usr/bin/bash -c "test `pidof rtorrent` && killall -w -s 2 /usr/bin/rtorrent"
WorkingDirectory=%h
Restart=on-failure

[Install]
WantedBy=multi-user.target
  • 作为用户服务单元
/etc/systemd/user/rtorrent.service
[Unit]
Description=rTorrent
After=network.target

[Service]
Type=forking
KillMode=none
ExecStart=/usr/bin/screen -dmfa -S rtorrent /usr/bin/rtorrent
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent
WorkingDirectory=%h

[Install]
WantedBy=default.target

连接到 rtorrent 的会话

screen -D -r rtorrent

分离

Ctrl-a d

使用 tmux

  • 使用独立的 tmux 服务器(崩溃时重启 rtorrent)
~/.config/systemd/user/rtorrent.service
[Unit]
Description=rtorrent
After=network.target

[Service]
Type=forking
ExecStartPre=/usr/bin/bash -c "if test -e ~/.session/rtorrent.lock && test -z `pidof rtorrent`; then rm -f ~/.session/rtorrent.lock; fi"
ExecStart=/usr/bin/tmux -L rt new-session -s rt -n rtorrent -d rtorrent 
ExecStop=/usr/bin/bash -c "/usr/bin/tmux -L rt send-keys -t rt:rtorrent.0 C-q; while pidof rtorrent > /dev/null; do echo stopping rtorrent...; sleep 1; done"
Restart=on-failure

[Install]
WantedBy=default.target
  • 使用以 rtorrent 用户身份运行的 tmux(崩溃时重启 rtorrent)
/etc/systemd/system/rtorrent.service
[Unit]
Description=rTorrent Daemon
After=network.target

[Service]
Type=forking
KillMode=none
User=rtorrent
ExecStart=/usr/bin/tmux new-session -c /mnt/storage/rtorrent -s rtorrent -n rtorrent -d rtorrent
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rtorrent C-q && while pidof rtorrent > /dev/null; do sleep 0.5; done"
WorkingDirectory=%h
Restart=on-failure

[Install]
WantedBy=multi-user.target

连接到 rtorrent 的会话

tmux -L rt attach -t rt
tmux attach -t rt

分离

Ctrl-b d

使用 dtach 的 systemd 服务文件

本文或本章节已过时。

原因: rTorrent 0.9.7+ 包含 守护进程模式。更多详情,请参阅 此问题,尤其是 此评论 关于配置语法。(在 Talk:RTorrent 中讨论)

本文或本节需要在语言、wiki 语法或风格方面进行改进。请参阅 Help:Style 获取参考。

原因: 以这种方式创建多个 rtorrent 会话远非完美,为什么我们不简单地假设只有一个会话?这在 #使用 tmux 或 screen 的 systemd 服务 中已经假设了。(在 Talk:RTorrent 中讨论)

当从 systemd 单元运行 dtach 时,必须显式设置 TERM 环境变量才能使 rtorrent 工作。

此服务文件没有重启,因为作者偶尔会将相关驱动器脱机,并且 rtorrent 在此场景下启动时会“不理想地”失败,并丢失许多 torrent 特定的设置,例如每个 torrent 存储的特定目录。实际上,启动 rtorrent 的符号链接位于相关驱动器上;如果驱动器被卸载,rtorrent 将无法启动。这种阻止 rTorrent 启动的用例与将下载文件放在可移动媒体(如 NAS、USB 或 eSATA 驱动器)上的用户相关。

~/.config/systemd/user/rtorrent.service
[Unit]
Description=rTorrent
#After=network.target

[Service]
# set TERM according to your terminal
Environment="TERM=xterm"
#Environment="TERM=linux" 
Type=forking
KillMode=none
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /home/sam/bin/rtr_new -n -o import=/home/sam/.config/rtorrent/new_.rc 
   # dtach -n <separate filename for each instance>
   # 
   # rtr_new -n to ignore the default .rtorrent.rc
   # rtr_new -o import to load the instance-specific rc
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new

[Install]
WantedBy=multi-user.target

注意此服务文件中除了 dtach 之外暴露的其他一些问题。

/home/sam/bin/rtr_new 是指向 /usr/bin/rtorrent 的符号链接

这允许我们运行多个实例,并使用不同的 ExecStop 版本独立地杀死它们,即:

ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_academic
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_other_stuff

这些都在不同的服务文件中,每个文件控制一个实例。

如果没有这一步,在运行多个实例时,killall 解决方案将杀死所有正在运行的 rtorrent 实例。

如果不需要多个 rtorrent 实例,并且 rtorrent rc 文件位于默认位置,则上述服务文件可以简化。整个文件包含在内,但只有 ExecStart 和 ExecStop 行会更改。

~/.config/systemd/user/rtorrent.service
[Unit]
Description=rTorrent
#After=network.target

[Service]
# set TERM according to your terminal
Environment="TERM=xterm"
#Environment="TERM=linux" 
# Type=forking is not required if ExecStart command is run using dtach -N (i.e dtach will run on foreground).
Type=forking
KillMode=none
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /usr/bin/rtorrent 
   # dtach -n <user specified FIFO name> -e <user specified character> /usr/bin/rtorrent 
ExecStop=/usr/bin/killall -w -s INT /usr/bin/rtorrent
   # -e (exact match) and -u (user name) were added above to stop specific processes
   #  and may be omitted here because only one rtorrent will be running

[Install]
WantedBy=multi-user.target

请注意 `ExecStart=-/usr/bin/dtach` 部分的连字符,它允许故障退出代码也表示成功终止。这很可能是因为一个当前的问题[1]。另一种选择是在服务部分使用 `SuccessExitStatus=1`。

该服务可以作为用户单元进行控制。启动后,您可以连接到该会话。

$ dtach -a  /home/sam/run/dtach_fifos/fifo -e "^T"

预分配

rTorrent 能够预先分配 torrent 的空间。主要好处是它限制并避免了文件系统的碎片化。但是,这会在预分配期间引入延迟,如果文件系统不支持 fallocate 系统调用。rTorrent 具有通过 libTorrent 库中的 `prealloc` 选项支持此功能。

因此,此选项推荐用于 xfs、ext4、btrfs 和 ocfs2 文件系统,它们具有本地 fallocate 系统调用支持。它们在预分配期间不会有延迟,也不会产生碎片文件。在其他文件系统上预分配会导致延迟,但不会使文件碎片化。

要启用它,请在您的 ~/rtorrent.rc 中添加以下内容:

~/rtorrent.rc
  # Preallocate files; reduces defragmentation on filesystems.
  system.file.allocate = 1

要在上述文件系统以外的文件系统上启用预分配(尽管会有延迟),您可以从 ABS 树重新编译 libTorrent,并添加以下新选项:

 $ ./configure --prefix=/usr --disable-debug --with-posix-fallocate

有关更多信息,请参阅 上游文档

管理已完成文件

使用监控文件夹

注意 如果您在尝试此技巧时遇到问题,请参阅 文档可能会更容易。

可以将 rtorrent 将已完成的 torrent 数据组织到特定文件夹中,具体取决于您将 *.torrent 文件放入哪个“监控”文件夹,并继续进行做种。

作为解决方案,请在您的 ~/.rtorrent.rc 中使用以下示例。请务必更改路径。

# default path for in progress downloads
directory = /home/user/torrents/incomplete

# schedule a timer event named 'watch_directory_1':
# 1) triggers 10 seconds after rtorrent starts
# 2) triggers at 10 second intervals thereafter
# 3) Upon trigger, attempt to load (and start) new *.torrent files found in /home/user/torrents/watch/
# 4) set a variable named 'custom1' with the value "/home/user/torrents/complete"
# NOTE: if you do not want it to automatically start the torrent, change 'load.start' to 'load.normal'
schedule2 = watch_directory_1,10,10,"load.start=/home/user/torrents/watch/*.torrent,d.custom1.set=/home/user/torrents/complete"

# upon completion, move content to path specified above via custom1
method.insert = d.data_path, simple, "if=(d.is_multi_file), (cat,(d.directory),/), (cat,(d.directory),/,(d.name))"
method.insert = d.move_to_complete, simple, "d.directory.set=$argument.1=; execute=mkdir,-p,$argument.1=; execute=mv,-u,$argument.0=,$argument.1=; d.save_full_session="
method.set_key = event.download.finished,move_complete,"d.move_to_complete=$d.data_path=,$d.custom1="

您可以这样添加额外的监控目录和相应的完成目录:

directory = /home/user/torrents/incomplete

schedule2 = watch_directory_1,10,10,"load.start=/home/user/torrents/watch/*.torrent,d.custom1.set=/home/user/torrents/complete"
schedule2 = watch_directory_2,10,10,"load.start=/home/user/torrents/watch/iso/*.torrent,d.custom1.set=/home/user/torrents/complete/iso"
schedule2 = watch_directory_3,10,10,"load.start=/home/user/torrents/watch/music/*.torrent,d.custom1.set=/home/user/torrents/complete/music"

method.insert = d.data_path, simple, "if=(d.is_multi_file), (cat,(d.directory),/), (cat,(d.directory),/,(d.name))"
method.insert = d.move_to_complete, simple, "d.directory.set=$argument.1=; execute=mkdir,-p,$argument.1=; execute=mv,-u,$argument.0=,$argument.1=; d.save_full_session="
method.set_key = event.download.finished,move_complete,"d.move_to_complete=$d.data_path=,$d.custom1="

您还可以为每个监控目录指定不完整的目录:

directory = /home/user/torrents/incomplete

schedule2 = watch_directory_1,10,10,"load.start=/home/user/torrents/watch/*.torrent,d.directory.set=/home/user/torrents/incomplete,d.custom1.set=/home/user/torrents/complete"
schedule2 = watch_directory_2,10,10,"load.start=/home/user/torrents/watch/iso/*.torrent,d.directory.set=/home/user/torrents/incomplete/iso,d.custom1.set=/home/user/torrents/complete/iso"
schedule2 = watch_directory_3,10,10,"load.start=/home/user/torrents/watch/music/*.torrent,d.directory.set=/home/user/torrents/incomplete/music,d.custom1.set=/home/user/torrents/complete/music"

method.insert = d.data_path, simple, "if=(d.is_multi_file), (cat,(d.directory),/), (cat,(d.directory),/,(d.name))"
method.insert = d.move_to_complete, simple, "d.directory.set=$argument.1=; execute=mkdir,-p,$argument.1=; execute=mv,-u,$argument.0=,$argument.1=; d.save_full_session="
method.set_key = event.download.finished,move_complete,"d.move_to_complete=$d.data_path=,$d.custom1="

另请参阅通过 bash 脚本完成移动,以及通过 pyrocore 的 rtcontrol(有 AUR 包)。

不使用监控文件夹

如果您希望 rtorrent 自动管理已完成文件夹的位置(按标签),请将以下内容添加到您的 rtorrent.rc 配置文件中,并根据您的环境修改路径:

# Check if destination dir is not Null
method.set_key = event.download.inserted_new,check_dest_dir, \
"branch=d.custom=storagedir,,\
 \"d.custom.set=storagedir,/path/to/download/directory\""

# Modify destination dir according to tv label
method.set_key = event.download.inserted_new,update_dest_dir_tv, \
"branch=\"equal={d.custom1=, cat=TV}\",\
 \"d.custom.set=storagedir,/path/to/tv/dir\""

# Modify destination dir according to movies label
method.set_key = event.download.inserted_new,update_dest_dir_movies, \
"branch=\"equal={d.custom1=, cat=Movies}\",\
  \"d.custom.set=storagedir,/path/to/movie/dir\""

# Move files of completed torrents
method.set_key = event.download.finished,move_completed, \
"d.directory.set=$d.custom=storagedir; \
     execute2={mv,-u,$d.base_path=,$d.custom=storagedir}"
注意 要添加更多标签,请复制第二段或第三段,将 `TV` 或 `Movies` 的每个实例替换为您的新标签。

一个用例是,如果您正在使用 ZFS 并且需要将源材料放在同一个文件系统上。rTorrent 将下载到临时的 NVMe/SSD,然后将内容移到 ZFS 文件系统,在那里 *arrs 可以处理媒体并硬链接到媒体服务器抓取的单独文件夹。

使用 Google Mail 通知

手机提供商允许您“发送电子邮件”到您的手机

Verizon: 10digitphonenumber@vtext.com
AT&T: 10digitphonenumber@txt.att.net
Former AT&T customers: 10digitphonenumber@mmode.com
Sprint: 10digitphonenumber@messaging.sprintpcs.com
T-Mobile: 10digitphonenumber@tmomail.net
Nextel: 10digitphonenumber@messaging.nextel.com
Cingular: 10digitphonenumber@cingularme.com
Virgin Mobile: 10digitphonenumber@vmobl.com
Alltel: 10digitphonenumber@alltelmessage.com OR
10digitphonenumber@message.alltel.com
CellularOne: 10digitphonenumber@mobile.celloneusa.com
Omnipoint: 10digitphonenumber@omnipointpcs.com
Qwest: 10digitphonenumber@qwestmp.com
Telus: 10digitphonenumber@msg.telus.com
Rogers Wireless: 10digitphonenumber@pcs.rogers.com
Fido: 10digitphonenumber@fido.ca
Bell Mobility: 10digitphonenumber@txt.bell.ca
Koodo Mobile: 10digitphonenumber@msg.koodomobile.com
MTS: 10digitphonenumber@text.mtsmobility.com
President's Choice: 10digitphonenumber@txt.bell.ca
Sasktel: 10digitphonenumber@sms.sasktel.com
Solo: 10digitphonenumber@txt.bell.ca
  • 安装 mailx,它由 s-nail 包提供。
  • 清空 /etc/mail.rc 文件并输入:
set sendmail="/usr/bin/mailx"
set smtp=smtp.gmail.com:587
set smtp-use-starttls
set ssl-verify=ignore
set ssl-auth=login
set smtp-auth-user=USERNAME@gmail.com
set smtp-auth-password=PASSWORD

现在要发送文本,我们必须将消息通过管道传递给 mailx 程序。

  • 制作一个 Bash 脚本
/path/to/mail.sh
echo "$@: Done" | mailx 5551234567@vtext.com

其中 $@ 是一个保存传递给脚本的所有参数的变量。

  • 最后,添加重要的 ~/.rtorrent.rc 行:
method.set_key = event.download.finished,notify_me,"execute2=/path/to/mail.sh,$d.name="

分解说明

notify_me 是命令 ID,其他命令可能也会使用它,它可以是你喜欢的任何名称,只要它是唯一的。

execute= 是 rtorrent 命令,在本例中是执行 shell 命令。

/path/to/mail.sh 是脚本的名称(或您要执行的任何命令),后跟一个逗号分隔的要传递的所有开关/参数列表。

$d.get_name= 'd' 是触发命令的任何下载的别名,get_name 是一个返回下载名称的函数,'$' 告诉 rTorrent 在调用 execute 之前用其输出来替换命令。

最终结果?当我们在上班前开始的那个 torrent,“All Live Nudibranches”完成时,我们将收到短信:

All Live Nudibranches: Done

UI 技巧

默认情况下,rTorrent 不会正确列出活动标签,请将以下行添加到您的 .rtorrent.rc 以仅显示活动 torrent:

schedule2 = filter_active,30,30,"view.filter = active,\"or={d.up.rate=,d.down.rate=}\""

然后在您的 rTorrent 客户端中按 9 查看更改。

按上传速率对做种视图进行排序,并且只显示有对等节点的 torrent:

# Sort the seeding view by the upload rate and only show torrents with peers
view.sort_current = seeding,greater=d.up.rate=
view.filter = seeding,"and=d.complete=,d.peers_connected="
view.sort_new = seeding,less=d.up.rate=
view.sort = seeding

按上传速率对完成视图进行排序:

# Sort the complete view by the upload rate
view.sort_current = complete,greater=d.up.rate=
view.filter = seeding,"and=d.complete="
view.sort_new = seeding,less=d.up.rate=
view.sort = seeding

手动向 torrent 添加 Tracker

  1. 从 rTorrent 控制台视图中选择要编辑的 torrent。
  2. Ctrl+x
  3. 如果您有四个 Tracker,请逐个键入以下行(始终先按 Ctrl+x),例如再添加四个:
d.tracker.insert="5","udp://tracker.publicbt.com:80"
d.tracker.insert="6","udp://tracker.openbittorrent.com:80"
d.tracker.insert="7","udp://tracker.istole.it:80"
d.tracker.insert="8","udp://tracker.ccc.de:80"

计划 torrent 在特定时间开始

如果您不想立即下载 torrent,而希望它稍后开始(例如,为了适应数据计划),您可以将 torrent 添加到特定目录,并告诉 rtorrent 定期检查该目录。如果存在 torrent 文件,rtorrent 将在指定时间开始下载。

# Start torrents at 1am in this directory
schedule2 = watch_start,01:00:00,24:00:00, "load.start=/home/user/torrents/offpeak/*.torrent"

rtorrent 将每 24 小时检查一次 torrents/offpeak/ 目录,如果存在 torrent 文件,将在凌晨 1 点开始下载。

故障排除

CA 证书

默认情况下,rTorrent 会与使用 HTTPS 并具有有效证书的 Tracker 一起工作。如果 HTTPS Tracker 因其具有自定义或不寻常的证书而被拒绝,您可能需要单独下载并验证它。

一旦完成,您可以通过以下方式告知 rTorrent 新证书:

$ rtorrent -o http_capath=/etc/ssl/certs/www.your-tracker.com.pem

更多信息请参见

在 rTorrent 0.8.9 及更高版本中,您可以通过设置 network.http.ssl_verify_peer.set=0network.http.ssl_verify_host.set=0 来完全禁用 HTTPS 检查,来源

锁定的目录

rTorrent 有时在崩溃或不正确关机后会锁定,并会抱怨锁定文件。

根据错误消息,名为“rtorrent.lock”的文件可以在下载目录的隐藏文件夹 .rtorrentsession 中找到并手动删除。

事件失败:返回代码错误

这通常是由 system.method.* 行中的空格引起,或者是由调用外部脚本的事件处理程序引起的,而这些脚本要么根本没有安装,要么返回非零退出代码。

对于前者,删除任何多余的空格,或者在空格是故意的时引用路径等,它就会起作用。

Web 界面

有许多基于 Web 的 rTorrent 前端;其中最活跃的包括:

注意 rTorrent 目前使用 XML-RPC for C/C++ 进行构建,这对于某些 Web 界面(例如 ruTorrent)是必需的。

XMLRPC 接口

为了使用 rTorrent 的 Web 界面,您可以将 rTorrent 配置为创建一个 Unix 套接字,然后允许 Web 服务器用户访问该套接字,通常是 http。这可以在启动时通过将以下内容添加到 .rtorrent.rc 配置文件来应用:

network.scgi.open_local = /home/user/rpc.socket
schedule = socket_facl,5,0,"execute=setfacl,-m,u:http:rwx\\,g:http:rwx,/home/user/rpc.socket"

确保将 user 更改为运行 rTorrent 的用户。set_facl 命令将在 rTorrent 完成初始化 5 秒后运行,以允许创建套接字。

有关更多信息,请参阅:使用 XMLRPC 与 rTorrent

注意 rTorrent 原生支持通过磁力链接下载 torrent。在主视图(通过启动 rTorrent 并按 1 进入)下,按 Enter。在“load.normal>”处粘贴磁力链接并再次按 Enter。这将开始下载。

如果您希望将磁力链接自动添加到您的监控文件夹,这里有一个可以实现此功能的脚本:

 #!/bin/bash
 watch_folder=~/.rtorrent/watch
 cd $watch_folder
 [[ "$1" =~ xt=urn:btih:([^&/]+) ]] || exit;
 echo "d10:magnet-uri${#1}:${1}e" > "meta-${BASH_REMATCH[1]}.torrent"

(改编自 https://blog.gonzih.me/blog/2012/02/17/how-to-use-magnet-links-with-rtorrent/)。

将其保存为 rtorrent-magnet(例如),赋予其执行权限,并将其放在 $PATH 的某个位置。然后在 Firefox 中:

  1. 在地址栏中输入 about:config 并按 Enter
  2. 右键单击:新建 > 布尔值 > 名称:network.protocol-handler.expose.magnet > 值 > false
  3. 下次单击磁力链接时,系统会询问您要用哪个应用程序打开它。选择我们刚刚创建的脚本,您就完成了。

如果您希望 xdg-open 处理此问题(如果您使用的是 Chrome 而不是 Firefox,则需要此操作;尽管 GNOME 和其他 DE 可能有自己的程序覆盖 xdg-open),则需要在 ~/.local/share/applications/rtorrent-magnet.desktop 中为 rtorrent-magnet 脚本创建桌面条目,内容如下:

 [Desktop Entry]
 Type=Application
 Name=rtorrent-magnet
 Exec=rtorrent-magnet %U
 MimeType=x-scheme-handler/magnet;
 NoDisplay=true

然后您只需要注册 mimetype:

$ xdg-mime default rtorrent-magnet.desktop x-scheme-handler/magnet

磁力链接转 torrent

您也可以使用 magnet2torrent-gitAUR 包,它会下载元数据并创建一个 torrent 文件。

如何使用

$ magnet2torrent -m <magnet link> -o [torrent file]

或者使用 aria2xclip 来处理剪贴板中的磁力链接。

$ d=$(xdg-user-dir DOWNLOAD)
$ c=$(xclip -o -selection clipboard | grep ^magnet)
$ aria2c -d "$d" --input-file <( echo "$c" ) --bt-metadata-only=true --bt-save-metadata=true

rtorrent-ps

rTorrent-PS 是 rTorrent 的一个补丁集发行版,具有 UI 增强、着色和一些附加功能。

安装

安装 rtorrent-psAUR

配置

在您的 rTorrent 配置文件中将“pyro.extended”设置为 1 以激活 rTorrent-PS 功能。

method.insert = pyro.extended, value|const, 1

请参阅 pimp-my-box 仓库中的 rtorrent-ps 模板以获取额外的配置示例。请注意,它们可能需要 PyroScope 命令行工具才能工作。

PyroScope 命令行工具

PyroScope 命令行工具 是 rTorrent 客户端的一组工具,它们与 #rtorrent-ps 补丁集配合良好。它们提供了自动化常见任务和 rTorrent 的队列管理器等功能。

请遵循官方文档进行安装和配置。请参阅 pimp-my-box 仓库中的 rtorrent-ps 模板以获取额外的配置示例。

参见

  • RTorrent/RuTorrent
  • GNU Screen
  • rTorrent 手册 - 包括对基本和高级配置的解释,一个脚本指南,以及一个(尚未)完整的命令参考,并带有自动生成的索引。
  • rtorrent(1)
  • 维基百科上的BitTorrent 客户端比较
  • rTorrent 社区 Wiki - 关于 rTorrent 和任何与 rTorrent 相关的项目(关于设置、配置、操作和开发)的公共信息场所。
  • pyrocore - rTorrent 的命令行工具集。它提供了创建和修改 torrent 文件、在不使用多个监控文件夹的情况下完成数据移动、以及通过 rTorrent 的 XML-RPC 接口批量控制下载项(搜索、开始/停止、删除带或不带其数据的项等)的命令。它还提供了一个已文档化的 Python API。
  • Linux 上 rTorrent 和 Pyroscope 的安装指南 - BitTorrent 协议和特别是 rTorrent 客户端的工具集。
  • mktorrent - 用于生成 torrent 文件的命令行应用程序,可用作 mktorrent
  • docktorrent - 使用 Docker、rTorrent 和 ruTorrent 运行一个功能齐全的 BitTorrent 设备。
  • reptyr - 另一个接管程序 TTY 的工具(它在标准存储库中)。该进程可能已开始附加到终端或 tmux、screen 或 dtach 中的套接字。
  • neercs - 一个比 reptyr 更像 screen/tmux 的工具,但与 reptyr 一样,neercs 也可以“窃取”一个可能已经连接到终端或 tmux、screen 或 dtach 中的套接字的进程。

论坛帖子