Skip to content

v2.1.6

Choose a tag to compare

@github-actions github-actions released this 28 Jul 03:02
· 32 commits to main since this release

BaiduPCS-Rust v2.1.6 发行说明

发布日期:2026-07-28


🎯 版本说明

v2.1.6 是在 v2.1.5 基础上的小版本更新,聚焦下载与文件操作的稳定性,修复两个「重要」问题:

  • 多域双 STOKEN 导致删除等操作报 errno=-6(重要)v2.1.5 已让 REST 接口一律携带 STOKEN,但扫码登录的多域账号可能在不同域下保存了两个不同值的 STOKEN,全部发出反而命中错误的那个,删除等操作仍报 errno=-6(issue #130 追加反馈)。
  • 限速/低带宽下载被「24h 绝对超时」误杀(重要):把「下载慢但仍在推进」的任务误判为失败并清理临时目录,本版本改为进度驱动的停滞判定,正常慢速下载不再被误杀。

平滑升级:本版本不涉及任何不兼容的数据迁移,从 v2.1.x 升级无感知。新增的下载停滞阈值有合理默认值(30 分钟),无需任何手动配置。仍建议升级前按惯例备份数据目录(见下方「升级说明」)。


🐛 问题修复

账号·多域双 STOKEN 导致删除报 errno=-6(重要)

问题v2.1.5 已让所有 REST 接口的 Cookie 头携带 STOKEN,但部分扫码登录的多域账号仍在删除文件等操作上报 errno=-6

根因:这类账号在 passport(.baidu.com)与 pan(pan.baidu.com)两个域下各自保存了一份 STOKEN,两者的值可能不同。此前收集 Cookie 时按「整条 k=v 去重」,会把两个域的 STOKEN 一并发出;百度 filemanager 命中了错误的那一个,于是仍返回 errno=-6(对照:BaiduPCS-Go 只发单个 stoken 故正常,见 issue #130)。

修复

  • 按名称去重:收集各域 Cookie 时改为按 cookie 名称去重(保留首次出现),避免多域同名 Cookie 同时进入 Cookie 头。
  • 强制 STOKEN 唯一:以登录时保存、已验证可用的 user_auth.stoken 为准,清除 jar 中混入的另一域 STOKEN,确保只发出一个正确的 STOKEN。
  • PANPSC 覆盖PANPSC 同样以最新预热值覆盖 jar 中可能存在的多域旧值。
  • 可观测:检测到 jar 里出现多个 STOKEN(正是本问题的触发条件)时打印 warn 日志,便于上线后从用户日志确认修复路径生效。

下载·限速/低带宽任务被绝对超时误杀(重要)

问题:下载慢(低带宽或被百度限速)但仍在持续推进的任务会被误判为失败,且清理临时目录还会连带导致同批其余「在下」文件报 31066

根因:旧逻辑是「从下载开始算满 24h 就一刀切判失败」的绝对超时,它只看时间、不看是否仍有字节进展,于是把「慢但正常」的下载也一并杀掉。

修复:改为进度驱动的停滞判定——

  • 只认「零进展」:维护「上次观察到的已下载字节总量」与「上次有进展的时刻」;只要字节总和仍在变化就把计时器归零,只有连续 stall_timeout_secs 完全无进展才判「停滞」。正常下载即使很慢也会持续有字节增长,永远不会触发;只有真正 0 KB/s 卡死才会被清掉,防卡死能力不丢。
  • 用户暂停不计时:只有「有活跃下载」时停滞时钟才累积;用户主动暂停的任务不算活跃,不会被误判为停滞。
  • 先取消 worker 再清理:判定停滞后先取消底层下载 worker,再清理临时目录,避免 worker 继续对着即将被清理的临时目录刷 Locate、刷出满屏 31066
  • 中性文案:失败提示改为「下载长时间无进展,已判定为停滞并停止;可稍后重试」,只陈述现象与下一步,不臆测会员/带宽等原因。
  • 可调阈值:默认停滞阈值 30 分钟,可用环境变量 BAIDUPCS_DOWNLOAD_STALL_TIMEOUT_MINS(取值 > 0)覆盖。

🔧 升级说明

Docker 用户

# 升级前建议先备份挂载的 data 卷

# 拉取指定版本镜像
docker pull komorebicarry/baidupcs-rust:v2.1.6

# 或使用 latest 标签
docker pull komorebicarry/baidupcs-rust:latest

# 重启容器
docker-compose down && docker-compose up -d

二进制用户

Releases 页面下载对应平台的二进制文件,替换原有可执行文件后重启服务。

配置与数据

  • 本版本无破坏性数据迁移,从 v2.1.x 升级无需任何手动操作。
  • 升级仍建议按惯例备份 backend/config/backend/wal/(Docker 用户备份挂载的 data 卷)。
  • 默认端口仍为 18888,不影响现有反向代理 / 防火墙 / 书签。
  • 若你此前遇到多域账号删除报 errno=-6:升级后直接重试即可;如仍异常,可为该账号重新扫码登录以刷新凭证。
  • 下载停滞阈值默认 30 分钟,如你的网络环境正常但有超长时间零进展的场景,可用 BAIDUPCS_DOWNLOAD_STALL_TIMEOUT_MINS 调大。

📁 下载

平台 文件名
Windows (x86_64) BaiduPCS-Rust-v2.1.6-windows-x86_64.zip
Linux (x86_64) BaiduPCS-Rust-v2.1.6-linux-x86_64.tar.gz
Linux (ARM64) BaiduPCS-Rust-v2.1.6-linux-aarch64.tar.gz
macOS (x86_64) BaiduPCS-Rust-v2.1.6-macos-x86_64.tar.gz
macOS (ARM64) BaiduPCS-Rust-v2.1.6-macos-aarch64.tar.gz
Docker 镜像 BaiduPCS-Rust-v2.1.6-docker.tar.gz

完整更新日志:参见项目根目录的 CHANGELOG.md
问题反馈:欢迎通过 GitHub Issues 进行反馈