假设您在 Linux 系统上使用 transmission-gtk BitTorrent 客户端 (v2.94) 来播种某些文件,例如 Linux 发行版 ISO 和 LibreOffice 版本。假设基本的“保存到位置”是:/path1/torrents
而不完整的种子路径是/path1/torrents/incomplete
。
现在假设您关闭 transmission-gtk,并重命名/path1
为/path2
(并且不要将旧路径符号链接到新路径)。
使用应用程序的配置对话框或在 中更改未来种子的存储位置非常简单$HOME/.config/transmission
。但是,当执行此操作时,所有之前活动的种子现在都标记为红色,数据据称丢失。
应该怎么做才能更正现有种子(完整和不完整)的位置?并且 - 是否可以以某种方式自动执行此操作,以便可以从命令行完成(例如在 中的文件上$HOME/.config/transmission/resume
)?
答案1
右键点击 torrent,点击“设置位置”并选择新的父目录(/path2/torrents
在本例中)。如果所有 torrent 都移动到同一个目录,您可以同时对所有 torrent 执行此操作。
更新位置后,再次右键单击并选择“验证本地数据”以让 Transmission 重新检查已下载的文件/部分。
这可以通过 CLI 自动完成 - 但首先要启用 Transmission 中的“web UI”功能,这也允许您使用transmission-remote
。
对于每个 torrent,transmission-remote --find
使用新的父目录运行。
~/.config/transmission/resume/ 中的文件与 .torrent 文件本身采用相同的“Bencode”格式,并且它们可能可以使用 Perl 的 Convert::Bencode 或非常小心的 sed 进行修改,但我不确定是否推荐该方法。
您可能想要更新顶级字典中的“目标”项:
$ bencode2json < 16a3968b347a81845384394e7f1b38656aeee97a.resume | head
{
"activity-date": "1619012434",
"added-date": "1619011497",
"bandwidth-priority": "0",
"corrupt": "0",
"destination": "/home/xxx/Downloads",
"dnd": [
...
(如果进行直接二进制编辑,请注意 Bencoded 字符串以其长度为前缀,该前缀也需要更新,例如19:/home/xxx/Downloads
在这种情况下。)
答案2
对@user1686 的精彩回答的补充:您可以一次更新所有种子的位置:
- 在“显示:”栏中选择“全部”和“全部”(这样所有种子都可见)。
- 按 Ctrl+A 选择所有可见的种子。
- 右键单击任意选定的种子。
- 选择“设置位置”。
- 选择“其他”。
- 导航到新的 torrents 文件夹(在您的情况下为“/path2/torrents”)。
- 选择“本地数据已存在”。
- 点击“应用”。
- 等待一段时间,种子就会更新。
- 当对话框消失后,重新启动 transmission-gtk。
您的种子文件应该全部被识别为可恢复的。不过您仍然必须真正地恢复它们 - 如果找不到数据,它们会自动暂停。