原创自动备份Linux服务器数据到七牛云存储Shell脚本程序-用七牛自动备份VPS中的网站数据

1343 查看

20140211234856
这是我公开发布的第一个Shell脚本程序,这能极大的方便Linux服务器管理员使用它自动备份数据到七牛云存储。

应网友需求发布了Windows版本,详情见:http://wyr.me/330.html

这个Linux脚本用shell编写,源代码是公开的,上传组件利用了七牛提供的qrsync。你可以下载我的Shell进行修改(代码全部做了中文注释)。当然对于普通用户,你可以直接按照下面的步骤轻松进行服务器数据备份。

这个脚本支持的备份程序有:网站的代码目录,指定的MySQL数据库,Nginx或Apache的配置文件(即一个的数据库导出备份和两个目录的备份。

脚本备份顺序:1.删除本地保存的前n天数据(可指定n的数值),自动导出指定的数据库.sql文件,压缩数据库为以时间命名的tar.gz格式文件。2.压缩网站代码目录下的所有文件并打包为以时间命名的tar.gz格式文件。3.压缩配置文件目录下的所有文件并打包为以时间命名的tar.gz格式文件。4.将上述三个压缩文件包加密后压缩为zip加密压缩文件,本地保留3天备份。4.将这个zip加密压缩文件放入一个uuid生成的随机目录中。5.将最新的一个zip加密文件连同起所在目录上传到用户指定的七牛云存储,同时生成一个防破解的下载地址发送到管理员邮箱。

从上述顺序可以看出,这个脚本对网站备份及上传的处理是非常安全的,对数据进行了多级加密。

以下是面对新手的简单视频教程:

正式开始安装脚本程序:
首先,使用putty或同类软件通过SSH登陆Linux服务器。【请以root身份登陆,否则有可能导致备份失败!】

1
cd /root
执行下面这个命令下载对应的脚本程序。(如果你担心这个数据包中的内容是否安全,可以本地下载后使用七牛官方的qrsync文件替换,也可以使用文本文档打开.sh程序查看这个脚本的源代码。本人承诺没有任何窃取数据的代码,请在http://wyr.me下载本数据包以确保您的数据安全)

Linux 32位版本:

1
wget http://wyrapp.qiniudn.com/linux32bfjb.tar.gz
Linux 64位版本:

1
wget http://wyrapp.qiniudn.com/linux64bfjb.tar.gz
Mac OS 版本:

1
wget http://wyrapp.qiniudn.com/macbfjb.tar.gz

下载完毕后,接着顺序执行如下命令:

1
tar -xzvf linux32bfjb.tar.gz #解压文件,请将文件名修改为对应版本。
1
sh /root/bfjb/bfjb.sh #执行向导程序进行配置
接下来会进入一个引导界面,如果你的Linux安装了中文支持,则可以看到中文标题。如果没有安装也没关系,为了兼容所有操作系统我使用英文作为提示。按提示输入相应信息。

QQ20140211234925

以上英文提示的信息输入的顺序和下面的配置代码顺序一样,对应输入即可,很方便。

01

以下是配置内容,直接运行脚本即可出现配置向导,请勿手动修改!

02

03

七牛绑定的空间名称(bucket)。

04
QINIUMC=x
05

备份所需要的脚本文件所在目录,如按照博文顺序在root目录执行的wget的无需修改。

06
QINIUJB=/root/bfjb
07

七牛的AccessKey,到http://portal.qiniu.com/获取,登录七牛后在七牛的“帐号设置”-“密钥”中可找到。

08
QINIUAccessKey=abcd1234
09

七牛的SecretKey,到http://portal.qiniu.com/获取,登录七牛后在七牛的“帐号设置”-“密钥”中可找到。

10
QINIUSecretKey=abcd1234
11

备份密码,请务必输入20字符以上的高强度密码,目前zip的暴力破解速度非常快。

12
BFpassword=x123
13

要备份的数据库名,如需备份多个网站或多个数据库请制作做个脚本在不同之间执行,这样能降低服务器因为备份性能受到的影响。

14
MYSQL_SJNAME=x123
15

Mysql用户名(要有对应数据库的导出权限,可以用root,也可以用绑定了对应用户名的数据库)

16
MYSQL_USER=root
17

mysql密码(对应MYSQL_USER)

18
MYSQL_PASS=x123
19

数据库发送到的邮箱,如需使用请先安装mail并去掉本行和下面相关注释,CentOS6.4默认已经安装,可以直接用命令mail查看是否安装。

20
MAIL_TO=a@12345679.cn
21

要备份的网站代码目录。

22
WEB_DATA=/home/wwwroot
23

要备份的数据库mysqldump所在地址,如使用LNMP此项无需修改。

24
MYSQL_DATA=/usr/local/mysql/bin/mysqldump
25

要备份的配置文件所在地址,如使用LNMP此项无需修改。

26
PZWJ_DATA=/usr/local/nginx/conf
27

本地备份目录地址,一般来说默认即可,也可填写合法地址,请事先创建该目录*(2014年2月12日 00:35:26添加)。如有挂载第二个磁盘,建议填写磁盘剩余量大的磁盘目录地址。

28
BDBF=/home/backup
29

本地备份保留时间,必须是数字,如不保存填“0”,不能是负数。

30
bdblsjday=3
31

计划任务:脚本定时执行时间,默认凌晨00:01分进行备份

32
JHRW="01 00 * * *"
33

配置内容结束。

值得注意的是,为了您更编辑的使用这个脚本程序,我已经添加了crontab处理程序,只需在向导中(提示的地方)输入即可。例如:”01 00 * * *”。

crontab的范例格式:
下面是c r o n t a b的格式:
分< >时< >日< >月< >星期< >要运行的命令
其中< >表示空格。
C r o n t a b文件的一个条目是从左边读起的,第一列是分,最后一列是要运行的命令,它位
于星期的后面。
在这些域中,可以用横杠-来表示一个时间范围,例如你希望星期一至星期五运行某个作
业,那么可以在星期域使用1 – 5来表示。还可以在这些域中使用逗号“,”,例如你希望星期一
和星期四运行某个作业,只需要使用1 , 4来表示。可以用星号来表示连续的时间段。如果你
对某个表示时间的域没有特别的限定,也应该在该域填入
。该文件的每一个条目必须含有5
个时间域,而且每个域之间要用空格分隔。该文件中所有的注释行要在行首用#来表示。

crontab条目举例

这里有c r o n t a b文件条目的一些例子:

30 21* * * /apps/bin/cleanup.sh

上面的例子表示每晚的2 1 : 3 0运行/ a p p s / b i n目录下的c l e a n u p . s h。

45 4 1,10,22 * * /apps/bin/backup.sh

上面的例子表示每月1、1 0、2 2日的4 : 4 5运行/ a p p s / b i n目录下的b a c k u p . s h。

10 1 * * 6,0 /bin/find -name “core” -exec rm {} ;

上面的例子表示每周六、周日的1 : 1 0运行一个f i n d命令。

0,30 18-23 * * * /apps/bin/dbcheck.sh

上面的例子表示在每天1 8 : 0 0至2 3 : 0 0之间每隔3 0分钟运行/ a p p s / b i n目录下的d b c h e c k . s h。

0 23 * * 6 /apps/bin/qtrend.sh

上面的例子表示每星期六的11 : 0 0 p m运行/ a p p s / b i n目录下的q t r e n d . s h。

你可能已经注意到上面的例子中,每个命令都给出了绝对路径。当使用c r o n t a b运行s h e l l

脚本时,要由用户来给出脚本的绝对路径,设置相应的环境变量。记住,既然是用户向c r o n

提交了这些作业,就要向c r o n提供所需的全部环境。不要假定c r o n知道所需要的特殊环境,它

其实并不知道。所以你要保证在s h e l l脚本中提供所有必要的路径和环境变量,除了一些自动

设置的全局变量。

———————–
知识共享许可协议
本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

原创文章,您可以在上述协议允许的范围内转载(转载及表示您同意上述协议),请注明: 文章来自王轶的博客,本文地址:原创自动备份Linux服务器数据到七牛云存储Shell脚本程序-用七牛自动备份VPS中的网站数据(http://wyr.me/314.html