写在最前
博主一直苦恼,因为百度云个人用着非常不错,但是分享和非会员的用户很鸡肋,另外由于博主空间所限,需要将一些不常用的文件转存出去,这个就非常尴尬了,因为百度云的扩容很贵,还不如重新买个SVIP,另外一方面其他人不一定下载的舒服,本人前段时间尝试了使用win系列的VPS将百度云转存到其他网盘,无奈经费超标,只能选了一个比较鸡肋的VPS自己DD了win7系统,勉强跑起了Airexplorer,尴尬的事情还比较多,因为流量和速度都难以达到,速度大概就是5M/S左右吧,国内的VPS大多数都是带宽限制,价格也很难承担,所以博主重新搞了个方案,采用bypy下载到VPS上,并通过rclone或者其他工具上传到GD|OD等网盘,之后再挂载出去给大家下载.时间太晚只写了一半,保证本次不挖坑,有时间绝对写完,项目地址:官方传送门
安装过程
以后不再写安装教程了,自己都没搞明白实在不好意思去教育别人
安装软件
老规矩就是先升级下yum
yum -y update
安装下epel库
yum -y install epel-release rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm yum repolist
安装aria2
#主要作用用于多线程下载 yum -y install aria2
安装screen
#主要作用用于进程守护,你也可以用其他的办法进行 yum -y install screen
centos7默认版本是2.7的版本,所以需要安装下pip-注意系统有的话就不要搞了,支持python2.7的,本步骤不是必须的,其实最简单的方法就是输入pip命令看下返回是否为空
#查看版本 python -v #返回结果大于2.79使用升级命令即可 pip install -U pip #返回结果小于2.79 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python get-pip.py
使用pip安装bypy:
pip install bypy
配置账户
绑定你的百度网盘账号:
bypy info
返回信息如下
Baidu PCS currently gives totally WRONG MD5 hash for remote files, and I AM NOT GOING TO ADAPT TO IT! So it if doesn't work, install version '1.6.10' using the following command: pip install bypy==1.6.10 Version 1.6.10 has a workaround for this. ### Seeking maintainer fo this `bypy` project, if you are interested, please create an issue at github, thanks. ### ---------------------------------------------------------------- 百度云盘返回的MD5全错了,鬼知道他们什么时候会改回来!现在代码是按照MD5值是正确的前提来写的,不会改。 所以你发现比较功能等不能正确工作时,请安装 1.6.10 版本: pip install bypy==1.6.10 1.6.10版有个临时解决方案。 ### 寻求这个`bypy`项目维护者,有意的话请去github上建issue,谢谢。### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #根据返回命令将下面网址复制到浏览器去授权 Please visit: https://openapi.baidu.com/oauth/2.0/authorize?scope=basic+netdisk&redirect_uri=oob&response_type=code&client_id=q8WE4EpCsau1oS0MplgMKNBn
同意得到下面的一段授权码,复制返回SSH中在以下位置粘贴确认即可
And authorize this app Paste the Authorization Code here within 10 minutes. Press [Enter] when you are done xxxxxxxxxx//这里输入你的确认码 Authorizing, please be patient, it may take upto 300 seconds... Authorizing with the Heroku server ... Heroku server failed, authorizing with the Heroku1 server ... Successfully authorized//这里提示为授权正确,以下为返回信息,可能有点不准 Quota: 6.103TB Used: 5.299TB
使用方法
首先把你需要下载转存的文件放到以下文件夹内,注意要在客户端上操作,网页版可能看不到这个文件夹
列出文件列表
bypy list
返回信息
/apps/bypy ($t $f $s $m $d): F 3DMine Plus视频教程.rar 1614703782 2020-07-10, 10:53:48 0e06b6ae6mbb3610a49fdcc4abe17008 #这里说明以下 $t-表示啥我现在还没搞明白 $f-表示文件名 $s-表示文件大小 $m-表示最后修改时间 $d-表示文件MD5特征码
直接下载,我这里使用的是同步命令
#首先选择好你VPS准备存放文件的位置,这点将来作为你上传到google或者od的中转位置 cd /home/ggbk #从百度云同步到VPS当前目录 bypy syncdown -v #从百度云指定目录同步到VPS bypy downdir / #后面几个参数说明一下 运行时添加-v参数,会显示进度详情。 运行时添加-d,会显示一些调试信息。 运行时添加-ddd,还会会显示HTTP通讯信息(警告:非常多)
参考图片,说实话速度不咋地,主要我用的VPS也是国外的,如果想对速度有提升,请继续向下看aria2的配置
其他命令
#更详细的了解某一个命令: bypy help <command> #显示在云盘(程序的)根目录下文件列表: bypy list #把当前目录同步到云盘: bypy syncup bypy upload 把云盘内容同步到本地来: bypy syncdown bypy downdir / 比较本地当前目录和云盘(程序的)根目录(个人认为非常有用): bypy compare #命令的参数说明,用法已经在上面示例过了 运行时添加-v参数,会显示进度详情。 运行时添加-d,会显示一些调试信息。 运行时添加-ddd,还会会显示HTTP通讯信息(警告:非常多)
调用aria2下载
默认情况下bypy没有调用aria2下载,不用aria2的话下载速度不能最大化,所以这里我们先配置aria2。bypy默认配置的aria2是使用4个连接数下载,这里我们可以修改成最大的16,为了后续使用方便这里直接设置一个环境变量即可:
echo 'export DOWNLOADER_ARGUMENTS="-c -k10M -x16 -s16 --file-allocation=none"' > /etc/profile.d/bypy.sh chmod +x /etc/profile.d/bypy.sh source /etc/profile.d/bypy.sh
验证环境变量是否生效,回显有你上面设置的内容说明正常,否则你需要检查或使用别的方式来设置环境变量
echo $DOWNLOADER_ARGUMENTS
现在就可以尝试下载了
bypy --downloader aria2 download 远程文件名 本地路径
bypy --downloader aria2 download 远程目录 本地路径
例如下载一个example.zip或是名为妹子的文件夹到本地的folder目录:
bypy --downloader aria2 download example.zip folder bypy --downloader aria2 download 妹子 folder
每次要下载文件的时候都要输这么长的命令不太方便,这里可以添加一个别名
nano ~/.bashrc
例如我设置一个dw的别名:
alias dw='bypy --downloader aria2 download '
使其生效:
source ~/.bashrc
那么以后下载文件或者目录的话就可以直接用这样的命令:
dw example.zip folder dw 妹子 folder
进程守护
下载大文件你不可能总是一直开着终端,有时候还可能因为网络不好导致SSH断开,这里我们可以用screen守护:
screen -S bypy
接着你就可以在这个新的终端内使用bypy下载,按键盘组合键Ctrl+A+D就可以切出这个终端。一些screen常用命令:
screen -ls # 查看当前所有终端 screen -r bypy # 回到之前的终端 screen -X -S bypy quit # 删除一个终端
自动转存
挂载GD及脚本命令,等明天再更新
可以完美解决问题