rTorrent
rTorrent 是一个快速高效的 BitTorrent 客户端,它使用并与 libTorrent(请勿与 libtorrent-rasterbar混淆)库一同开发。它用 C++ 编写,并通过 ncurses 编程库提供基于终端的用户界面。当与终端多路复用器(例如 GNU Screen 或 Tmux)和 Secure Shell 结合使用时,它便成为了一个便捷的远程 BitTorrent 客户端。
安装
配置
- 有关此主题的更多信息,请参阅 rTorrent wiki 文章: rTorrent 中的常见任务(面向新手)。
- Vim 可能会误判配置文件语法,导致高亮显示错误。要解决此问题,您可以将模型行
# vim: set filetype=conf添加到~/.rtorrent.rc,或安装 rtorrent-syntax-file。
在运行 rTorrent 之前,将示例配置文件 /usr/share/doc/rtorrent/rtorrent.rc 复制到 ~/.rtorrent.rc,并查看 相关的 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; ...
要删除映射,请更改终端特性以取消定义上述特殊字符(即 stop 和 start)。
# 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 服务
以下服务的用法取决于服务单元的类型。
对于系统服务(在 /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 服务文件
当从 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}"
一个用例是,如果您正在使用 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
- 从 rTorrent 控制台视图中选择要编辑的 torrent。
- 按
Ctrl+x。 - 如果您有四个 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 + SSL 指南 下载和验证新 HTTPS 证书的完整说明。
- rTorrent 错误 & CA 证书
- rTorrent 证书问题
- rtorrent 设置
在 rTorrent 0.8.9 及更高版本中,您可以通过设置 network.http.ssl_verify_peer.set=0 和 network.http.ssl_verify_host.set=0 来完全禁用 HTTPS 检查,来源。
锁定的目录
rTorrent 有时在崩溃或不正确关机后会锁定,并会抱怨锁定文件。
根据错误消息,名为“rtorrent.lock”的文件可以在下载目录的隐藏文件夹 .rtorrentsession 中找到并手动删除。
事件失败:返回代码错误
这通常是由 system.method.* 行中的空格引起,或者是由调用外部脚本的事件处理程序引起的,而这些脚本要么根本没有安装,要么返回非零退出代码。
对于前者,删除任何多余的空格,或者在空格是故意的时引用路径等,它就会起作用。
Web 界面
有许多基于 Web 的 rTorrent 前端;其中最活跃的包括:
- ruTorrent - 界面与 μTorrent 非常相似,并支持许多插件和高级功能(另请参阅:RTorrent/RuTorrent 和 论坛上的指南)。
- Flood - 现代界面,使用 Node.js 和 XMLRPC 编写。
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。
将磁力链接保存为监控文件夹中的 torrent 文件
如果您希望将磁力链接自动添加到您的监控文件夹,这里有一个可以实现此功能的脚本:
#!/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 中:
- 在地址栏中输入
about:config并按Enter。 - 右键单击:新建 > 布尔值 > 名称:network.protocol-handler.expose.magnet > 值 > false。
- 下次单击磁力链接时,系统会询问您要用哪个应用程序打开它。选择我们刚刚创建的脚本,您就完成了。
如果您希望 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]
或者使用 aria2 和 xclip 来处理剪贴板中的磁力链接。
$ 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 中的套接字的进程。
论坛帖子
- 2009-03-11 - Arch Linux - HOWTO:Conky 中的 rTorrent 统计信息