自动同步vps服务器或本地文件的数据到百度网盘

来源:互联网 发布:上海迪士尼 知乎 编辑:程序博客网 时间:2024/05/16 12:10

懒惰的人,会创造出不一样的世界,因为懒,所以会勤快的去让复杂的生活变得简单。

背景

打开这篇文章的你所遇到的问题,就是写这篇文章的背景。

如何将本地的文件同步到百度云

用到的工具及插件

  • curl命令

    windows系统请自行下载安装,linux和mac自带
    https://curl.haxx.se/download.html

  • php运行环境

    win自己研究。。。
    CentOS 直接yum install php即可。
    mac 系统自带php

  • bpcs_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

1 0
原创粉丝点击