1. 程式人生 > >測試NFS+rsync+sersync+SMTP+shell腳本+cron

測試NFS+rsync+sersync+SMTP+shell腳本+cron

CentOS rsync SMTp shell

考核1

實現拓撲圖:

技術分享圖片

實驗需要的機器:

名稱

ip地址

主機名

web服務器

192.168.1.10

web01

rsync備份服務器

192.168.1.20

rsync

nfs存儲服務器

192.168.1.30

nfs

1nfs創建一個目錄名為/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

[root@nfs ~]# 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/

[root@nfs ~]# exportfs -arv

exporting 192.168.1.0/24:/data/web

#先進行本地掛載測試,如果成功在到遠端掛載

[root@nfs ~]# showmount -e 192.168.1.30

Export list for 192.168.1.30:

/data/web 192.168.1.0/24

[root@nfs ~]# mount -t nfs 192.168.1.30:/data/web /mnt/

[root@nfs ~]# 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

[root@nfs ~]# umount /mnt

web服務器掛載nfs用作網站的後端存儲:

[root@web01 ~]# mkdir /webdata

[root@web01 ~]# mount -t nfs 192.168.1.30:/data/web /webdata/

[root@web01 ~]# 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

[root@web01 ~]# echo "mount -t nfs 192.168.1.30:/data/web /webdata/" >>/etc/rc.local #設置成開機自動掛載

NFS共享掛載已經完成,然後下一步實施搭建rsync服務器

yum -y install rsync.x86_64

[root@rsync ~]# 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

[root@rsync ~]# mkdir -p /backup/nfs

[root@rsync ~]# useradd rsync -s /sbin/nologin -M

[root@rsync ~]# chown rsync:rsync /backup/nfs/

[root@rsync ~]# echo "nfs_rsync:nfspassword" >> /etc/rsync.password

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

[root@rsync nfs]# /usr/bin/rsync --daemon

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

NFS充當客戶端:

[root@nfs ~]# echo "nfspassword" >> /etc/rsync.password #生成密碼文件

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

[root@nfs ~]# yum -y install rsync.x86_64

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

測試推送成功,

然後在NFS上的數據要實時的備份到rsync服務器上(sersync

[root@nfs ~]# mkdir /applocal/

[root@nfs~]# mv sersync2.5.4_64bit_binary_stable_final.tar.gz /applocal/

[root@nfs ~]# cd /applocal/

[root@nfs applocal]# tar -xvzf sersync2.5.4_64bit_binary_stable_final.tar.gz

sersync /

sersync /bin/sersync2

sersync/conf/confxml.xml

[root@nfs sersync]# tree /applocal/sersync

/applocal/sersync

├── bin

└── sersync2

└── conf

└── confxml.xml

2 directories, 2 files

[root@nfs conf]# cp confxml.xml{,.bak}

[root@nfs 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

[root@nfs conf]# cd /data/web/

[root@nfs web]# touch 1

[root@nfs 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

[root@rsync etc]# yum -y install mailx.x86_64

[root@rsync 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

[root@rsync 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

[root@rsync etc]# chown rsync:rsync /backup/

[root@rsync etc]# echo "rsync_backup:rsync_backup" >>/etc/rsyncn.password

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

[root@nfs 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 {}

[root@nfs ~]# 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

[root@rsync 192.168.1.30]# crontab -l -u root

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


測試NFS+rsync+sersync+SMTP+shell腳本+cron