利用crontab+bypy实现自动备份数据到百度网盘(centos)

2022-12-28 20:08:17 浏览数 (3)

一、关于

有时候我们需要进行数据备份,如果能自动将数据备份到百度网盘,那将会非常方便。百度网盘有较大的存储空间,而且不怕数据丢失,安全可靠。下面简单的总结一下如何使用 bypy 实现百度网盘数据的同步。 这是一个百度云的 Python 客户端,其主要目的和功能,就是为 Linux 使用者提供一种在命令行下,使用百度云盘中的存储空间的方法。它提供文件列表、下载、上传、比较、向上同步、向下同步,等操作。

二、环境配置

python2.7.5 centos7

查看centos版本信息

代码语言:javascript复制
cat /etc/redhat-release

查看linux版本

代码语言:javascript复制
cat /proc/version

查看python版本

代码语言:javascript复制
python

(此命令查看过后用Ctrl-D退出或输入quit()退出) 安装pipbypy

代码语言:javascript复制
sudo yum -y install epel-release     #这是安装pip时要用到的东西
sudo yum -y install python-pip
sudo yum clean all
sudo pip install --upgrade pip     #更新 

{message type="error"}如果无法更新可以使用命令:sudo python -m pip install --upgrade pip{/message}

代码语言:javascript复制
sudo pip install bypy
sudo pip install requests

如果出现下面这个,说明安装成功

上传到百度网盘

1、执行

代码语言:javascript复制
bypy info  --这里随意执行一条操作命令目的是为了授权

授权完成后可查看相关信息,由于百度PCS API权限限制,程序只能存取百度云端bypy目录下面的文件和目录

代码语言:javascript复制
bypy info     #空间使用信息
bypy list     #目录信息

之后是同步文件到百度网盘

代码语言:javascript复制
bypy upload     #要注意切换到你想要上传的目录在执行这个命令

三、bypy常用方法

重新绑定云盘用户

1:清空认证

代码语言:javascript复制
bypy -c

2:在云盘创建文件夹

代码语言:javascript复制
bypy mkdir  name

3:上传本地文件到云盘指定路径

代码语言:javascript复制
bypy upload 本地文件名 /云盘文件名

4:查看云盘列表

代码语言:javascript复制
bypy list

5:可以选择文件夹下载 百度网盘/应用文件/bypy/aaa/bbb文件到本地

代码语言:javascript复制
bypy downdir /aaa/bbb 

下面才是重头戏,上面只是搭建过程,我们要备份网站,首先要确定好备份目录以及要上传百度网盘的目录 比如备份网站目录(www),上传目录 /home/backup/这个自己随意,编写脚本

代码语言:javascript复制
vim /home/backup/backup.sh

#!/bin/bash
# -------------------------------------------------------------------------------
# FileName:  backup.sh 
# Describe:  Used for database backup
# Revision:  1.0
# Date:    2021/2/25
# Author:  小白 の 博客
 
# 设置mysql的登录用户名和密码(根据实际情况填写)
MYSQL_USER="root"                #数据库用户
MYAQL_PASSWORD="数据库密码"       #数据库密码
MYSQL_HOST="localhost"           #数据库IP(本地)
MYSQL_PORT="3306"                #数据库端口
BACKUP_DIR=/home/backup/         #备份到哪个目录
 
DATE=`date  %Y%m%d%H%M`          #时间
echo "Backup Begin Date:" $(date  "%Y-%m-%d %H:%M:%S")
# 备份全部数据库
mysqldump -h$MYSQL_HOST -P$MYSQL_PORT -u$MYSQL_USER -p$MYAQL_PASSWORD -R -E --all-databases --single-transaction > $BACKUP_DIR/mysql_b
ackup_$DATE.sql
#保留3天的数据
find $backup_dir -mtime  7 -type f -name '*.sql' -exec rm -rf {} ;
echo "Backup Succeed Date:" $(date  "%Y-%m-%d %H:%M:%S")
 
#备份html文件
tar zcPf $BACKUP_DIR/html_${DATE}.tar.gz /var/www/html

之后修改backup.sh文件权限

代码语言:javascript复制
chmod 755 /home/backup/backup.sh

四:定时上传到百度云盘

bypy 无法同时上传多个文件,百度云不支持上传文件夹,可以通过压缩的方式解决。

1:新建一个脚本文件写入下面的指令,上传当日sql备份文件到云盘指定位置。

代码语言:javascript复制
touch /home/backup/baidu_backup.sh
chmod 777 /home/backup/baidu_backup.sh

脚本编写成功之后先实验一下能不能备份和上传

代码语言:javascript复制
sh /home/backup/backup.sh
sh /home/backup/baidu_backup.sh

五:crontab -e

编写定时任务 crontab -e

代码语言:javascript复制
#每天早上2点执行数据库和html备份脚本
 
0 2 * * * /bin/sh /home/backup/backup.sh >/dev/null 2>&1
 
#每天早上4点执行上传百度网盘脚本
 
0 4 * * * /bin/sh /home/backup/baidu_backup.sh >/dev/null 2>&1

最后记得重启crond

代码语言:javascript复制
systemctl restart crond

1 人点赞