ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

BaiduPCS-Go 实战:3条命令跑通,把百度网盘塞进你的自动化流水线

BaiduPCS-Go 实战:3条命令跑通,把百度网盘塞进你的自动化流水线 BaiduPCS-Go 实战3条命令跑通把百度网盘塞进你的自动化流水线【免费下载链接】BaiduPCS-Goiikira/BaiduPCS-Go原版基础上集成了分享链接/秒传链接转存功能项目地址: https://gitcode.com/GitHub_Trending/ba/BaiduPCS-GoBaiduPCS-Go 是一个用 Go 写的百度网盘命令行客户端这个增强版把分享链接转存功能集成进了本体——一条命令就能把别人分享的文件收进自己的网盘。它用类 Linux shell 的命令替换了图形客户端让脚本和定时任务可以直接驱动网盘。如果你常年在服务器上干活或者想把网盘文件批量处理进流水线这个工具值得一试。三分钟上手从 clone 到第一条下载不用找安装包clone 下来自己编译产出单个可执行文件、零依赖git clone https://gitcode.com/GitHub_Trending/ba/BaiduPCS-Go cd BaiduPCS-Go go build -o BaiduPCS-Go ./BaiduPCS-Go login -cookiesBDUSSxxxxxx; BAIDUIDyyyyyy; STOKENzzzzz ./BaiduPCS-Go config set -savedir /home/dev/netdisk ./BaiduPCS-Go ls /登录方式里 cookies 最省心浏览器打开网盘首页F12 切到 Network 标签刷新后从第一条请求的 Cookie 字段整段复制。注意 STOKEN 必须在网盘页面取且里面含大写字母——拿到一串小写字母多半是抄错了字段后面转存会直接报错。config set -savedir把下载落盘目录固定到/home/dev/netdisk之后d /我的资源/1.mp4直接下载重名文件自动跳过中断后重跑会接着之前的进度。不带参数直接运行程序则进入交互模式Tab 能补全命令和网盘路径体验接近 ssh 进了一台网盘服务器。核心能力你能拿它干什么下载与上传断点、并发、rsync 增量下载有三种模式默认locate走 Android 客户端同款取链逻辑提示user is not authorized时换--mode pcs即可。-p控制单文件线程数-l控制同时下载的文件数。上传默认分片单文件最大 128G且默认先试秒传-policy提供三个同名文件策略——skip、overwrite、rsync最后一个只跳过大小没变过的文件做增量同步时基本就是为它设计的。分享转存这个项目的立身之本./BaiduPCS-Go transfer https://pan.baidu.com/s/1abc123 edv4文件会落到当前工作目录所以转存前先cd /收藏。三个参数值得记住--collect把分享里的多个文件整合进一个文件夹再转存--rname随机替换文件名中 4 个字符提高秒传成功率--fs_id指定特定文件转存用于绕开单次转存的文件数量上限。v4.0.2 起还认?pwd提取码的整合式链接和分享口令格式复制一条带密码的链接整体丢进去也能跑。批量操作通配符、离线下载与分享下发目录操作是标准 shell 那套cd支持通配符、ls、tree、search -r、cp、mv、rm、mkdir删掉的东西可用recycle列表和还原。offlinedl add支持 http/ftp/电驴/磁力链先把内容落到网盘再下载share set能自定义提取码和有效天数下发分享。下载任务该开几个线程requester/downloader/里的下载引擎不是配 N 线程就用 N 线程每个任务开工前都会动态算线程数和分片大小。核心在SelectParallel和SelectBlockSizeAndInitRangeGen两个函数// requester/downloader/downloader.go节选 func (der *Downloader) SelectParallel(single bool, maxParallel int, totalSize int64, instanceRangeList transfer.RangeList) int { if single { return 1 } if instanceRangeList ! nil len(instanceRangeList) 0 { return len(instanceRangeList) // 断点续传沿用已有分片 } parallel : der.config.MaxParallel if int64(parallel) totalSize/MinParallelSize { // 每线程至少分 256KB parallel int(totalSize/MinParallelSize) 1 } if parallel 1 { parallel 1 } return parallel }三个设计点值得咂摸。第一256KB 下限MinParallelSize你配了 12 线程1MB 的文件也只分到 5 个——避免一堆线程各拉一小段握手开销比传输还大。第二续传时不重新分片直接沿用上次落盘的 Range 列表要是重新切新分片会和已写进度错位断点就白记了。第三分片大小按文件总量在 256KB/512KB/1MB/4MB 里分档取BlockSizeList小文件用小片避免大段请求浪费带宽大文件用大片压低请求频率。除此之外 Downloader 还挂了多个负载均衡候选地址首条下载链接失效会自动切换不需要你干预。并发数本身是把双刃剑项目 README 把话说得很直白用户类型max_parallelmax_download_load说明普通用户11调高极易触发限速且影响各客户端数小时SVIP10–201–2实验可稳定满速不建议再往上堆海外 VPS11上传不稳时为 pan.baidu.com 配 proxy_hostnames两段可直接粘的脚本每日备份与批量转存场景一每天凌晨把本地项目目录同步进网盘。--policy rsync只传大小变化的文件已备份过的不会再跑一遍#!/bin/bash # /home/dev/backup_netdisk.shcrontab: 0 3 * * * BPG/usr/local/bin/BaiduPCS-Go $BPG upload /home/dev/projects /项目备份/dev --policy rsync \ echo $(date): 备份成功 /var/log/bpg.log \ || echo $(date): 备份失败 /var/log/bpg.log $BPG quota顺带查一次配额防止某天磁盘默默写满。场景二批量转存分享链接。把链接整理成文本每行一个提取码可省脚本逐个处理#!/bin/bash # /home/dev/transfer_all.sh BPG/usr/local/bin/BaiduPCS-Go $BPG cd /收藏 while read -r url code _; do [ -z $url ] continue $BPG transfer $url ${code:-} --collect --download done /home/dev/shares.txt--collect让每个分享各自归档成一个文件夹--download转存完直接落到本地默认目录。转存下载一步到位是这个版本用得最多的组合。高频坑速查30秒定位登录失效、命令报错先who确认账号再用新 cookies 重新logincookies 要取自网盘首页登录页取到的不一定带 STOKEN。转存提示 STOKEN 缺失不是程序问题是登录信息里没带 STOKEN。回网盘页面重新取一段含大写字母的 STOKEN用login -bduss... -stoken...重登。下载速度骤降基本是限速。config set -max_parallel 1 -max_download_load 1压回单线程等几个小时恢复期间别用高并发试探。上传后 md5 和本地对不上分片上传的已知现象文件内容完好用fixmd5尝试修复要求 md5 必须正确就禁用分片上传退化为单线程。下载校验 MD5 误报失败文件多半没坏下载时加--nocheck或在配置里关闭校验。再进一步baidupcs包可以直接当 Go 库引进你自己的项目internal/pcscommand/里按一个文件一个子命令的套路加新命令也很顺遇到协议层面的问题baidupcs/transfer.go里 bdstoken 怎么取、fs_id 列表怎么拼读一遍源码就能心里有数。踩到 bug 的话项目仓库的 Issues 是最直接的反馈入口。【免费下载链接】BaiduPCS-Goiikira/BaiduPCS-Go原版基础上集成了分享链接/秒传链接转存功能项目地址: https://gitcode.com/GitHub_Trending/ba/BaiduPCS-Go创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表