尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Gopeed BT 下载路径配置手册:3 步修正保存位置
Gopeed BT 下载路径配置手册3 步修正保存位置【免费下载链接】gopeedA fast, modern download manager for HTTP, BitTorrent, Magnet, and ed2k. Cross-platform, built with Golang and Flutter.项目地址: https://gitcode.com/GitHub_Trending/go/gopeed把一个大种子拖进 Gopeed下载完成后你打开下载目录发现文件躺在Downloads/种子名/子目录/...的深处而你明明只想让它存到 D 盘。Gopeed 的 BT 下载路径由创建任务时的opts.Path决定不指定就落到全局downloadDir之后无法事后搬动——所以控制路径的关键动作发生在任务创建前。先对号入座按症状找到方案档位现象可能原因对应方案档位新任务都存到了Downloads/目录没设过默认下载目录任务Path为空时回落到downloadDir档位 AUI 设置默认目录多文件种子的文件多套了一层种子名文件夹这是 BT 协议的标准行为多文件种子以种子名为根目录档位 A创建时选单文件或接受该结构指定目录创建任务报download directory is not in white list启用了whiteDownloadDirs白名单你的目录不在匹配范围内档位 B把目录加进白名单换过默认目录后老任务还存旧位置路径在任务创建时已固化到opts.Path改默认值不影响存量任务新任务重新指定目录只下了部分文件但种子名文件夹里还留着空壳目录完成时 Gopeed 会删掉未选文件但不会删目录本身手动清理或见档位 C 的定制思路想按文件类型视频/音频分目录存放默认逻辑只认下载目录/种子名/文件路径三段没有分类能力档位 C改源码里的TorrentDirMaker根因三问路径到底由谁决定问一任务不指定目录时落在哪里每个任务创建前都会过一遍 pkg/download/downloader.go 里的initOptions。逻辑只有三步Path为空就取全局downloadDir然后做一次日期占位符替换最后如果配置了白名单用 glob 匹配校验不通过直接拒绝建任务。if opts.Path { opts.Path storeConfig.DownloadDir } opts.Path util.ReplacePathPlaceholders(opts.Path) // WhiteDownloadDirs 非空时 filepath.Match 不通过 任务创建失败这也解释了第二行占位符的价值downloadDir里写D:/gopeed/%year%/%month%2026 年 9 月建的任务会自动落进D:/gopeed/2026/09这是 pkg/util/path.go 中ReplacePathPlaceholders支持的写法。问二为什么多文件种子会多一层文件夹BT 任务启动时Gopeed 把任务的Path交给 anacrolix 库的存储层见 internal/protocol/bt/fetcher.go 的addTorrentspec.Storage storage.NewFileOpts(storage.NewFileClientOpts{ ClientBaseDir: cfg.DataDir, TorrentDirMaker: func(baseDir string, info *metainfo.Info, infoHash metainfo.Hash) string { return f.meta.Opts.Path }, })TorrentDirMaker决定了这个种子所有文件的根目录Gopeed 的选择就是opts.Path本身。库的约定是多文件种子在根目录下先建一个与种子同名的文件夹再按种子内部目录结构展开单文件种子则直接以文件形式放在根目录下。你看到的下载目录/种子名/...就是这么来的它不是 bug。问三为什么只选部分文件剩下的也会消失多选下载只Download了SelectFiles命中的文件。任务完成后 internal/protocol/bt/fetcher.go 的Wait会轮询一次把没选中的文件从磁盘清掉if !selected { util.SafeRemove(filepath.Join(f.meta.Opts.Path, f.meta.Res.Name, file.Path())) }所以没下完的文件不会白占空间但种子名文件夹和空目录会留下来这是磁盘上最后的残留。分档方案从 UI 到源码的三档改法档位 A免代码快速修复适用条件只想改默认保存位置、按任务挑目录不改任何配置。打开设置页把默认下载目录改到你想用的盘Android 上会回落到外部存储目录。创建 BT 任务时在文件选择界面用目录选择器为单个任务指定路径——这个路径会写进任务的opts.Path优先级高于默认目录。验证任务详情页显示的路径就是你设置的路径完成后在目标目录看到种子名文件夹多文件或裸文件单文件。档位 B配置级调整适用条件Web/API 部署gopeed api/gopeed web需要默认目录、目录白名单或按日期归档。默认配置文件是./config.json可用-c改路径修改位置见 cmd/web/flags.go。下载相关字段在downloadConfig里{ downloadDir: D:/gopeed/%year%/%month%, whiteDownloadDirs: [D:/gopeed/*, E:/media/*] }也可以用命令行直接传-w D:/a, E:/b设置白名单-d设置 Gopeed 自身的存储目录日志、任务数据库所在处与下载目录是两回事。环境变量GOPEED_DOWNLOADCONFIG可传整段 JSON如{downloadDir: /env/downloads}适合容器部署。验证白名单开启后向非白名单目录建任务应立刻收到download directory is not in white list报错命中D:/gopeed/*这类带*的模式则放行。注意白名单是 glob 模式匹配写D:/gopeed不带/*只放行这一个精确路径。档位 C源码级改造适用条件默认结构满足不了例如所有视频种子统一存到下载目录/BT-视频/。需要自行编译仓库地址 https://gitcode.com/GitHub_Trending/go/gopeed git clone后按项目文档构建。改动点只有一处——internal/protocol/bt/fetcher.go 里的TorrentDirMaker把固定的f.meta.Opts.Path换成你自己的规则TorrentDirMaker: func(baseDir string, info *metainfo.Info, infoHash metainfo.Hash) string { // 例按 info.Name 判断类别统一归入 BT-视频 子目录 return filepath.Join(f.meta.Opts.Path, BT-视频) }配合 internal/protocol/bt/config.go 的config结构现有字段listenPort、trackers、seedKeep、seedRatio、seedTime可以加一个TypeDirs map[string]string字段用扩展名查表决定子目录。改完重新编译建一个新任务验证文件应出现在下载目录/BT-视频/种子名/...且旧任务不受影响。配置速查配置项默认值作用修改位置downloadDir空Web 服务回落到存储目录旁的Downloads新任务未指定Path时的保存目录支持%year%等占位符config.json 的downloadConfig或 UI 设置页whiteDownloadDirs空不校验下载目录白名单glob 模式匹配不命中则拒绝建任务config.json或 CLI-w dir1,dir2storageDirCLI-d可执行文件旁的storageGopeed 自身数据目录日志、任务数据库不是下载目录启动参数-dlistenPort0由 BT 库自选BT 监听端口config.json 的protocolConfigseedKeep/seedRatio/seedTimefalse/0/0下载完成后是否继续做种及条件config.json 的protocolConfigselectFiles任务参数全部文件多文件种子只下载指定索引的文件其余完成时清理创建任务请求或 UI 文件勾选三个容易踩的坑白名单是filepath.Match模式匹配而不是前缀判断想放行整棵子树记得写D:/gopeed/*参考 pkg/download/downloader.go 的校验逻辑。路径在任务创建时固化进opts.Path改默认目录或白名单都不会搬动已建任务的文件目录规划要在建任务前想清楚。storageDir和downloadDir是两个目录前者放 Gopeed 的日志和数据库后者才是你的文件见 cmd/web/flags.go 的参数说明。【免费下载链接】gopeedA fast, modern download manager for HTTP, BitTorrent, Magnet, and ed2k. Cross-platform, built with Golang and Flutter.项目地址: https://gitcode.com/GitHub_Trending/go/gopeed创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Ice 菜单栏管理指南:3 种方式隐藏图标,拖拽排序一步到位

Ice 菜单栏管理指南:3 种方式隐藏图标,拖拽排序一步到位

Ice 菜单栏管理指南:3 种方式隐藏图标,拖拽排序一步到位 【免费下载链接】Ice Powerful menu bar manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ice/Ice Ice 是一款面向 macOS 14 及以上的菜单栏管理工具:把不常…

📅 2026/9/20 13:07:48
睡前助眠拉伸的关键不是拉筋,而是让身体安静下来

睡前助眠拉伸的关键不是拉筋,而是让身体安静下来

睡前助眠拉伸放松,听着门槛很低,真正练过的人会发现它比想象中难坚持:动作越做越兴奋,或者在床上随便动两下就觉得没意思,干脆放弃。像“mobility by Julia Reppel —— 睡前助眠拉伸放松练习”这类以 mobility 命名的…

📅 2026/10/23 0:31:39
openpilot 发布工程全解析:从 Release Checklist 到 Prebuilt 构建流水线

openpilot 发布工程全解析:从 Release Checklist 到 Prebuilt 构建流水线

openpilot 发布工程全解析:从 Release Checklist 到 Prebuilt 构建流水线 【免费下载链接】openpilot openpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300 supported cars. 项目地址: https://gitcode.…

📅 2026/10/7 9:05:43
MORE NEWS

更多资讯

📰

AI主要应用领域全景解析:从感知到生成的技术落地地图

1. 从“能做什么”到“正在做什么”:AI落地版图的真实切面聊到人工智能的应用领域,很多人脑子里蹦出来的第一反应往往是科幻电影里的场景——机器人管家、全自动工厂、无人驾驶满街跑。但如果你真正在行业里摸爬滚打过几年,就会发现一个很有意…

📰

OpenClaw AI工具安全风险与企业防护实战指南

1. OpenClaw现象:当AI工具成为企业数字世界的"小龙虾"OpenClaw这款AI工具的爆火让我想起去年帮某金融机构做安全审计时的场景。他们的开发团队为了提升效率,在未经审批的情况下集体安装了一款开源AI编程助手。三个月后,安全团队在例…

📰

人工智能主要应用领域全景解析:NLP、CV、推荐系统与行业落地实践

1. 从“能聊天的玩具”到“干活的生产力”:AI应用领域的真实版图如果你现在还把人工智能等同于“那个会写诗的聊天框”,那可能已经落后了不止一个身位。我做了十多年一线项目,从最早的规则引擎、专家系统,到后来的机器学习平台&am…

📰

人工智能主要应用领域系统梳理:从计算机视觉到生成式AI的落地实践

1. 从“6.3”这个编号说起:为什么人工智能应用领域值得系统梳理看到“6.3 人工智能主要应用领域”这个标题,很多人的第一反应可能是:这不就是教科书里的一节内容吗?但如果你真正在一线做过AI项目落地,就会发现这个看似…

📰

2026大模型选型指南:从通用底座到Agent应用的全维度拆解

1. 大模型赛道的现状与选型逻辑1.1 为什么现在做模型盘点比两年前难十倍2024年的时候,我整理过一版大模型清单,那时候国内外加起来能叫得上名字的通用模型也就二十来个,一张A4纸就能列完。到了2026年10月这个时间节点,情况完全变了…

📰

AI生成代码仅需几秒,为何验证要半个月?嵌入式安全开发全解析

“AI生成代码几秒钟,测试验证和路试可能要半月”——这句话一出来,懂的人都懂。前阵子我们某个电控功能迭代,让AI辅助生成了一段控制器代码,从按下回车到代码落地,确实只花了几秒钟。但后续的代码评审、静态分析、单元…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬