我们都知道数据备份对于开发人员的重要性,但是我们因为平时的琐事,难免会忘记备份,之前一直使用通过每天定时自动以附件发送邮件的形式来将备份文件发送到邮箱,但会存在一个问题,就是当备份的文件比较大(例如50M或更大)时,就无法添加到邮件的附件。今天了解到百度网盘有上传文件的接口,于是尝试做了一次百度网盘自动备份。
1、安装相关依赖环境
由于本次尝试的方法需要调用python的库文件解决,所以需要安装python,一般系统会自带python2.7
1)安装pip
sudo yum -y install epel-release
sudo yum -y install python-pip
2)更新pip
sudo pip install --upgrade pip
================问题1 开始===============
如果出现以下错误,
我们可以指定一下pip的版本进行更新,例如
pip install --upgrade pip==20.3
更新成功如下
================问题1 结束===============
================问题2 开始===============
如果还是报错:
Could not find a version that satisfies the requirement pip==24.0 (from versions: )
No matching distribution found for pip==24.0
原因是yum install python-pip时,CentOS7默认的python版本是2.7。它不支持更新到最新版本。
解决办法:
安装python3的pip
yum install python3-pip
升级pip 利用(pip3)
pip3 install --upgrade pip
注意:如果存在这个问题,以下操作使用pip安装都要使用pip3来安装
================问题2 结束===============
3)安装bypy
sudo pip install bypy
sudo pip install requests
2、授权登录百度网盘
bypy info
会出现让我们访问百度网盘的获取授权码
复制这个网址,到浏览器访问,登录百度开发者账号后,就可以看到生成的授权码
复制授权码,粘贴到shell窗口,回车,如果可以显示百度网盘账号的信息,说明授权成功
3、创建定时备份
1)创建一个用于存放备份脚本文件的目录
mkdir -p /usr/backup
2)创建sh脚本文件
vim backup_to_baidu.sh
输入一下内容(一定要注意脚本的代码规范,切记。)
backtar=`date '+%Y%m%d%H%M%S'` zip -r /usr/backup/${backtar}.zip /var/www/html bypy upload /usr/backup/${backtar}.zip find /usr/backup -mtime +7 |grep .zip | xargs rm -f
第一行:备份文件名,此处设为当前时间:年月日时分秒
第二行:压缩需要备份的文件生成到一个压缩文件,以空格隔开将要压缩的文件,可以添加多个
第三行:上传刚创建的压缩文件,如果无法触发上传,可能是由于系统找不到bypy指令,这里可以使用绝对路径/usr/local/bin/bypy
第四行:删除7天前生成的压缩包
保存文件后,一般情况下当前目录是没有执行.sh文件的权限的,会导致无法执行该脚本,所以需要在当前目录下运行一下以下代码:
chmod u+x *.sh
3)设置定时任务
crontab -e
20 23 * * * /usr/backup/backup_to_baidu.sh
格式为:分 时 日 月 周 命令 ,如上面设置了每天23时20分自动执行
4)查看是否备份成功
由于百度PCS API权限限制,文件会自动存储百度网盘/apps/bypy目录下,登录到百度网盘的/apps/bypy是否存在备份文件,如果有,说明备份成功了
参考:
https://blog.csdn.net/zhang_sir5768/article/details/124696325
https://www.godyang.com/?id=59