破坏性改动不标明也是挺离谱的。
去年组了个 NAS 用来存东西,装的 TrueNAS SCALE。官方提供了基于 K3S 的 Apps 功能,可以跑 Docker 镜像玩。于是乎为了追番,挂了个 qBittorrent 来下种子。
最开始都挺好的,但最近发现 Apps 里检测不到 qBittorrent 更新了。具体表现是,在已安装里的 Upgrade 是灰色不可点的,但在可用程序里又能找到更新的一个版本。就像下面这样:
其实从图里就能看到端倪,但我还是查了好久才搞懂为什么。注意到每一个 App 左边会有两个标识,Truenas 代表 Catalog,Charts 和 Community 代表 Train。所谓 Train 是 TrueNAS 里的一个概念,可以理解为分支或者是频道。根据官方论坛里这篇帖子,从 22.12.2 版本开始,原有的 Train 会被细化为 Official 和 Community 两种。qBittorrent 被分到了 Community 里,因此软件源里和本地安装的 App 的 Train 就不再一致,导致无法检查到更新。
蛋疼的是,TrueNAS 并不支持更改已安装 App 的 Train,这也就意味着要么不更新,要么就另起一个新的 App。由于之前 qBittorrent 爆出来一个 Web UI 列目录的漏洞,所以为了安全还是需要升级一下。那么就需要想办法迁移一下数据。
qBittorrent 在各个平台上的配置文件都是一样的,这里列一下主要的结构:
qBittorrent │ categories.json │ ipc-socket │ lockfile │ qBittorrent-data.conf │ qBittorrent.conf │ watched_folders.json │ ├─BT_backup │ ba01f64ab2c993fd88d30a39ef685b7e13578354.torrent │ 06e03a7ee4104d170a16ef37ba9b820c350703cc.fastresume │ queue │ ├─GeoDB │ ... │ ├─logs │ ... │ ├─nova3 │ ... │ └─rss │ download_rules.json │ feeds.json │ └─articles ...
categories.json
存储了用户创建的种子分类,qBittorrent.conf
存储了程序设置,BT_backup
文件夹存储了所有添加的种子,并记录了下载和做种进度,rss
文件夹里有和 RSS 相关的配置,其中 download_rules.json
是配置好的自动下载规则,feeds.json
是添加的 RSS 源列表。
上面提到的是迁移过程中比较关键的,剩下的应该可以忽略。
首先停止旧的 qBittorrent App,不停也行,记下 Application Name(本文以 qbittorent
为例)、Web UI 端口号和 BT 端口号,这几项可以点 App 的 Edit 找到。然后创建新的 qBittorrent App,端口号和旧的保持一致,同样记下 Application Name(本文以 qbittorrent
为例,比上面多一个 t
)。创建完毕之后停止新的 App(这里必须停,否则无法覆盖文件),然后连上 SSH:
# 进入旧 App 的数据目录 # /mnt/main/ix-applications 是设置的存储 App 数据的路径,releases 后面跟的第一个文件夹是旧 qBittorrent 的 Application Name # ix-qbittorent_config 里的 qbittorent 也是 Application Name cd /mnt/main/ix-applications/releases/qbittorent/volumes/ix_volumes/ix-qbittorent_config/qBittorrent
在下面能看到前面提到的文件结构,根据需要进行复制转移:
# /mnt/main/ix-applications 是设置的存储 App 数据的路径,releases 后面跟的第一个文件夹是新 qBittorrent 的 Application Name cp [-r] <file-name> /mnt/main/ix-applications/releases/qbittorrent/volumes/ix_volumes/config/qBittorrent
同名文件直接覆盖,文件夹记得加 -r
。
复制完成之后,打开新创建的 App。使用旧 App 里设置的用户名和密码即可正常登录。某些 RSS 可能会被重新下载,按需停止即可。确认无误之后可以将旧 App 删掉。至此迁移完成。