
1. 为什么需要命令行操作百度网盘如果你经常和Linux服务器打交道肯定遇到过这样的场景服务器上没有图形界面但需要从百度网盘下载几个G的数据集或者把训练好的模型上传到网盘备份。用传统方法先下载到本地再上传不仅速度慢还容易因为网络波动中断。我在管理深度学习训练服务器时就经常遇到这种情况。有一次为了传一个20GB的模型文件整整折腾了一晚上。后来发现了bypy这个神器现在传输大文件都是直接命令行操作效率提升了至少三倍。bypy是一个纯Python编写的百度网盘命令行客户端它的核心优势在于纯命令行操作不需要图形界面适合无GUI的服务器环境支持断点续传大文件传输不怕中途中断多线程加速实测比网页版上传速度快2-3倍完整的API支持上传、下载、列表查看、删除等操作一应俱全2. 安装与配置bypy2.1 安装bypy工具安装bypy非常简单只需要Python环境建议3.6和pip工具。在终端执行pip install bypy -i https://pypi.tuna.tsinghua.edu.cn/simple如果遇到权限问题可以加上--user参数安装到用户目录pip install --user bypy安装完成后可以检查下版本确保安装成功bypy --version # 输出示例bypy 1.8.3提示如果服务器在国内建议使用清华源加速下载海外服务器可以用官方源pip install bypy2.2 首次认证配置第一次使用需要绑定百度账号这个过程只需要做一次。执行以下命令开始认证bypy info你会看到一个类似这样的输出Please visit: https://openapi.baidu.com/oauth/2.0/authorize?client_idq8WE4EpCsau1oS0MplgMKNBnresponse_typecoderedirect_urioobscopebasicnetdisk And authorize this app Paste the Authorization Code here within 10 minutes. Press [Enter] when you are done具体操作步骤复制输出的链接在已登录百度账号的浏览器中打开点击授权按钮复制页面显示的授权码回到终端粘贴授权码并回车认证成功后你会看到网盘空间信息Quota: 2.0TB Used: 1.5TB所有认证信息会保存在~/.bypy目录下下次使用无需重复认证。3. 核心文件操作命令3.1 文件上传技巧上传文件到网盘的默认路径是/apps/bypy/也就是百度网盘我的应用数据下的bypy文件夹。基本上传命令# 上传单个文件 bypy upload local_file.txt # 上传整个目录递归 bypy upload local_dir/我强烈推荐使用-v参数显示进度以及--processes启用多线程加速bypy upload -v --processes 8 large_file.zip实测参数对比参数组合上传速度CPU占用无参数2MB/s15%-v2MB/s15%--processes 45MB/s60%-v --processes 88MB/s90%注意线程数不是越多越好一般设置为CPU核心数的1-2倍最佳3.2 文件下载方法下载操作同样简单先通过list查看文件bypy list # 输出示例 # /apps/bypy ($t $f $s $m $d): # D dataset/ - 2023-08-15, 10:00:00 # F model.pth 1024MB 2023-08-16, 11:00:00下载特定文件或目录# 下载单个文件 bypy downfile model.pth # 下载整个目录 bypy downdir dataset/下载大文件时建议组合使用这些参数bypy -v --processes 4 --resume downdir large_dataset/-v显示进度条--processes 44线程下载--resume支持断点续传4. 高级功能与实用技巧4.1 目录同步功能bypy最实用的功能之一是目录同步可以保持本地和网盘目录内容一致# 将本地目录同步到网盘上传差异文件 bypy syncup local_dir/ # 将网盘目录同步到本地下载差异文件 bypy syncdown remote_dir/这个功能特别适合定期备份我每周都用它同步一次重要项目代码# 每周日凌晨3点自动同步 0 3 * * 0 bypy syncup /projects/important_codes/4.2 断点续传实战传输大文件时网络中断很常见bypy的断点续传功能可以节省大量时间。以下载为例首次下载中断bypy -v downdir large_files/ # 输出Downloading... 45% [ ] # 网络断开重新执行相同命令bypy -v downdir large_files/ # 输出Resuming from 45%... # 从中断处继续下载断点信息存储在~/.bypy/bypy.parts.json中如果需要强制重新下载可以先删除这个文件。4.3 多账号切换技巧如果需要使用多个百度账号可以通过以下步骤切换清除当前认证信息rm -rf ~/.bypy/*重新执行认证bypy info按提示完成新账号认证5. 常见问题排查5.1 认证失败处理如果认证时出现Invalid authorization code错误通常是授权码过期超过10分钟浏览器未登录百度账号复制的授权码包含多余空格解决方法重新执行bypy info获取新链接确保浏览器已登录正确的百度账号仔细复制授权码不要带多余字符5.2 上传下载速度优化速度慢可能的原因和解决方案服务器地理位置海外服务器连接百度网盘速度较慢建议使用国内服务器中转尝试在非高峰期传输线程数设置不合理# 查看CPU核心数 nproc # 根据核心数设置进程数建议核心数×2 bypy upload --processes 8 -v large_file.zip网络限速百度网盘对非会员有限速可以考虑开通百度网盘会员分卷压缩大文件每个文件1GB5.3 文件大小限制百度网盘对bypy有以下限制单文件最大4GB非会员每日上传流量限制约20GB如果需要传输超大文件可以先用split分卷# 分卷压缩每个1GB split -b 1G huge_file.zip huge_file.zip.part. # 上传所有分卷 bypy upload huge_file.zip.part.*6. 自动化脚本示例最后分享几个实用脚本可以保存为.sh文件直接使用定时备份脚本#!/bin/bash # 备份目录到百度网盘 BACKUP_DIR/data/important LOG_FILE/var/log/backup.log echo $(date) 开始备份 $LOG_FILE bypy syncup $BACKUP_DIR $LOG_FILE 21 echo $(date) 备份完成 $LOG_FILE下载队列脚本#!/bin/bash # 批量下载文件列表 FILE_LIST(dataset/part1.zip dataset/part2.zip models/model.h5) for file in ${FILE_LIST[]}; do echo 正在下载 $file bypy -v --processes 4 downfile $file done这些脚本配合crontab可以实现完全自动化的文件同步我的服务器上跑了三个这样的定时任务再也不用担心数据备份问题了。