我们之前推荐了一种网盘管理程序:rclone,可以管理onedrive,google drive等网盘,对于国外高带宽服务器来说是一种非常好的同步工具,可以实现各个网盘之间内容的自动转存。但是很遗憾的是rclone是国外的大神开发的,对国内的百度网盘不支持。我们这里推荐一套环境,可以让你转存百度网盘的内容到rclone支持的网盘中。
特点
1.使用百度网盘linux官方客户端,不会造成对百度网盘svip的封禁。
2.设置百度网盘自动下载任务后,自动上传、上传完毕自动删除本地文件。不占本地较大内存。
3.实测国外大多地区下载速度2~4M/s,如果不满意出门左拐。
更新说明
2020年3月13日18:56:39:
修补自动脚本周期较短,造成任务叠加,最终导致宕机的问题。详情请看
【五、设置自动转存脚本-4.添加定时任务】
本文推荐环境
1、 环境:宝塔5.9(可不装)+docker+百度网盘linux官方版+vnc+rclone世纪互联版+定时转存脚本
2、 硬件:centos7.x系统+至少1.5G内存+至少10G硬盘+上行至少100M带宽
安装过程
一、安装宝塔
这里为了便于小白写定时转存脚本,所以选择占用内存比较低的宝塔5.9版本,如果你的服务器内存比较大,建议你装更安全的7.x脚本。点我跳转→
Centos安装命令:
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh
Ubuntu/Deepin安装命令:
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && sudo bash install.sh
Debian安装命令:
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && bash install.sh
记下你面板的用户名和密码
二、安装docker
本教程仅限centos版安装docker
引用来源:https://www.runoob.com/docker/centos-docker-install.html
1、 卸载旧版本
较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。
#centos系统
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、 安装 Docker Engine-Community
设置仓库
#centos系统
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装 Docker Engine-Community-18.09.0-3.el7 版
#centos系统
sudo yum install docker-ce-18.09.0-3.el7 docker-ce-cli-18.09.0-3.el7 containerd.io
3、 一些其他的命令
#启动docker
sudo systemctl start docker
#暂停docker
sudo systemctl stop docker
#设置开机启动
sudo systemctl enable docker
#重启docker
sudo systemctl restart docker
#centos版卸载docker
yum remove docker-ce
yum remove containerd.io
rm -rf /var/lib/docker
三、安装百度网盘官方版+VNC的docker镜像
该镜像的作者的github地址:
https://github.com/john-shine/Docker-CodeWeavers_CrossOver-VNC/tree/master/BaiduNetdisk
1、 启动docker
sudo systemctl start docker
2、 拉取镜像
sudo docker pull johnshine/baidunetdisk-crossover-vnc:latest
3、 其他命令
#可以绑定默认下载目录到host的某个目录,会自动创建一个
sudo docker run -d -e vnc_password=your_password -p 5901:5901 -v /path/to/download/folder:/home/baidu/baidunetdiskdownload/ johnshine/baidunetdisk-crossover-vnc:latest
#这解释一下,参数-e vnc_password=your_password 是指VNC viewer访问时待填入的密码
#-p 5901:5901 是指VNC viewer访问时待填入的端口
#-v /path/to/download/folder:/home/baidu/baidunetdiskdownload/
#是指将百度网盘的下载路径映射到冒号前面的你的vps的实际位置
#例如 -v /root/Download:/home/baidu/baidunetdiskdownload/
#即你下载的文件会存到/root/Download下面,PS:冒号后面的不要改、会报错
四、安装rclone世纪互联版
1、 下载rclone世纪互联版至/root/rclone,
这里所说的世纪互联版,是指支持世纪互联版的onedrive。
这里推广一下大佬的世纪互联onedrive->、点我跳转→,使用限时一口价优惠劵NERYEAR2020
、50元可购自定义用户名带有API权限的5T世纪互联版onedrive。补满123元可升级至25T。先到先得。
#在root下创建一个文件夹rclone,并将文件下载至/root/rclone里面
mkdir /root/rclone
cd /root/rclone
wget https://yun.rw/show/1/Files/onedrive%20tools/rclone/rclone-cn2/rclone_linux
#给予权限
chmod 775 rclone_linux
为了节省时间,我们直接拿windows下的onedrive配置文件写入/root/.config/rclone/rclone.conf里。
如果这里比较晕,你可以查看我的另一篇文章
这里再给个windows下的rclone世纪互联版的下载地址->点我跳转→
到这里rclone就搞定了。
五、设置自动转存脚本
自动转存脚本的基本组成为:定时检索文件脚本+一键转存脚本
当设置定时检索文件脚本后、每隔一段时间会检索指定文件目录下的文件及文件夹的名字,并将其调用一键转存脚本。
本脚本包含会自动跳过百度网盘下载临时文件、并会将本地已上传过的文件删除。
1、 创建过滤临时文件的规则列表
#先创建rules.txt文件到/root/rclone/下
touch /root/rclone/rules.txt
vi /root/rclone/rules.txt
2、 写入过滤文件的类型
#百度云的临时文件
#也可以写其他你想过滤掉的文件后缀
*.downloading.cfg
*.downloading
3、 创建一键转存脚本
#先创建一个脚本到/root
cd /root
touch autoUpload.sh
#给予权限
chmod 775 autoUpload.sh
#编辑脚本
vi autoUpload.sh
然后输入i,粘贴以下内容
将前面几行的配置修改为你的配置
#!/bin/bash
#一键转存脚本
#Rclone 上传配置
name='name' #配置Rclone时填写的name
folder='uploadByVPS/' #注意一定要保留最后的/,rclone绑定网盘里的文件夹,留空为整个网盘。
retry_num=3 #上传失败重试次数
rclone='/root/rclone/rclone_linux' #rclone的安装位置
#=================下面的可以默认不变===================
downloadpath='/root/Download' #百度网盘下载目录
rules='/root/rclone/rules.txt' #过滤文件规则
#=================下面不需要修改===================
filepath=$1 #调用ls /home/baidu/baidunetdiskdownload 罗列其下面的文件及文件夹
path="${downloadpath}/${filepath}" #路径转换。添加开头的下载路径
Task_INFO(){
echo
echo -e "[\033[1;32mUPLOAD\033[0m] Task information:"
echo -e "-------------------------- [\033[1;33mINFO\033[0m] --------------------------"
echo -e "\033[1;35mDownload path:\033[0m${downloadpath}"
echo -e "\033[1;35mFile path: \033[0m${filepath}"
echo -e "\033[1;35mUpload path: \033[0m${uploadpath}"
echo -e "\033[1;35mRemote path:\033[0m${remotepath}"
echo -e "\033[1;35mpath:\033[0m${path}"
echo -e "-------------------------- [\033[1;33mINFO\033[0m] --------------------------"
echo
}
Upload(){
retry=0
while [ $retry -le $retry_num -a -e "${uploadpath}" ]; do
[ $retry != 0 ] && echo && echo -e "Upload failed! Retry ${retry}/${retry_num} ..." && echo
# ${Uploader} -c "${Config}" -s "${uploadpath}" -r "${RemotetoDIR}"
$rclone move -v "${uploadpath}" "${remotepath}" --exclude-from $rules # --min-size 1k # --ignore-times
#跳过规则列表里的内容的文件,跳过小于1k的文件,# 跳过时间不同但名称大小相同的文件
$rclone rmdirs -v "${downloadpath}" --leave-root
retry=$(($retry+1))
done
[ -e "${uploadpath}" ] && echo && echo -e "Upload failed: ${uploadpath}" && echo
# [ -e "${path}".aria2 ] && rm -vf "${path}".aria2
# [ -e "${filepath}".aria2 ] && rm -vf "${filepath}".aria2
}
if [ -d "$path" ] #如果传来的是文件夹
then
uploadpath="${path}/"
remotepath="${name}:${folder}${filepath}/"
Task_INFO
Upload
exit 0
else #如果是文件
uploadpath="${path}"
remotepath="${name}:${folder}"
Task_INFO
Upload
exit 0
fi
Task_INFO
按esc,并输入:wq保存
4、 添加定时任务
然后我们打开宝塔面板
找到计划任务→添加计划任务→任务类型→shell脚本→填入任务名称→执行周期:填入你的周期(国外服务器建议5min以上、国内服务器请自己计算)(填过少会造成任务叠加,很有可能最终造成宕机)
这里的周期这样计算、你的rclone目的网盘的最大上传速度、这里按照10M算(也可以自己手动上传文件测试)计算方法大概如下:
上一周期下载的文件的大小<执行周期T×rclone目的网盘的上传速度<上一周期下载的文件的大小+本周期内百度网盘又下载的文件大小<你的VPS硬盘大小
经测算:国外小鸡百度网盘的下载速度在1~4M波动、国内不限速。
例如:当已下载文件为2G时,rclone目的网盘的上传速度为10M时,2×1024/10/60=3.413分钟。
在此期间不能再给指令让它上传,不然会导致任务叠加,重复上传。
而在这3.413分钟内百度网盘又下载了3.413x60x4=819.2M(以4M算)。
所以在你本地最低要有2.8192G才够你的正常运转。
通常建议、百度网盘下载的内容单个文件比较大的话、将这个周期应设置的大一点。
这里推荐单个文件超过1G的话将时间周期调至10min乃至更长。文件较小可以将时间周期调制5min。
脚本内容粘贴以下脚本→添加任务
upload='/root/autoUpload.sh' #你一键转存脚本的位置
for file in `ls /root/Download` #罗列/root/Download即百度网盘下载位置
do
$upload $file
done
放行端口:然后找到宝塔面板→安全→放行端口5901
六、测试脚本
1、 创建测试文件
#在/root下创建测试文件
mkdir /root/Download
cd /root/Download
mkdir /root/Download/test
cp /root/.config/rclone/rclone.conf /root/Download/test/test.txt
cp /root/.config/rclone/rclone.conf /root/Download/test.conf
2、 执行测试脚本
#全部复制粘贴
upload='/root/autoUpload.sh'
for file in `ls /root/Download` #罗列/root/Download即百度网盘下载位置
do
$upload $file
done
等待脚本执行完毕后,检查的网盘里是否有test.conf和test/test.txt就可以了。
七、开始运行
1、 运行docker
sudo systemctl start docker
2、 运行百度网盘+vnc镜像
sudo docker run -d -e vnc_password=your_password -p 5901:5901 -v /root/Download:/home/baidu/baidunetdiskdownload/ johnshine/baidunetdisk-crossover-vnc:latest
#这解释一下,参数-e vnc_password=your_password 是指VNC viewer访问时待填入的密码
#-p 5901:5901 是指VNC viewer访问时待填入的端口
#-v /path/to/download/folder:/home/baidu/baidunetdiskdownload/
#是指将百度网盘的下载路径映射到冒号前面的你的vps的实际位置
#例如 -v /root/Download:/home/baidu/baidunetdiskdownload/
#即你下载的文件会存到/root/Download下面,PS:冒号后面的不要改、会报错
然后你就可以下载vncviewer点我跳转→,输入youip:5901然后输入密码,登录百度网盘了
有时候百度网盘刷新不出来文件,直接重启docker,然后重新运行百度网盘+vnc镜像就可以了
有什么问题可以随时联系我邮箱,欢迎打扰
<wangtaijie@midd.top>
版权所有yoola's Blog
本文链接:https://www.yoola.top/pub/id=4
转载请注明来源