自动同步vps服务器或本地文件的数据到百度网盘
来源:互联网 发布:上海迪士尼 知乎 编辑:程序博客网 时间:2024/05/16 12:10
懒惰的人,会创造出不一样的世界,因为懒,所以会勤快的去让复杂的生活变得简单。
背景
打开这篇文章的你所遇到的问题,就是写这篇文章的背景。
如何将本地的文件同步到百度云
用到的工具及插件
curl命令
windows系统请自行下载安装,linux和mac自带
https://curl.haxx.se/download.htmlphp运行环境
win自己研究。。。
CentOS 直接yum install php即可。
mac 系统自带phpbpcs_uploader
地址:https://github.com/oott123/bpcs_uploader。
用下面git clone方式下载就可以1.将项目clone到本地或者vps服务器上:
git clone https://github.com/oott123/bpcs_uploader.git
2.为php脚本添加权限
cd bpcs_uploader chmod +x bpcs_uploader.php
3.初始化脚本
./bpcs_uploader.php quickinit
这个时候终端会询问你是否初始化,输入Y,然后会打印出许多文字,其中包括授权码。
在浏览器中访问https://openapi.baidu.com/device。输入授权码,确定,
成功后返回终端按回车键,看到屏幕上打印出了你百度网盘的容量,证明初始化完成。
可以测试一下 : 输入·
./bpcs_uploader.php quota
看到这样就可以了:
4.使用bpcs_uploader完成上传和下载
//上传: ./bpcs_uploader.php upload [path_local] [path_remote] //举例:./bpcs_uploader.php upload /root/a.txt /test/a.txt 则本地root目录下的a.txt文件会上传到百度云/我的应用数据/bpcs_uploader/test目录下 //下载: ./bpcs_uploader.php download [path_local] [path_remote] //删除文件: ./bpcs_uploader.php delete [path_remote] //离线下载: ./bpcs_uploader.php fetch [path_remote] [path_to_fetch]
注意: 这个插件还有一种复杂初始化方式,没什么必要,而且现在百度已经停止pcs授权了,所以就用快速初始化吧。
如何自动同步
上面的只能手动去同步,而且必须输入文件名,也就是说每次只能上传一个文件,这显然是不符合我们的预期的,所以得像个法子。
shell脚本
我们可以通过shell脚本来完成目标,思路就是,通过shell遍历文件夹,找到所有文件,每找到一个文件就执行一下上面的脚本,就可以做到批量上传了。
简单的写了一个
#!/bin/bash # 常规定义 #上传到百度云盘的根目录 baidupan_DIR="/myVCS" function searchFile(){ for file in `ls $1` do if [ -d $1"/"$file ] then ergodic $1"/"$file else local path=$1"/"$file #local name=$file #local size=`du --max-depth=1 $path|awk '{print $1}'` #echo $name $path $size #可以得到文件的名称,路径和大小,路径包含名称 /plugins/baidu/bpcs_uploader.php upload $path $baidupan_DIR/$path fi done } #这个必须要,否则会在文件名中有空格时出错 IFS=$'\n' #这里是你要批量上传文件的路径 searchFile "/path" exit 0
有了这个脚本,我们执行一下就可以批量上传了。
定时任务
执行:
crontab -e
使用vi输入:(这里的path替换为你放置.sh脚本的位置)
0 2 * * * /path/upload.sh backup
这段话的意思是,每天凌晨两点,执行upload.sh脚本一次
然后:wq保存
重启一下进程:
crond restart
据说不重启也可以,因为会自动检查,但是还是保险一点
搞定
这样,我们就搞定了。
当然,shell脚本你想怎么写怎么写。我只是提供一个简单的事例。
再提供一个备份mysql数据库、本地网站数据,ng服务器数据的脚本:
#!/bin/bash# 常规定义 用户名和密码改成自己的MYSQL_USER="root" MYSQL_PASS="123456"#百度网盘上传路径,自己可以改baidupan_DIR="/backup/$(date +%Y-%m-%d)"#本地备份路径(相当于一个中转站,会清空的)BACK_DIR="bdbackup"# ng数据目录NGINX_DATA="/etc/nginx"#本地网站备份数据目录LOCAL_DATA="/var/www"# 定义备份文件名mysql_DATA=mysql_$(date +"%Y%m%d").tar.gzwww_DEFAULT=default_$(date +%Y%m%d).tar.gznginx_CONFIG=nginx_$(date +%Y%m%d).tar.gz# 判断本地备份目录,不存在则创建if [ ! -d $BACK_DIR ] ; then mkdir -p "$BACK_DIR"fi# 进入备份目录cd $BACK_DIR# 备份所有数据库# 导出需要备份的数据库,清除不需要备份的库mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' > databases.dbsed -i '/performance_schema/d' databases.dbsed -i '/information_schema/d' databases.dbsed -i '/mysql/d' databases.dbfor db in $(cat databases.db) do mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gzdone# 打包数据库tar -zcvf $mysql_DATA *.sql.gz# 打包本地网站数据tar -zcvf $www_DEFAULT $LOCAL_DATA# 打包Nginx配置文件tar -zcvf $nginx_CONFIG $NGINX_DATA/*.conf# uploadcd ~/root/chengfan/bpcs_uploader.php upload $BACK_DIR/$nginx_CONFIG $baidupan_DIR/$nginx_CONFIG/root/chengfan/bpcs_uploader.php upload $BACK_DIR/$mysql_DATA $baidupan_DIR/$mysql_DATA/root/chengfan/bpcs_uploader.php upload $BACK_DIR/$www_DEFAULT $baidupan_DIR/$www_DEFAULT# 清空本地备份文件夹数据rm -rf $BACK_DIR#退出exit 0
MAC 和CentOS 7 测试通过
windows 下运行shell脚本自己研究吧,哈哈哈哈哈,赶紧跑
结束~
博客同步更新在 : http://blog.improvecfan.cn
- 自动同步vps服务器或本地文件的数据到百度网盘
- Python利用rsync自动同步服务器与本地文件同步
- linux系统将本地文件或文件夹上传到linux系统的服务器上的方法
- 使用SVN auto commit命令将本地文件同步到服务器
- 利用 VisualSVN 自动同步更新到网站服务器 的方法
- 自动备份Linux VPS文件和多线程下载百度网盘资源
- --定时同步服务器上的数据(服务器上的数据修改同步到本地)
- 打造百度网盘备份利器:自动备份Linux VPS文件和多线程下载百度网盘资源
- 打造百度网盘备份利器:自动备份Linux VPS文件和多线程下载百度网盘资源
- 国外vps同步文件到百度云,加速vagrant\homestead等下载
- svn自动同步到另一台服务器
- phpstorm配置代码自动同步到服务器
- phpstorm配置代码自动同步到服务器
- 本地文件上载到SAP 服务器
- ssh传递本地文件到服务器
- 远程桌面,上传本地文件到服务器
- PHP上传本地文件到服务器
- linux 上传本地文件到服务器
- 关于只能IP访问,域名不能访问网站的解决
- 《Kubernetes与云原生应用》系列之七——容器设计模式实践案例:分散收集模式
- 某安全团队内部渗透比赛记录
- 数据挖掘各种算法JAVA的实现方法
- 计算机显示字符为什么有全角和半角之分?
- 自动同步vps服务器或本地文件的数据到百度网盘
- 机器就能绘制这样的作品,你还去写生吗?(续)
- 数据恢复与密码破解
- PHP curl请求错误汇总和解决方案
- VisualSVN Server的配置和使用方法
- jekyll serve 启动失败
- 超详细 接入支付宝支付实现
- 回复评论(因无法提交)
- 【前端】输入金额时如何判断数字合法