测试NFS+rsync+sersync+SMTP+shell脚本+cron

考核1:

实现拓扑图:

实验需要的机器:


名称


ip地址


主机名


web服务器


192.168.1.10


web01


rsync备份服务器


192.168.1.20


rsync


nfs存储服务器


192.168.1.30


nfs

1,nfs创建一个目录名为/data/web的目录作为web服务器的后端存储,然后共享使用虚拟用户webuser,因为公司访问量不是很大,所以可以直接用sync来同步写入到磁盘

在NFS服务器上:

yum -y install nfs-utils.x86_64 rpcbind.x86_64

/etc/init.d/rpcbind start && /etc/init.d/nfs start

mkdir -p /data/web

[[email protected] ~]# cat /etc/exports  #修改nfs配置文件

/data/web 192.168.1.0/24(rw,sync,root_squash,all_squash,anonuid=666,anongid=666)

useradd -u 666 webuser -s /sbin/nologin –M

chown -R webuser:webuser /data/web/

[[email protected] ~]# exportfs -arv

exporting 192.168.1.0/24:/data/web

#先进行本地挂载测试,如果成功在到远端挂载

[[email protected] ~]# showmount -e 192.168.1.30

Export list for 192.168.1.30:

/data/web 192.168.1.0/24

[[email protected] ~]# mount -t nfs 192.168.1.30:/data/web /mnt/

[[email protected] ~]# df -Th

Filesystem           Type   Size  Used Avail Use% Mounted on

/dev/mapper/vg_moban-lv_root

ext4    18G 1000M   16G   6% /

tmpfs                tmpfs  490M     0  490M   0% /dev/shm

/dev/sda1            ext4   477M   52M  400M  12% /boot

192.168.1.30:/data/web   nfs     18G 1000M   16G   6% /mnt

[[email protected] ~]# umount /mnt

在web服务器挂载nfs用作网站的后端存储:

[[email protected] ~]# mkdir /webdata

[[email protected] ~]# mount -t nfs 192.168.1.30:/data/web /webdata/

[[email protected] ~]# df -Th

Filesystem           Type   Size  Used Avail Use% Mounted on

/dev/mapper/vg_moban-lv_root

ext4    18G  998M   16G   6% /

tmpfs                tmpfs  490M     0  490M   0% /dev/shm

/dev/sda1            ext4   477M   52M  400M  12% /boot

192.168.1.30:/data/web  nfs     18G 1000M   16G   6% /webdata

[[email protected] ~]# echo "mount -t nfs 192.168.1.30:/data/web /webdata/" >>/etc/rc.local  #设置成开机自动挂载

NFS共享挂载已经完成,然后下一步实施搭建rsync服务器

yum -y install rsync.x86_64

[[email protected] ~]# vim /etc/rsyncd.conf

uid = rsync

gid = rsync

use chroot = no

max connections = 20

list = false

timeout = 300

read only = false

pid file = /var/run/rsyncd.pid

lock file= /var/run/rsyncd.lock

log file = /var/log/rsyncd.log

ignore errors

host allow = 192.168.1.0/24

[nfsbackup]

comment = This is an nfs real-time backup module

path = /backup/nfs

auth users = nfs_rsync

secrets file = /etc/rsync.password

[[email protected] ~]# mkdir -p /backup/nfs

[[email protected] ~]# useradd rsync -s /sbin/nologin -M

[[email protected] ~]# chown rsync:rsync /backup/nfs/

[[email protected] ~]# echo "nfs_rsync:nfspassword" >> /etc/rsync.password

[[email protected] ~]# chmod 600 /etc/rsync.password

[[email protected] nfs]# /usr/bin/rsync --daemon

[[email protected] nfs]# echo "/usr/bin/rsync --daemon" >>/etc/rc.local

NFS充当客户端:

[[email protected] ~]# echo "nfspassword" >> /etc/rsync.password #生成密码文件

[[email protected] ~]# chmod 600 /etc/rsync.password

[[email protected] ~]# yum -y install rsync.x86_64

[[email protected] ~]# rsync -avz /data/web/ [email protected]::nfsbackup/ --password-file=/etc/rsync.password

测试推送成功,

然后在NFS上的数据要实时的备份到rsync服务器上(sersync)

[[email protected] ~]# mkdir /applocal/

[[email protected]~]# mv sersync2.5.4_64bit_binary_stable_final.tar.gz  /applocal/

[[email protected] ~]# cd /applocal/

[[email protected] applocal]# tar -xvzf sersync2.5.4_64bit_binary_stable_final.tar.gz

sersync /

sersync /bin/sersync2

sersync/conf/confxml.xml

[[email protected] sersync]# tree /applocal/sersync

/applocal/sersync

├── bin

│   └── sersync2

└── conf

└── confxml.xml

2 directories, 2 files

[[email protected] conf]# cp confxml.xml{,.bak}

[[email protected] conf]# vim confxml.xml

<sersync>

<localpath watch="/data/web/">

<remote ip="192.168.1.20" name="nfsbackup"/>

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

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

</localpath>

<rsync>

<commonParams params="-az"/>

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

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

<timeout start="true" time="100"/><!-- timeout=100 -->

<ssh start="false"/>

</rsync>

<failLog path="/applocal/sersync/log/rsync_fail_log.sh" timeToExecute="60"/><!--default every

60mins execute once-->

[@nfs /]# /applocal/sersync/bin/sersync2 -dro /applocal/sersync/conf/confxml.xml

[[email protected] conf]# cd /data/web/

[[email protected] web]# touch 1

[[email protected] web]# echo " /applocal/sersync/bin/sersync2 -dro /applocal/sersync/conf/confxml.xml" >>/etc/rc.local

#然后实行全网备份脚本:

备份每台服务器里面的:/etc/rc.local    /etc/hosts    /scripts

备份数据在本地保存7天,在rsync上保存180天,星期六的数据不删除

如果备份成功发送邮件到[email protected]

1)先搭建邮件服务,用SMTP

[[email protected] etc]# yum -y install mailx.x86_64

[[email protected] etc]# vim /etc/mail.rc

##邮件服务,利用qq.com来发送邮件

set [email protected]

set smtp=smtps://smtp.qq.com:465

set [email protected]

set smtp-auth-password=dcnhslrkexdbbgbh

set smtp-auth=login

set ssl-verify=ignore

set nss-config-dir=/etc/pki/nssdb

[[email protected] etc]# echo 123 | mail -v -s "test Email" [email protected]

然后开始写备份脚本:

在rsync配置文件里面增加:

[networkbackup]

comment = This is a full network backup module

path = /backup

auth users = rsync_backup

secrets file = /etc/rsyncn.password

[[email protected] etc]# chown rsync:rsync /backup/

[[email protected] etc]# echo "rsync_backup:rsync_backup" >>/etc/rsyncn.password

[[email protected] etc]# chmod 600 /etc/rsyncn.password

[[email protected] backup]# vim /scripts/nfs_backup.sh

#!/bin/bash

#创建一个备份使用的脚本,要求如下:

#1,使用日期作为文件名的一部分

#2,打包备份/etc/rc.local and /etc/exports and /scripts/ and /etc/crontab

#3,备份数据在本地只保留7天

#4,备份数据都放在/backup/目录下

#5,推送到备份服务器上要是用自己的ip地址作为目录

#每天00点打包文件,然后推送,这时候文件名日期应该是前一天的日期,截取前一天的日期

Time=$(/bin/date +"%Y-%m-%d" -d "-1 days")

Ip=$(/sbin/ifconfig eth3|awk -F "[ :]+" 'NR==2 {print $4}' )

[ ! -d /backup/$Ip ] && mkdir -p /backup/$Ip

Path=/backup/$Ip

tar -czf $Path/$Time\.tar.gz /etc/rc.local /etc/exports /scripts/ /etc/crontab \

&& md5sum $Path/$Time\.tar.gz >$Path/file.md5

rsync -az /backup/ [email protected]::networkbackup --password-file=/etc/rsyncn.password

#然后删除七天以前的文件

find $Path -mtime +7 -type f |xargs -i rm -rf {}

[[email protected] ~]# crontab -l -u root

00 * * * * /bin/sh /scripts/nfs_backup.sh

#!/bin/bash

#先找出180天以前的文件,进行删除,因为/backup目录下有一个nfs目录是nfs的备份文件所以它里面的内容不>

能动,要给他排除掉

for i in  `find /backup/ -type d ! -name nfs`

do

#进行文件完整性校验

[ -f $i/file.md5 ] && \

if [ $(md5sum $i/file.md5 | awk -F "[: ]+" '{print $2}') = 'OK' ]

then

echo "文件备份成功" |mail -s "文件备份" [email protected]

fi

#删除80天以前的内容

find $i -type f -mtime +180 | xargs -i rm -rf {}

done

[[email protected] 192.168.1.30]# crontab -l -u root

00 * * * * /bin/sh /scripts/backup_del_md5.sh

原文地址:http://blog.51cto.com/13447608/2118140

时间: 2024-10-18 14:50:01

测试NFS+rsync+sersync+SMTP+shell脚本+cron的相关文章

使用ansible自动化部署nfs+rsync+sersync+web01自动化挂载

第1章 思考 1.1如何一键使用ansible搭建 1.1.1第一步目标 首先我们要明确的是我们需要实现的是一键的自动化脚本,既执行一个脚本然后就自动化安装nfs+rsync+sersync,然后让web01自动挂载nfs共享目录, 1.1.2第二步关系明确及顺序 既然有目标了那么我们需要做的就是我们需要明白自动化安装的先后顺序. 既然我们是需要ansible才能自动化安装那么我们就需要先安装ansible 安装了ansible之后,既然我们想要挂载,那么我们就需要有nfs共享,和rsync备份

测试数据库并发压力的shell脚本

本节内容:一例用于测试数据库并发压力的shell脚本代码. 例子: #!/bin/bash #********************************# #并发后台运行fun # #for wanggy 2012-01-25 # #note: www.jquerycn.cn # #fun_num fun函数后台运行次数 # #sql_num 每个函数sql运行次数 # #********************************# #数据库变量设置 dbhost=192.168.1

linux下使用smtp+shell脚本实现服务器存活状态监控

简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是在Internet传输email的事实标准, SMTP是一个相对简单的基于文本的协议.在其之上指定了一条消息的一个或多个接收者,然后消息文本会 被传输.SMTP使用TCP端口25. 一.配置环境 [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) #查看系统环境 [[email prot

编写自动测试c语言程序的shell脚本

目前经常用vim编写一些c语言程序,写好了程序一般都得进行一些测试,当然我们可以进行一些常规的手动测试.心里一想,如果能够用shell脚本编写一个能自动测试c语言程序就好了. 为了试一试这样的想法,找了一个c语言程序题目: [一球从 100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10 次落地时,共经过多少米?第10 次反弹多高? ] 根据这样的要求我编写了一个解决这个问题的程序: #include <stdio.h> #include <stdlib.h> #

linux shell脚本调整任务计划

有2个脚本,每天跑任务计划的 dts_rsync.sh 负责下载线上备份的sql文件 dts_input.sh 负责将下载好的备份文件导入到本地Mysql 现在遇到一个问题,就是下载备份文件的完成时间不固定.以前是晚上6点下载完成,现在是7点才能完成,以后可能会增加. 下载日志如下: 2015-10-15 0:10:01 开始传输 2015-10-15 7:19:35 传输完成 任务计划如下: #同步express的备份 10 0 * * * /opt/dts_rsync.sh & #导入备份文

linux之shell脚本管理(一)

在Shell脚本中执行使用if语句的好处是:可以根据特定的条件(eg:判断备份目录是否存在)来决定是否执行某项操作,当满足不同的条件时执行 不同的操作(eg:备份目录不存在则创建该目录,否则跳过操作).该文将分别从条件测试操作,if语句结构,应用示例这三个方面讲解if语句在Shell 脚本中的应用. 1.条件测试操作: 需要在Shell脚本中有选择性地执行任务时,首先面临的问题就是,如何设置命令执行的条件? 在Shell环境中,可以根据命令执行后返回状态值来判断该命令是否成功执行,当返回值为0是

rsync+sersync+nfs高可用

环境: HOST IP OS 主机1 100011 10.0.0.11 CentOS6.6 主机2 100012 10.0.0.12 CentOS6.6 为了省事,直接关闭iptables,selinux,以下配置都为10.0.0.11上的配置,10.0.0.12也要做相同配置(个别地方须修改,如ip等) 一.安装配置rsync 1.安装 [[email protected] /]#  yum install -y rsync xinetd [[email protected] /]#  ser

手游公司运维之利用Rundeck自动化运维工具和Shell脚本构建测试环境代码发布平台和生产环境代码发布平台

在做手游运维工作之前,我接触的代码发布都是常规的软件发布,有固定的发布周期.之前工作的那个外企有严格的发布周期,一年中的所有发布计划都是由Release Manager来控制,每次发布之前都需要做一些准备工作,如填写发布表单,上传发布需要的资源文件,联系发布过程中的相关人员,如开发和测试.最后在公司内部开发的发布平台上按照指定的时间点击鼠标对一个集群内的几台主机或全部主机进行代码发布.这个发布平台还是基于rsync服务实现的.虽然每个星期都有各种服务的发布,但是整个发布流程是可以控制的,并且发布

Keepalived+NFS+SHELL脚本实现NFS-HA高可用

本来想做DRBD+HEARTBEAT,但是领导说再加硬盘浪费资源,没有必要,而且在已有硬盘上做风险较大,所以就只能用rsync来实现数据同步了,实验中发现很多的坑,都用脚本和计划任务给填上了,打算把这套直接用在生产环境中,到时候如果还遇到什么问题,再进行修正和补全,下面是项目细节: 主机配置: web:192.168.6.10 Centos 6.4 nfs1:192.168.6.1 Centos 6.4 nfs2:192.168.6.2 Centos 6.4 keepalived 1.2.13