(转)全网服务器数据生产架构方案案例模型

原文:http://www.z-dig.com/backing-up-server-data-production-architecture-scheme-of-network-wide-case-models.html

http://www.cnblogs.com/lyq863987322/p/7723199.html

day10、nfs+rsync全网备份及实时同步
目录

题目要求
2.1 NFS存储服务器部署
2.1.1 第一步、部署NFS服务端
2.1.2 第二步、优化NFS服务
2.1.3 第三步、rsync客户端部署
2.2 web01服务器部署
2.2.1 第一步、部署NFS客户端
2.2.2 优化
2.3 web02服务器部署
2.3.1 第一步、部署NFS客户端
2.3.2 优化
3.1 第一、rsync服务部署
3.1.1 一、确认rsync服务软件安装
3.1.2 二、编写配置文件
3.1.3 三、创建rsync服务,管理用户
3.1.4 四、创建备份目录,并设置属主和属组为rsync
3.1.5 五、创建认证密码文件,并设置600权限
3.1.6 六、启动服务
4.1 serync方法
4.1.1 安装sersync软件(二进制包安装)
4.1.2 编写sersync配置文件
4.1.3 启动sersync服务
4.1.4 测试
4.2 inotify方法
4.2.1 安装inotify软件
4.2.2 进行监控测试
4.2.3 编写脚本,实现rsync+inotify软件功能结合
4.2.4 后台运行脚本
5.1 第一步、命令测试
5.1.1 查看是否建好备份目录了
5.1.2 测试打包备份系统配置文件命令
5.1.3 推送数据测试
5.1.4 删除大于7天命令测试
5.1.5 利用md5sum指纹进行验证
5.2 第二步、写脚本
5.2.1 web01:
5.2.2 web02:
5.2.3 nfs服务器
5.3 写定时任务
5.3.1 web01
5.3.2 web02
5.3.3 nfs服务器
5.4 backup备份服务器部署
5.4.1 指纹对不对
5.4.2 发送检验邮件
5.4.3 删除180以前的数据文件,保留所有周一的文件
5.4.4 编写脚本
5.4.5 写定时任务

回到顶部
题目要求
注意:博主使用的系统为:

[root@web01 ~]# uname -a
Linux web01 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

实例1-1 服务器及IP主机名规划

已知 4 台服务器主机名主机对应信息见下表:

服务器说明

外网 IP(NAT)

内网 IP(NAT)

主机名

web服务器

10.0.0.7/24

172.16.1.7/24

web02

web服务器

10.0.0.8/24

172.16.1.8/24

web01

NFS存储服务器

10.0.0.31/24

172.16.1.31/24

nfs01

rsync备份服务器

10.0.0.41/24

172.16.1.41/24

backup

实例1-2 搭建网站集群后端NFS共享存储搭建及优化解决方案

1、配置 NFS 服务:

要求:

1)在NFS服务端nfs01上共享/data目录,允许从NFS客户端web01、web02上分别挂载共享目录。

2)当在NFS客户端web01上的挂载点/data写入数据时,在NFS客户端web02上也可以删除或修改。

3)问答题:如何优化NFS服务?

实例1-3 搭建网站集群全网备份服务器backup

l 要求:在backup服务器上配置Rsync数据同步服务,从nfs01服务器上可以推送数据到backup服务器的/backup目录

l 具体要求:backup 服务器的备份目录必须为/backup。

实例1-4 实时数据同步要求

当用户通过任意台web服务器将数据写入到NFS服务器nfs01时,同时复制到备份服务器backup。

第2章 搭建网站集群后端NFS共享存储搭建及优化解决方案
回到顶部
2.1 NFS存储服务器部署
2.1.1 第一步、部署NFS服务端
2.1.1.1 一、查看nfs和rpc的安装
[root@nfs01 ~]# rpm -qa |grep -E "nfs|rpc"

nfs-utils-1.2.3-75.el6.x86_64

xmlrpc-c-1.16.24-1210.1840.el6.x86_64

xmlrpc-c-client-1.16.24-1210.1840.el6.x86_64

nfs-utils-lib-1.1.5-13.el6.x86_64

rpcbind-0.2.0-13.el6_9.1.x86_64

libtirpc-0.2.1-13.el6_9.x86_64

实例2-1 nfs和rpc服务进程的安装方法

yum install -y nfs-utils rpcbind

2.1.1.2 二、编写NFS配置文件
[root@nfs01 ~]# cat /etc/exports

/data 172.16.1.0/24(rw,sync)

2.1.1.3 三、创建共享目录,并且进行权限设定
[root@nfs01 ~]# mkdir /data -p

[root@nfs01 ~]# chown -R nfsnobody.nfsnobody /data/

[root@nfs01 ~]# ll -d /data/

drwxr-xr-x 2 nfsnobody nfsnobody 24576 Oct 17 17:25 /data/

说明:NFS共享目录管理用户为nfsnobody,此用户不用创建;安装NFS软件的时候会自动创建

2.1.1.4 四、启动服务
首先启动rpc服务

[root@nfs01 ~]# /etc/init.d/rpcbind start

其次启动nfs服务

[root@nfs01 ~]# /etc/init.d/nfs start

查看可挂载的共享目录

[root@nfs01 ~]# showmount -e 10.0.0.31

Export list for 10.0.0.31:

/data 172.16.1.0/24

2.1.1.5 五、设置为开机自启动
chkconfig rpcbind on

chkconfig nfs on

2.1.2 第二步、优化NFS服务
思路:两台连接的web服务器上同时创建相同UID的www用户,NFS服务器上配置anonuid和anongid参数,设置不让全部用户进行映射,只映射root用户

配置文件修改:

[root@nfs01 ~]# vim /etc/exports

/data 172.16.1.0/24(rw,sync,no_all_squash,root_squash,anonuid=666,anongid=666)

授权共享目录属主和属组为www权限

[root@nfs01 data]# chown www.www /data/

[root@nfs01 data]# ll -d /data/

drwxr-xr-x 2 www www 24576 Oct 18 17:25 /data/

平滑重启nfs服务

[root@nfs01 data]# /etc/init.d/nfs reload

2.1.3 第三步、rsync客户端部署
2.1.3.1 一、rsync软件的安装
[root@nfs01 tmp]# rpm -qa rsync

rsync-3.0.6-12.el6.x86_64

2.1.3.2 二、建立认证文件,并改600权限
[root@nfs01 data]# echo "oldboy123" >/etc/rsync.password

[root@nfs01 data]# chmod 600 /etc/rsync.password

[root@nfs01 data]# ll -d /etc/rsync.password

-rw------- 1 root root 10 Oct 18 18:52 /etc/rsync.password

2.1.3.3 三、推送测试
nfs服务器:推送

[root@nfs01 data]# rsync -avz ts.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

sending incremental file list

ts.txt

 

sent 63 bytes received 27 bytes 180.00 bytes/sec

total size is 0 speedup is 0.00

backup服务器:查看

[root@backup backup]# ll

total 8

drwxr-xr-x 2 rsync rsync 4096 Oct 18 00:00 172.16.1.31

drwxr-xr-x 2 rsync rsync 4096 Oct 13 20:03 172.16.1.8

-rw-r--r-- 1 rsync rsync 0 Oct 18 18:53 ts.txt

回到顶部
2.2 web01服务器部署
2.2.1 第一步、部署NFS客户端
2.2.1.1 一、确认nfs和rpc的安装
[root@web01 ~]# rpm -qa|grep -E "nfs|rpc"

nfs-utils-1.2.3-75.el6.x86_64

xmlrpc-c-1.16.24-1210.1840.el6.x86_64

xmlrpc-c-client-1.16.24-1210.1840.el6.x86_64

nfs-utils-lib-1.1.5-13.el6.x86_64

rpcbind-0.2.0-13.el6_9.1.x86_64

libtirpc-0.2.1-13.el6_9.x86_64

2.2.1.2 二、启动rpcbind服务
[root@web01 ~]# /etc/init.d/rpcbind start

2.2.1.3 三、检查可挂载的共享目录
[root@web01 ~]# showmount -e 10.0.0.31

Export list for 10.0.0.31:

/data 172.16.1.0/24

2.2.1.4 四、挂载共享目录
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/ /mnt/

[root@web01 ~]# ll -d /mnt/

drwxr-xr-x 2 nfsnobody nfsnobody 24576 Oct 17 2017 /mnt/

[root@web01 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda3 8.8G 1.5G 6.9G 18% /

tmpfs 238M 0 238M 0% /dev/shm

/dev/sda1 190M 35M 146M 19% /boot

172.16.1.31:/data/ 8.8G 1.5G 6.9G 18% /mnt

2.2.1.5 五、测试
web01服务器:

[root@web01 ~]# cd /mnt/

[root@web01 mnt]# ll

total 0

-rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 18 2017 oldboy.txt

[root@web01 mnt]# touch web01.txt

[root@web01 mnt]# ll

total 0

-rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 18 2017 oldboy.txt

-rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 18 2017 web01.txt

nfs存储服务器:

[root@nfs01 data]# ll

total 0

-rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 18 17:23 oldboy.txt

-rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 18 17:25 web01.txt

2.2.1.6 六、设置开机自动挂载
利用/etc/fstab文件结合netfs服务,实现自动挂载

先编辑/etc/fstab文件

172.16.1.31:/data/r /data/r nfs defaults 0 0

在开机自启动netfs服务

[root@web01 mnt]# chkconfig netfs on

[root@web01 mnt]# chkconfig |grep "netfs"

netfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off

2.2.2 优化
2.2.2.1 创建www用户设置uid为666
[root@web01 mnt]# useradd -u 666 www

[root@web01 mnt]# id www

uid=666(www) gid=666(www) groups=666(www)

2.2.2.2 重新挂载
[root@web01 ~]# umount /mnt/

[root@web01 ~]# umount /mnt/

umount: /mnt/: not mounted

[root@web01 ~]# mount -t nfs 172.16.1.31:/data/ /mnt/

[root@web01 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda3 8.8G 1.5G 6.9G 18% /

tmpfs 238M 0 238M 0% /dev/shm

/dev/sda1 190M 35M 146M 19% /boot

172.16.1.31:/data/ 8.8G 1.5G 6.9G 18% /mnt

2.2.2.3 测试
root用户测试:可以进行操作

[root@web01 mnt]# ll

total 0

-rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 18 2017 oldboy.txt

-rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 18 2017 web01.txt

[root@web01 mnt]# \rm -f web01.txt

[root@web01 mnt]# ll

total 0

-rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 18 2017 oldboy.txt

www用户测试:可以进行操作

[www@web01 mnt]$ touch web01.txt

[www@web01 mnt]$ ll

total 0

-rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 18 2017 oldboy.txt

-rw-rw-r-- 1 www www 0 Oct 18 2017 web01.txt

其他用户测试:不可操作(提升了安全性)

[root@web01 ~]# useradd lyq

[root@web01 ~]# echo "123456"|passwd --stdin lyq

Changing password for user lyq.

passwd: all authentication tokens updated successfully.

[root@web01 ~]# su - lyq

[lyq@web01 ~]$ cd /mnt/

[lyq@web01 mnt]$ \rm -f web01.txt

rm: cannot remove `web01.txt': Permission denied

 

回到顶部
2.3 web02服务器部署
2.3.1 第一步、部署NFS客户端
2.3.1.1 一、确认nfs和rpc安装
[root@web02 ~]# yum install -y nfs-utils rpcbind

[root@web02 ~]# rpm -qa |egrep "nfs|rpcbind"

nfs-utils-1.2.3-75.el6.x86_64

nfs-utils-lib-1.1.5-13.el6.x86_64

rpcbind-0.2.0-13.el6_9.1.x86_64

2.3.1.2 二、启动rpcbind服务
[root@web02 ~]# /etc/init.d/rpcbind start

Starting rpcbind: [ OK ]

2.3.1.3 三、检查可挂载的共享目录
[root@web02 ~]# showmount -e 10.0.0.31

Export list for 10.0.0.31:

/data 172.16.1.0/24

2.3.1.4 四、挂载共享目录
[root@web02 ~]# mount -t nfs 172.16.1.31:/data/ /mnt/

[root@web02 ~]# ll -d /mnt/

drwxr-xr-x 2 nfsnobody nfsnobody 24576 Oct 17 17:25 /mnt/

[root@web02 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda3 8.8G 1.5G 6.9G 18% /

tmpfs 238M 0 238M 0% /dev/shm

/dev/sda1 190M 35M 146M 19% /boot

172.16.1.31:/data/ 8.8G 1.5G 6.9G 18% /mnt

2.3.1.5 五、测试
web02服务器:

[root@web02 ~]# cd /mnt/

[root@web02 mnt]# ll

total 0

[root@web02 mnt]# touch oldboy.txt

[root@web02 mnt]# ll

total 0

-rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 18 17:23 oldboy.txt

nfs存储服务器:

[root@nfs01 ~]# cd /data/

[root@nfs01 data]# ll

total 0

-rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 18 17:23 oldboy.txt

2.3.1.6 六、设置开机自动挂载
利用/etc/fstab文件结合netfs服务,实现自动挂载

先编辑/etc/fstab文件

172.16.1.31:/data/r /data/r nfs defaults 0 0

在开机自启动netfs服务

[root@web02 mnt]# chkconfig netfs on

[root@web02 mnt]# chkconfig |grep "netfs"

netfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off

2.3.2 优化
2.3.2.1 创建www用户,设置uid为666
[root@web02 mnt]# useradd -u 666 www

[root@web02 mnt]# id www

uid=666(www) gid=666(www) groups=666(www)

2.3.2.2 重新挂载
[root@web02 ~]# umount /mnt

[root@web02 ~]# umount /mnt

umount: /mnt: not mounted

[root@web02 ~]# mount -t nfs 172.16.1.31:/data/ /mnt

[root@web02 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda3 8.8G 1.5G 6.9G 18% /

tmpfs 238M 0 238M 0% /dev/shm

/dev/sda1 190M 35M 146M 19% /boot

172.16.1.31:/data/ 8.8G 1.5G 6.9G 18% /mnt

2.3.2.3 测试
root用户测试:可以操作

[root@web02 mnt]# ll

total 0

-rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 18 17:23 oldboy.txt

-rw-rw-r-- 1 www www 0 Oct 18 18:26 web01.txt

[root@web02 mnt]# \rm -f oldboy.txt

[root@web02 mnt]# ll

total 0

-rw-rw-r-- 1 www www 0 Oct 18 18:26 web01.txt

www用户测试:可以操作

[www@web02 mnt]$ touch web02.txt

[www@web02 mnt]$ ll

total 0

-rw-rw-r-- 1 www www 0 Oct 18 18:26 web01.txt

-rw-rw-r-- 1 www www 0 Oct 18 18:32 web02.txt

其他用户:不可以操作

[root@web02 ~]# useradd lyq

[root@web02 ~]# echo "123456"|passwd --stdin lyq

Changing password for user lyq.

passwd: all authentication tokens updated successfully.

[root@web02 ~]# su - lyq

[lyq@web02 ~]$ cd /mnt

[lyq@web02 mnt]$ \rm -f web02.txt

rm: cannot remove `web02.txt': Permission denied

 

第3章 搭建网站集群全网备份服务器backup
要求:在backup服务器上配置Rsync数据同步服务,从nfs01服务器上可以推送数据到backup服务器的/backup目录

具体要求:backup 服务器的备份目录必须为/backup。

回到顶部
3.1 第一、rsync服务部署
3.1.1 一、确认rsync服务软件安装
[root@backup ~]# rpm -qa |grep rsync

rsync-3.0.6-12.el6.x86_64

3.1.2 二、编写配置文件
默认没有这个文件

[root@backup ~]# vim /etc/rsyncd.conf

uid = rsync

gid = rsync

use chroot = no

max connections = 200

timeout = 300

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

ignore errors

read only = false

list = false

hosts allow = 172.16.1.0/24

hosts deny = 0.0.0.0/32

auth users = rsync_backup

secrets file = /etc/rsync.password

[backup]

comment = "backup dir by oldboy"

path = /backup

3.1.3 三、创建rsync服务,管理用户
[root@backup ~]# useradd -s /sbin/nologin rsync -M

[root@backup ~]# id rsync

uid=501(rsync) gid=501(rsync) groups=501(rsync)

3.1.4 四、创建备份目录,并设置属主和属组为rsync
[root@backup ~]# mkdir -p /backup

[root@backup ~]# chown rsync.rsync /backup/

[root@backup ~]# ll -d /backup/

drwxr-xr-x 4 rsync rsync 4096 Oct 14 10:03 /backup/

3.1.5 五、创建认证密码文件,并设置600权限
[root@backup ~]# echo "rsync_backup:oldboy123" >/etc/rsync.password

[root@backup ~]# cat /etc/rsync.password

rsync_backup:oldboy123

[root@backup ~]# chmod 600 /etc/rsync.password

[root@backup ~]# ll /etc/rsync.password

-rw------- 1 root root 23 Oct 18 18:46 /etc/rsync.password

3.1.6 六、启动服务
[root@backup ~]# rsync --daemon

[root@backup ~]# ps -ef |grep rsync

root 32060 1 0 18:47 ? 00:00:00 rsync --daemon

root 32062 30842 0 18:48 pts/0 00:00:00 grep --color=auto rsync

[root@backup ~]# netstat -lntup |grep rsync

tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 32060/rsync

tcp 0 0 :::873 :::* LISTEN 32060/rsync

 

第4章 实时数据同步部署
回到顶部
4.1 serync方法
4.1.1 安装sersync软件(二进制包安装)
a 将软件上传到服务器

rz -E

b 解压软件

[root@nfs01 tools]# unzip sersync_installdir_64bit.zip

软件结构

[root@nfs01 tools]# tree sersync_installdir_64bit

sersync_installdir_64bit

└── sersync

├── bin

│ └── sersync

├── conf

│ └── confxml.xml

└── logs

c 移动

[root@nfs01 ~]# tree /usr/local/sersync/

/usr/local/sersync/

├── bin

│ └── sersync

├── conf

│ └── confxml.xml

└── logs

 

3 directories, 2 files

4.1.2 编写sersync配置文件
[root@nfs01 ~]# vim /usr/local/sersync/conf/confxml.xml

24 <localpath watch="/data">

25 <remote ip="172.16.1.41" name="backup"/>

26 <!--<remote ip="192.168.8.39" name="tongbu"/>-->

27 <!--<remote ip="192.168.8.40" name="tongbu"/>-->

28 </localpath>

29 <rsync>

30 <commonParams params="-az"/>

31 <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>

32 <userDefinedPort start="false" port="874"/><!-- port=874 -->

33 <timeout start="false" time="100"/><!-- timeout=100 -->

34 <ssh start="false"/>

35 </rsync>

4.1.3 启动sersync服务
[root@nfs01 ~]# cd /usr/local/sersync/

[root@nfs01 sersync]# cd bin

[root@nfs01 bin]# ll

total 1768

-rw-r--r-- 1 root root 1810128 Oct 26 2011 sersync

[root@nfs01 bin]# chmod +x sersync

[root@nfs01 bin]# ll

total 1768

-rwxr-xr-x 1 root root 1810128 Oct 26 2011 sersync

启动命令:(参数o一定要在参数最后)

[root@nfs01 bin]# ./sersync -dro /usr/local/sersync/conf/confxml.xml

set the system param

execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches

execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events

parse the command param

option: -d run as a daemon

option: -r rsync all the local files to the remote servers before the sersync work

option: -o config xml name: /usr/local/sersync/conf/confxml.xml

daemon thread num: 10

parse xml config file

host ip : localhost host port: 8008

daemon start,sersync run behind the console

use rsync password-file :

user is rsync_backup

passwordfile is /etc/rsync.password

config xml parse success

please set /etc/rsyncd.conf max connections=0 Manually

sersync working thread 12 = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads)

Max threads numbers is: 22 = 12(Thread pool nums) + 10(Sub threads)

please according your cpu ,use -n param to adjust the cpu rate

------------------------------------------

rsync the directory recursivly to the remote servers once

working please wait...

execute command: cd /data && rsync -az -R --delete ./ rsync_backup@172.16.1.41::nfsbackup --password-file=/etc/rsync.password >/dev/null 2>&1

run the sersync:

watch path is: /data

4.1.4 测试
web02服务器:

[root@web02 mnt]# ll

total 0

-rw-r--r-- 1 www www 0 Oct 18 19:18 ceshi.txt

-rw-rw-r-- 1 www www 0 Oct 18 18:26 web01.txt

-rw-rw-r-- 1 www www 0 Oct 18 18:32 web02.txt

[root@web02 mnt]# \rm -f ./*

[root@web02 mnt]# ll

total 0

nfs服务器:

[root@nfs01 bin]# inotify wd:1 name:ceshi.txt mask:512

cd /data && rsync -az -R --delete ./ --include="ceshi.txt" --exclude=* rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

inotify wd:1 name:web01.txt mask:512

inotify wd:1 name:web02.txt mask:512

cd /data && rsync -az -R --delete ./ --include="web01.txt" --exclude=* rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

cd /data && rsync -az -R --delete ./ --include="web02.txt" --exclude=* rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

backup服务器:

[root@backup backup]# ll

total 0

-rw-r--r-- 1 rsync rsync 0 Oct 18 19:18 ceshi.txt

-rw-rw-r-- 1 rsync rsync 0 Oct 18 18:26 web01.txt

-rw-rw-r-- 1 rsync rsync 0 Oct 18 18:32 web02.txt

[root@backup backup]# ll

total 0

回到顶部
4.2 inotify方法
4.2.1 安装inotify软件
[root@nfs01 data]# yum install -y inotify-tools

[root@nfs01 data]# rpm -ql inotify-tools

/usr/bin/inotifywait

/usr/bin/inotifywatch

4.2.2 进行监控测试
创建事件(create)

创建文件监控事件:

/data/ CREATE oldboy.txt

/data/ OPEN oldboy.txt

/data/ ATTRIB oldboy.txt

/data/ CLOSE_WRITE,CLOSE oldboy.txt

4.2.3 编写脚本,实现rsync+inotify软件功能结合
编写脚本:inotify.sh

#!/bin/bash

 

inotifywait -mrq /data --format "%w%f" -e create,delete,moved_to,close_write|while read line

do

rsync -az --delete /data/ rsync_backup@172.16.1.41::nfsbackup --password-file=/etc/rsync.password

done

4.2.4 后台运行脚本
[root@nfs01 data]# sh /server/scripts/inotify.sh &

设置脚本开机自启动

 

第5章 实现按时备份web服务器数据
要求:每天晚上00点整在Web服务器上打包备份系统配置文件、网站程序目录及访问日志并通过rsync命令推送备份服务器 backup上备份保留(备份思路可以是先在本地按日期打包,然后再推到备份服务器 backup上),NFS存储服务器同Web服务器,实际工作中就是全部的服务器。

具体要求:

1)所有服务器的备份目录必须都为/backup。

2)要备份的系统配置文件包括但不限于:

a.定时任务服务的配置文件(/var/spool/cron/root)(适合 web 和 nfs 服务器)。

b.开机自启动的配置文件(/etc/rc.local)(适合 web 和 nfs 服务器)。

c.日常脚本的目录 (/server/scripts)。

d.防火墙 iptables 的配置文件(/etc/sysconfig/iptables)。

e.自己思考下还有什么需要备份呢?

3)Web 服务器站点目录假定为(/var/html/www)。

4)Web 服务器 A 访问日志路径假定为(/app/logs)

5)Web 服务器保留打包后的 7 天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)

6)备份服务器上,保留每周一的所有数据副本,其它要保留 6个月的数据副本。

7)备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。

8)*需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中。

回到顶部
5.1 第一步、命令测试
5.1.1 查看是否建好备份目录了
web01服务器:

[lyq@web01 mnt]$ ll -d /backup/

drwxr-xr-x 3 root root 4096 Oct 13 20:10 /backup/

web02:

[root@web02 ~]# ll -d /backup/

drwxr-xr-x 2 root root 4096 Oct 18 19:49 /backup/

nfs

[root@nfs01 backup]# cd /backup/

[root@nfs01 backup]#

5.1.2 测试打包备份系统配置文件命令
web01:

[root@web01 ~]# tar zchf /backup/sys_backup_`date +%F_%w`.tar.gz /var/spool/cron/root /etc/rc.local /server/scripts/ /etc/sysconfig/iptables ##因为/etc/rc.local文件是软连接文件所以加参数-h

tar: Removing leading `/' from member names

[root@web01 backup]# ll

total 4

-rw-r--r-- 1 root root 1385 Oct 16 20:28 sys_backup_2017-10-16_1.tar.gz

web02:

[root@web02 ~]# tar zchf /backup/sys_backup_`date +%F_%w`.tar.gz /var/spool/cron/root /etc/rc.local /server/scripts/ /etc/sysconfig/iptables ##因为/etc/rc.local文件是软连接文件所以加参数-h

tar: Removing leading `/' from member names

[root@web02 ~]# cd /backup/

[root@web02 backup]# ll

total 4

-rw-r--r-- 1 root root 746 Oct 18 19:55 sys_backup_2017-10-18_3.tar.gz

nfs[root@nfs01 backup]# tar zchf /backup/sys_backup_`date +%F_%w`.tar.gz /var/spool/cron/root/etc/rc.local /server/scripts/ /etc/sysconfig/iptables ##因为/etc/rc.local是软链接,所以加一个h参数

tar: Removing leading `/' from member names

5.1.3 推送数据测试
web01:

[root@web01 backup]# rsync -avz sys_backup_2017-10-16_1.tar.gz rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

sending incremental file list

 

sent 51 bytes received 8 bytes 118.00 bytes/sec

total size is 1385 speedup is 23.47

web02:

[root@web02 backup]# vim /etc/rsync.password

oldboy123

[root@web02 backup]# chmod 600 /etc/rsync.password

[root@web02 backup]# rsync -avz sys_backup_2017-10-18_3.tar.gz rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

sending incremental file list

sys_backup_2017-10-18_3.tar.gz

 

sent 841 bytes received 27 bytes 1736.00 bytes/sec

total size is 746 speedup is 0.86

nfs

[root@nfs01 backup]# rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

sending incremental file list

./

sys_backup_2017-10-14_6.tar.gz

 

sent 842 bytes received 30 bytes 1744.00 bytes/sec

total size is 730 speedup is 0.84

backup服务器:

[root@backup backup]# ll

total 8

-rw-r--r-- 1 rsync rsync 1385 Oct 16 20:28 sys_backup_2017-10-16_1.tar.gz

-rw-r--r-- 1 rsync rsync 746 Oct 18 19:55 sys_backup_2017-10-18_3.tar.gz

5.1.4 删除大于7天命令测试
web01:

[root@web01 backup]# find /backup/ -type f -mtime +7 -name "*.tar.gz" |xargs \rm -f

web02:

[root@web02 backup]# find /backup/ -type f -mtime +7 -name "*.tar.gz" |xargs \rm -f

nfs

[root@nfs01 backup]# find /backup/ -type f -mtime +7 -name "*.tar.gz" |xargs \rm -f

5.1.5 利用md5sum指纹进行验证
web01:

[root@web01 backup]# md5sum sys_backup_2017-10-16_1.tar.gz >/backup/finger.txt

[root@web01 backup]# md5sum -c finger.txt

sys_backup_2017-10-16_1.tar.gz: OK

web02:

[root@web02 backup]# md5sum sys_backup_2017-10-18_3.tar.gz >/backup/finger.txt

[root@web02 backup]# md5sum -c finger.txt

sys_backup_2017-10-18_3.tar.gz: OK

 

[root@nfs01 backup]# md5sum sys_backup_2017-10-14_6.tar.gz >/backup/finger.txt

[root@nfs01 backup]# md5sum -c finger.txt

sys_backup_2017-10-14_6.tar.gz: OK

回到顶部
5.2 第二步、写脚本
5.2.1 web01:
[root@web01 backup]# vim /server/scripts/backup.sh

Backup="/backup"

Host_IP=`hostname -i`

Date_inof=`date +%F_%w -d "-1day"` #因为要求晚上12点备份,如果不减一天,就是12点后一天,这样的话备份的文件就得减一天

 

#创建备份目录

mkdir -p Backup/Backup/Host_IP #按要求,在/backup下创建以备份服务器ip做名字的目录,好区分不同服务器发来的数据

 

#打包备份

cd /

tar zchf Backup/Backup/Host_IP/sys_backup_${Date_inof}.tar.gz var/spool/cron/root etc/rc.local server/scripts/ etc/sysconfig/i

ptables #因为/etc/rc.local是软连接,所以加一个h参数

 

tar zcf Backup/Backup/Host_IP/www_${Date_inof}.tar.gz var/html/www/ app/logs/

 

 

#删除大于7天的数据

find $Backup -type f -mtime +7 -name "*.tar.gz" |xargs \rm -f

 

#利用md5sum指纹进行检验

md5sum Backup/Backup/Host_IP/sys_backup_Dateinof.tar.gzDateinof.tar.gzBackup/Host_IP/www_Host_IP/www_{Date_inof}.tar.gz >Backup/Backup/Host_IP/finger.

txt

 

#推送数据

rsync -az Backup/Backup/Host_IP rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

5.2.2 web02:
[root@web02 backup]# cat /server/scripts/backup.sh

#参数

Backup="/backup"

Host_IP=`hostname -i`

Date_inof=`date +%F_%w -d "-1day"` #因为要求晚上12点备份,如果不减一天,就是12点后一天,这样的话备份的文件就得减一天

 

#1.备份目录创建

mkdir -p Backup/Backup/Host_IP

 

#2.打包备份配置文件

cd /

tar zchf Backup/Backup/Host_IP/sys_backup_${Date_inof}.tar.gz var/spool/cron/root etc/rc.local server/scripts/ etc/sysconfig/iptables

tar zcf Backup/Backup/Host_IP/www_${Date_inof}.tar.gz var/html/www/ app/logs/

 

#3.删除大于7天的数据

find $Backup -type f -mtime +7 -name "*.tar.gz" |xargs \rm -f

 

#4.指纹验证信息

md5sum Backup/Backup/Host_IP/sys_backup_Dateinof.tar.gzDateinof.tar.gzBackup/Host_IP/www_Host_IP/www_{Date_inof}.tar.gz >Backup/Backup/Host_IP/finger.txt

 

#5.推送数据

rsync -az Backup/Backup/Host_IP rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

5.2.3 nfs服务器
[root@nfs01 data]# cat /server/scripts/backup.sh

#参数

Backup="/backup"

Host_IP=`hostname -i`

Date_inof=`date +%F_%w -d "-1day"` #因为要求晚上12点备份,如果不减一天,就是12点后一天,这样的话备份的文件就得减一天

 

#创建备份目录

mkdir -p Backup/Backup/Host_IP #按要求,在/backup下创建以备份服务器ip做名字的目录,好区分不同服务器发来的数据

 

#打包备份

cd /

tar zchf Backup/Backup/Host_IP/sys_backup_${Date_inof}.tar.gz var/spool/cron/root etc/rc.local server/scripts/ etc/sysconfig/iptables #因为/etc/rc.local是软连接,所以加一个h参数

 

#删除大于7天的数据

find $Backup -type f -mtime +7 -name "*.tar.gz" |xargs \rm -f

 

#利用md5sum指纹进行检验

md5sum Backup/Backup/Host_IP/sys_backup_Dateinof.tar.gz>Dateinof.tar.gz>Backup/$Host_IP/finger.txt

 

#推送数据

rsync -az Backup/Backup/Host_IP rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

 

回到顶部
5.3 写定时任务
5.3.1 web01
[root@web01 backup]# crontab -l

#time sync by oldboy at 2010-2-1

*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

#backup

00 00 * * * /bin/sh /server/scripts/backup.sh &>/dev/null

5.3.2 web02
[root@web02 backup]# crontab -l

#time sync by oldboy at 2010-2-1

*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

#backup

00 00 * * * /bin/sh /server/scripts/backup.sh &>/dev/null

5.3.3 nfs服务器
[root@nfs01 data]# crontab -l

#time sync by oldboy at 2010-2-1

*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

#backup

00 00 * * * /bin/sh /server/scripts/backup.sh &>/dev/null

回到顶部
5.4 backup备份服务器部署
5.4.1 指纹对不对
[root@backup 172.16.1.8]# md5sum -c finger.txt

/backup/172.16.1.8/sys_backup_2017-10-12_4.tar.gz: OK

/backup/172.16.1.8/www_2017-10-12_4.tar.gz: OK

/backup/172.16.1.8/logs_2017-10-12_4.tar.gz: OK

5.4.2 发送检验邮件
实例5-1 邮件配置:

第一步、先对邮件服务的配置文件进行备份

[root@backup backup]# cp /etc/mail.rc{,.bak}

第二步、修改邮件服务配置文件

添加内容到最后就可以:

set from=zxpo@163.com smtp=smtp.163.com smtp-auth-user=zxpo smtp-auth-password=此处写授权密码 smtp-auth=login

第三步、进行服务的启动

[root@backup backup]# /etc/init.d/postfix restart

Shutting down postfix: [ OK ]

Starting postfix: [ OK ]

第四步、发送邮件进行测试

[root@backup backup]# echo "miss" |mail -s "ccc" 110@qq.com

5.4.3 删除180以前的数据文件,保留所有周一的文件
[root@backup backup]# find /backup/ -type f -mtime +180 ! -name "*_1.tar.gz"|xargs \rm -f

5.4.4 编写脚本
[root@backup backup]# vim /server/scripts/check.sh

#指纹验证

find /backup -type f -name "finger.txt" |xargs md5sum -c >/tmp/cyq_check.txt

 

#发送邮件信息

mail -s "Ccc" 110@qq.com </tmp/ccc_check.txt

 

#删除180天以前数据,保留所有周一数据

find /backup/ -type f -mtime +180 ! -name "*_1.tar.gz"|xargs \rm -f

5.4.5 写定时任务
[root@backup backup]# crontab -e

#backup因为要等客户端晚上12点推送过来数据后在进行检查所以定时时间一定要在晚上12点以后

00 02 * * * /bin/sh /server/scripts/check.sh &>/dev/null


标签: day10、nfs+rsync全网备份及实时同步

posted @ 2018-02-04 22:08  liujiacai  阅读(245)  评论(0编辑  收藏  举报