Centos7下利用crontab+bypy实现自动备份数据到百度网盘

  • A+
所属分类:vps教程

一、关于 

有时候我们需要进行数据备份,如果能自动将数据备份到百度网盘,那将会非常方便。百度网盘有较大的存储空间,而且不怕数据丢失,安全可靠。下面简单的总结一下如何使用 bypy 实现百度网盘数据的同步。

这是一个百度云的 Python 客户端,其主要目的和功能,就是为 Linux 使用者提供一种在命令行下,使用百度云盘中的存储空间的方法。它提供文件列表、下载、上传、比较、向上同步、向下同步,等操作。

二、环境配置

环境:Centos7+python2.7.5

查看系统是否有python环境(一般系统自带python2.7)

python

Centos7下利用crontab+bypy实现自动备份数据到百度网盘-1

安装pip、bypy

sudo yum -y install epel-release     #这是安装pip时要用到的东西
sudo yum -y install python-pip
sudo yum clean all
sudo pip install --upgrade pip     #更新 
#如果无法更新可以使用命令:sudo python -m pip install --upgrade pip
sudo pip install bypy
sudo pip install requests

如出现如下界面,则安装完成

Centos7下利用crontab+bypy实现自动备份数据到百度网盘-2

三、授权登陆

执行bypy info

bypy info

访问方框内的连接

Centos7下利用crontab+bypy实现自动备份数据到百度网盘-3

登陆百度云账号

Centos7下利用crontab+bypy实现自动备份数据到百度网盘-4

获得授权码

Centos7下利用crontab+bypy实现自动备份数据到百度网盘-5

粘贴到终端上

Centos7下利用crontab+bypy实现自动备份数据到百度网盘-6

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

bypy info     #空间使用信息
bypy list     #目录信息

Centos7下利用crontab+bypy实现自动备份数据到百度网盘-7

四、使用bypy备份数据

例如我们可以备份上传‘’/test"目录下的所有文件

Centos7下利用crontab+bypy实现自动备份数据到百度网盘-8

把本地当前目录下的文件同步到百度云盘:

bypy upload     #要注意切换到你想要上传的目录在执行这个命令

Centos7下利用crontab+bypy实现自动备份数据到百度网盘-9

登录到网盘上,可以看到所有文件已经上传

Centos7下利用crontab+bypy实现自动备份数据到百度网盘-10

把云盘上的内容同步到本地:

bypy downdir

比较本地当前目录和云盘根目录,看是否一致,来判断是否同步成功:

bypy cmpare

比较当前目录与云盘目录,结果如下

Centos7下利用crontab+bypy实现自动备份数据到百度网盘-11

 

五、使用crontab实现定时自动数据备份

crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。每个用户可以拥有自己的crontab文件。同时,操作系统保存一个针对整个系统的crontab文件,该文件通常存放于/etc目录中。

用法:* * * * * command。前面5个*代表执行命令时间,后面的command代表要执行的命令。该命令可以使一个普通的命令、shell脚本、python脚本、java的jar包等

创建shell脚本

Centos7下利用crontab+bypy实现自动备份数据到百度网盘-12

添加crontab任务

crontab -e

输入一下内容,“* 3 * * *“表示每天凌晨3点,“/usr/bin/sh”是执行脚本命令的路径,后面的事要被执行的脚本的绝对路径(为避免环境问题,推荐命令带上路径)

Centos7下利用crontab+bypy实现自动备份数据到百度网盘-13

查看任务

crontab -l

Centos7下利用crontab+bypy实现自动备份数据到百度网盘-14

重启crond服务

sudo systemctl restart crond

这样系统将会每天定时执行数据备份的脚本

这里为了方便我们观察脚本真的被执行了,将数据备份的脚本替换为输出一句“hello!!!”

Centos7下利用crontab+bypy实现自动备份数据到百度网盘-15

使用“crontab  -e”命令将执行时间修改为每分钟(将前面改为:* * * * *),然后重启crond服务

会看到一条“您在 /var/spool/mail/zctzl 中有邮件”的消息,使用tail命令查看其内容,可以看到输出的"hello!!!"

Centos7下利用crontab+bypy实现自动备份数据到百度网盘-16

crontab配置文件位于“/etc/crontab”,打开配置文件,可以看到相关配置信息

Centos7下利用crontab+bypy实现自动备份数据到百度网盘-17

 

如果crontab执行过程发生错误,可以在"/var/spool/mail/zctzl"(最后一个替换为自己的用户名)文件查看具体报错信息。

如果该文件为空,可能是以下原因导致的:

①crontab任务没有执行:到"/var/log/"目录下,会找到一些以"cron"+"日期"命名的文件,里面记录了crontab的执行记录(没有细节或报错信息等),如果能找到对应的记录则说明crontab任务执行了。

②没有安装postfix服务:“/var/spool/mail/zctzl”里的信息是以邮件的服务发送的,需要确保安装postfix,可以使用"rpm -aq | grep postfix"查看是否安装postfix服务,如果没有安装使用"sudo yum -y install postfix"安装

③安装但没有开启postfix服务:使用"sudo systemctl start postfix"启动服务,设置开机自启"sudo systemctl enable postfix"。在实际启用postfix服务是遇到“postfix: fatal: parameter inet_interfaces: no local interface found for ::1”的报错信息,原来是配置文件的原因,需要修改配置文件"vim  /etc/postfix/main.cf",将"inet_interfaces = localhost"改为"inet_interfaces = all",然后再启动即可解决。

Centos7下利用crontab+bypy实现自动备份数据到百度网盘-18

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: