释放小七猫的分享欲

NAS 上 BT 下载器的搭建与目录结构管理

categories: 技术 tags: NAS
@ 27/11/2025

NAS 上 BT 下载器的搭建与目录结构管理

先说说为什么我认为你至少要有一个 PT 站点。一些很方便的工具,例如 nastools 类似的,都需要认证一个 PT 站点才能使用全功能,不能使用这种方便的工具的话,就只能靠媒体服务器自己刮削或者通过 tniyMediaManger 手动刮削,还是挺麻烦的。

但不要花太多时间在 PT 上。

与上篇文章一样,这里同样以 Fedora 系统作为示例,其它系统除了包管理器不一样,不会有太大差别。

目录结构管理

以下是我目前在用的文件组织结构,PT 站点采用了缩写形式:

❯ tree -L 3
.
├── PT
│   ├── MK
│   │   ├── 电视剧
│   │   ├── 电影
│   │   ├── 纪录片
│   │   └── 综艺节目
│   ├── Others
│   │   ├── 电视剧
│   │   ├── 电影
│   │   ├── 纪录片
│   │   ├── 云盘缓存文件
│   │   └── 综艺节目
│   └── CF
│       ├── 电视剧
│       ├── 电影
│       ├── 纪录片
│       └── 综艺节目
└── Videos
    ├── MK
    │   ├── 电视剧
    │   ├── 电影
    │   ├── 纪录片 -> ../../PT/MK/纪录片
    │   └── 综艺节目 -> ../../PT/MK/综艺节目
    ├── Others
    │   ├── 电视剧
    │   ├── 电影
    │   ├── 纪录片 -> ../../PT/Others/纪录片
    │   └── 综艺节目 -> ../../PT/Others/综艺节目
    └── CF
        ├── 电视剧
        ├── 电影
        ├── 纪录片 -> ../../PT/CF/纪录片
        └── 综艺节目 -> ../../PT/CF/综艺节目

34 directories, 0 files

PT 目录下存放视频的源下载文件,按照 PT 站点进行了分类。Others 代表了从迅雷、百度、夸克等网盘或其他手段下载的视频数据,这类数据的主要特点是不用做种。

Videos 目录下存放整理后的视频文件,该目录全部由硬链接或者软链接组成,占用的磁盘空间非常少。

❯ du -sh *
1.9T    PT
214M    Videos

Videos 目录下的每个子目录都有

        ├── 纪录片 -> ../../PT/PTCafe/纪录片
        └── 综艺节目 -> ../../PT/PTCafe/综艺节目

这样的目录软链接,这主要是由于纪录片和综艺节目很难刮削导致的,为确保目录结构的统一性,就把他们软链接到 videos 目录,后续使用 Emby 等媒体服务器,就只需要映射 Videos 目录就行了,避免改动到源文件。

移除某个 PT 站点在这种目录结构下就极其容易了,先在下载器中删除种子,然后删除对应的目录就完事了。新增 PT 站点就添加对应名称文件夹即可。

tansmission

transmission 是一款 BT 下载器,资源占用比 qBittorrent 更小,可以实现上万的保种。所以有的 PT 用户会使用 qBittorrent 下载,transmission 辅种和保种。

Linux 下 transmission 的安装

不建议使用 docker 或 podman 等容器方式进行安装,如果一定要用,网络一定要选 host 模式,因为桥接模式的网络是默认没有 IPv6 的,没有 IPv6 也就意味着很多节点连不上,上传下载都会受到很大的影响。

# fedora
sudo dnf install transmission-daemon transmission-common

transmission 配置文件路径为:/var/lib/transmission/.config/transmission-daemon

❯ ls
.  ..  bandwidth-groups.json  blocklists  resume  settings.json  torrents

先停止 transmission 服务 sudo systemctl stop transmission-daemon,否则更改不会生效

修改 settings.json 中设计 rpc 的内容:

    "rpc-authentication-required": true,
    "rpc-bind-address": "0.0.0.0",
    "rpc-enabled": true,
    "rpc-host-whitelist": "",
    "rpc-host-whitelist-enabled": false,
    "rpc-password": "{5f0dd85a6934aa051d79a77a1b6d1ba03bcf0959d71KJxs6",
    "rpc-port": 9091,
    "rpc-socket-mode": "0750",
    "rpc-url": "/transmission/",
    "rpc-username": "admin",
    "rpc-whitelist": "",
    "rpc-whitelist-enabled": false,
  • “rpc-authentication-required”: true:认证必须开启
  • “rpc-host-whitelist-enabled”: false, “rpc-whitelist-enabled”: false,:关闭白名单
  • “rpc-username”,“rpc-password”:认证账户密码,更改后会自动加密

然后就可以在网页中登录 transmission 了。transmission 的功能没有 qBittorrent 丰富,一般也就改改下载路径。

对了,记得查看 peer 的端口,在防火墙中进行开放:

qBittorrent 的基本配置、文件管理及刷流

Linux 下 qBittorrent 的安装

不建议使用 docker 或 podman 等容器方式进行安装,如果一定要用,网络一定要选 host 模式,因为桥接模式的网络是默认没有 IPv6 的,没有 IPv6 也就意味着很多节点连不上,上传下载都会受到很大的影响。

包管理器安装

# debian/ubuntu
sudo apt install qbittorrent-nox
# fedora
sudo dnf install qbittorrent-nox

不会自动添加自启动,需要手动创建 service 文件 /etc/systemd/system/qbittorrent-nox.service

[Unit]
Description=qBittorrent Daemon Service
After=network.target
[Service]
User=admin
ExecStart=/usr/bin/qbittorrent-nox
ExecStop=/usr/bin/killall -w qbittorrent-nox
[Install]
WantedBy=multi-user.target

注意 User=admin 这个字段,用你自己的用户名,不要使用 root,否则下载的文件权限可能会变成 root 组,导致其他用户(包括你现在这个)无法访问。

sudo systemctl daemon-reload
sudo systemctl enable --now qbittorrent-nox

重载服务后,就可以访问 http://[ip]:8080,访问 qbittorrent 网页端了,通过

systemctl status qbittorrent-nox

获取默认的账户密码。

docker 安装

version: '3.3'
services:
  qbittorrent:
    image: linuxserver/qbittorrent:latest
    container_name: qbittorrent
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - WEBUI_PORT=8080
      - TORRENTING_PORT=6881
    volumes:
      - ./config:/config
      - ./downloads:/downloads
    network_mode: host  # 启用 host 网络模式
    # ports:
    #   - 8080:8080
    #   - 6881:6881
    #   - 6881:6881/udp
    restart: unless-stopped

注意以下几个地方,以及网络模式要用 host 模式,否则无法利用 IPv6 功能,qBittorrent 没有 IPv6 直接废掉一半。

    # 使用的用户
      - PUID=1000
      - PGID=1000
    # 将 PT 目录映射到 /downloads
      - /../PT/:/downloads

配置

下载:

如果使用 MP 一类的媒体程序,最好勾选这个扩展名,因为在”自动整理“这个功能中,会自动检测并整理媒体文件,如果不加后缀,会导致文件刚下载就被硬链接整理,如果遇到死种,需要手动删除硬链接文件,不方便。

加了后缀的话,在没下载完成之前是不会被自动整理的。

Torrent 管理模式选择“自动”,在配置好分类及下载路径后就不用手动填写保存路径了。

启用子分类开启,开启后可以将 PT 站名字作为大类,电影/电视剧/综艺节目等作为小类,便于管理。

默认保存路径,做好文件管理后基本用不上这个选项,除非还有 BT 下载需求。

连接

连接限制方面我保持了默认,但如果路由器撑不住,可以考虑降低连接数。

监听端口可以随机一个高位端口,注意让防火墙放行这个端口,否则别的用户可能连不进来。

速度

这个根据个人情况设置,共享是一件好事,但不要把这个事看得太重,毕竟分享也是为了更好地观影,是为了提升自己的使用体验,不好好配置的话,可能会出现以下情况:

  1. 白天被占用大量上传带宽,影响个人及家人网络的正常使用
  2. 上传量过大导致被运营商以 PCDN 名义限速封禁
  3. PT 站点外国人多,白天上传下载人都少
  4. 路由器 CPU 性能不够,长期高负载导致频繁断连

当出现这些情况的时候,就需要限制一下使用情况了。以上只是我个人使用过程中遇到的一些情况,仅供参考。

根据本人测试,我常用的 PT 站白天基本没流量,夜间下载上传速度直线上升。所以我根据自己的实际情况选择白天限制上传,晚上放开。

BitTorrent

分享率,PT 用户一般不会限制分享率,如果同时有 BT 下载任务可以限制一下。

主要作用是限制做种,可以参考速度部分,满足 PT 站要求就行了。

附加 tracker 的话,主要用来下载一些 BT 资源,如果只玩 PT,可以不用附加。

RSS

如果需要订阅某个站点的某部电视剧、动漫,这个功能会很有用,自动追更。

如果你觉得 30 分钟更新订阅频次太低,可以调成 10 分钟。

WebUI

主要是一些安全项,启用跨站请求伪造 (CSRF) 保护 这个选项要取消勾选,否则无法进行反向代理。当然,我这儿是直接把验证都取消了,因为我的防火墙规则非常严格。

懒得输密码的话可以勾选:

  • 对本地主机上的客户端跳过身份验证
  • 对 IP 子网白名单中的客户端跳过身份验证(例如:10.0.0.0/24,192.168.5.0/24)

左侧状态栏分类

按照 PT 站进行分类,这一块要与之前我们的目录结构相结合。

  1. 对于 PT 站 MK,新建一个 MK 大类:

如果你不会直接把视频下载到这个大类,就不用填保存路径。

  1. 在这个大类下添加小类 (子分类)

这里的话就需要填写好对应的下载路径,确保视频被下载到正确的位置。例如 /PT/MK/电影/

还有一点,我怎么快速查找属于每个站的种子呢?

直接使用 tracker 筛选即可。

qBittorrent 的迁移

qBittorrent 迁移比 transmission 复杂一些。

种子在以下文件夹 ~/.local/share/qBittorrent/BT_backup,里面包含了种子文件与状态信息。

整个 qBittorrent 的配置在 ~/.local/shar。e/qBittorrent,也可以直接备份整个文件夹。

务必将它们备份好,重新安装后覆盖还原。

但这只能恢复做种的状态,软件本身的配置还需要重新弄一遍,因此我一般不会在软件默认配置的基础上改动太多

qBittorrent Tracker 批量修改教程

不同于 rTorrent,μTorrent,Deluge,Transmission 等 PT 客户端,Qbittorrent 无法批量修改种子的 tracker,这样如果重置了自己的 passkey 或者想更改 tracker 和修改 torrent 来实现直接大批量辅种就比较繁琐了。因此这里给大家带来一个 qbittorrent tracker 批量修改教程。

一.qbittorrent 数据文件分析

其数据文件一般位于:

Windows:%localappdata%\qBittorrent

类 Unix:~/.local/share/qBittorrent

其中的子文件夹 BT_backup 就是 qBittorrent 的关键数据文件,BT_backup 文件夹里包括 .torrent 和 .fastresume 文件,并且一一对应,torrent 和.fastresume 文件的命名都根据 torrent 的 info.hash 计算出来的。比如 1e515db6d6e4759bcdb45b13d2b4f6c4389ba066.torrent 和 1e515db6d6e4759bcdb45b13d2b4f6c4389ba066.fastresume,这俩个文件对应,名字名字来源于他们的 info.hash 值 1e515db6d6e4759bcdb45b13d2b4f6c4389ba066。

.torrent

.torrent 文件结构等分析不再细说,之前有说过,编码格式为 BEncode,想具体了解请参考【高级辅种教程】教你编辑修改 torrent 文件](https://github.com/ylxb2016/PT-help)

.fastresume

.fastresume 包含着绝大部分的重要配置信息,比如添加任务时间,活跃时间,DHT 是否关闭,限速,保存文件夹位置,tracker 服务器地址等等。

通过修改.fastresume 可以实现很多功能,比如更换 passkey,比如修改文件位置等等。

我们可以用 BEncode Editor 和 torrent-file-editor 打开这个文件,如下图所示,就是 tracker 的地址,修改这里就可以更换你的 passkey。

PS:关于 BEncode

二。修改 tracker 的方法。

不算 qBittorrent 在界面里直接修改单个 tracker 的话,方法有以下 5 种,原理其实都一样。

  1. 文本编辑器
  2. sed 等文本编辑命令行工具
  3. tracker_replace.py 脚本
  4. BEncode Editor 和 torrent-file-editor 工具
  5. qbittorrent webui api

注意:以下所有操作前,请先备份好文件,复制出来后再进行修改,以防自己操作不慎,酿成大错。 另外,在各个操作系统下,这些文件是一样的,你完全可以从 linux 下复制出来,然后在 Windows 下处理好了,再还原回去;或者相反的操作。

方法一。文本编辑器——单个修改

.fastresume 也可以使用普通的记事本打开,比如我们打开 25ea1b4c79dc599233333a10852746fa93d734e2.fastresume 文件,如下所示,因为其包含了一些特殊的编码,所以文本文档并不能全部显示出来,给人一种乱码的感觉,这个和上图打开是一一对应的,只不过这是原始数据,没有软件替你解析各个含义了,想知道每一个的含义,请仔细阅读说明文档。我们这里只简单说出我们要修改的内容的位置和注意事项。 很容易看到trackersll15:http://test.com就是我们需要修改的地方,不过注意的是我们修改的时候务必小心,不要把这里的文件结构给弄坏了,这里的每一个字符都是有特色含义和定义的,我们不可以丢掉:trackers 表示 trackers 服务器地址,ll 表示还是双层 list 结构,15 表示http://test.com是 15 个字符,这里的:必不可少,这里http://test.com就是我们的 tracker,一般来说 PT 的 tracker 会包含你的 passkey 的,这里我去掉了。 所以如果我们要修改 passkey 的话,需要同时修改 2 个地方,一个是这里的 15,另外才是我们真正想修改的 tracker 地址http://test.com。如果我们要修改为https://please.passthepopcorn.me/1234567898765432123456789/announce这个包含 67 个字符的 tracker,我们就要把trackersll15:http://test.com修改为trackersll67:https://please.passthepopcorn.me/1234567898765432123456789/announce

image

方法二.sed 等文本编辑命令行工具——批量修改

方法其实就是后边的原理所在,其他的方法也都是基于此进行的修改。 想批量修改 tracker 甚至修改保种路径,就可以使用命令行工具来批量修改, 比如可以使用 sed 命令行工具,不论是 linux 还是 Windows 下,我们都可以使用这款神器进行修改, 我们使用如下的命令就可以实现 tracker 由 15 字符http://test\.com向 16 字符http://tjupt.org的修改。

sed -i 's!15:http://test\.com!16:http://tjupt.org!g' *.fastresume

注意这里的http://test\.com,因为这个.会和正则表达式里.冲突,所以要进行转义\

sed -i 's!d7zdghu......014ka9!cf24gg7b......e842f!g' *.fastresume

只替换 passkey 可以像这样

方法三.tracker_replace.py 脚本——批量修改

thanks https://github.com/Stat1cV01D/bt_trackers_replacer and golf7@Orpheus 这是一个基于 python 的脚本,请按照 python 3.5 以上版本。

将我上传的文件解压后,把 BT_backup 文件夹放与其中,路径中最好不要包含中文,请勿包含空格。 目录结构如下:
QBITTORRENT
│ libcurl.dll
│ libeay32.dll
│ ssleay32.dll
│ tracker_replace.py
│ transmission-edit.exe
│ zlib.dll│
├─BT_backup
image 用法:

python tracker_replace.py "old_tracker_url" "new_tracker_url"

比如我们要把http://test.com修改为http://tjupt.org,那么在 cmd 或者 Poweshell 中输入

python tracker_replace.py http://test.com http://tjupt.org

这样就会把 BT_backup 文件夹中的.torrent 和.fastresume 文件的 tracker 全部修改。

默认情况下change_torrent = 1, 表示同时修改 torrent,如果你不准备修改.torrent 的 tracker 或者是在非 Windows 环境下使用此脚本,请修改为change_torrent = 0 。

方法四.BEncode Editor 和 torrent-file-editor 工具——单个修改

我们使用 BEncode Editor 和 torrent-file-editor 工具直接打开.torrent 和.fastresume 文件,然后把 tracker 直接打开修改为你想修改的即可。

image

方法五。通过 qbittorrent webui api 来实现。

qbittorrent webui api 功能很强大,qbittorrent webui 能实现的功能他都可以通过命令行来实现, qbittorrent webui api 的说明文档较为详细, 具体可见: https://github.com/qbittorrent/qBittorrent/wiki/Web-API-Documentation

需要注意的是,通过 qbittorrent webui api 操作前,务必先获得登录用的 cookies,然后批量使用 Edit trackers 函数就可以了。 举例案例可参考 rachpt 大佬写的一个 AutoSeed 脚本里的 qbittorrent 设置,这里我暂时不准备展开了。 https://github.com/rachpt/AutoSeed/blob/master/qbittorrent.sh

综上,可以实现批量修改 tracker 的办法有:sed、tracker_replace.py 脚本、qbittorrent webui api。