rsync+nfs企业实战案例

某公司里有一台NFS服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他 机器上做一个周期性定时备份。要求如下:

每天晚上00点整在NFS服务器nfs01上打包备份网站程序目录等并通过rsync命令推送到备份服务器backup上备份保存(备份思路 可以是先在本地按IP地址+日期打包,然后再利用rsync推送到备份服务器上)。

具体要求如下:

1)NFS服务器nfs01和备份服务器backup的备份目录必须都为/backup;
2)NFS服务器站点目录假定为(/var/www/html);
3)NFS服务器脚本目录假定为(/server/scripts);
4)NFS服务器站点日志目录假定为(/app/logs);
5)NFS服务器个人配置文件目录路径(/etc/rc.d/rc.local);
6)NFS服务器定时任务文件路径为(/var/spool/cron/root);
7)将以上文件或目录打包(2-6条所示)推送到备份服务器backup ;
8)NFS服务器本地仅保留7天内的备份;
9)备份服务器上检查备份结果是否正常,并将每天的备份结果发给管理员信箱;
10)备份服务器上每周六的数据都保留,其他备份仅保留180天备份。

================================================以下为答案===========================================================================

一、主机网络参数

主机名 网卡eth0 网卡eth1 用途
backup 10.0.0.41 172.16.1.41 rsync服务端
nfs01 10.0.0.31 172.16.1.31 NFS存储服务器客户端

二、开始部署backup服务器

1、Rsync服务端:

(1)检查rsync软件是否安装:

[[email protected] ~]# rpm -qa rsync

rsync-3.0.6-12.el6.x86_64

(2)编写rsyncd.conf文件

########################rsync_configstart#######################################################################################################

#created by ywx 2019-03-20

#rsyncd.conf start##

#用户

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

############################################上面的内容可以放在模块下,同理模块下的内容也可以放在全局################################

[backup]

#使用目录

path = /backup/

#有错误时忽略

ignore errors

#可读可写(true或false)(yes或no)

read only = false

#阻止远程列表(不让通过远程方式看服务端有啥)

list = false

#允许IP

hosts allow = 172.16.1.0/24

#禁止IP

hosts deny = 0.0.0.0/32

#虚拟用户(认证用户)

auth users = rsync_backup

#存放用户和密码的文件

secrets file = /etc/rsync.password

###################################################rsync_configend__end#########################################################################################

(3)创建rsync账户及共享目录并修改目录属主为rsync

[[email protected] ~]# useradd -M -s /sbin/nologin rsync
[[email protected] ~]# mkdir /backup
[[email protected] ~]# chown -R rsync.rsync /backup

(4)启动Rsync服务并设置为开机启动

启动rsync服务
[[email protected] ~]# rsync --daemon
[[email protected] ~]# netstat -lntup | grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1264/rsync
tcp 0 0 :::873 :::* LISTEN 1264/rs
开机启动在/etc/rc.loacl下添加
rsync --daemon

(5)创建rsync虚拟账户名和密码,并赋予密码文件600权限

[[email protected] ~]# echo "rsync_backup:ywxking" > /etc/rsync.password
[[email protected] ~]# cat /etc/rsync.password
rsync_backup:ywxking
[[email protected] ~]# chmod 600 /etc/rsync.password
[[email protected] ~]# ll /etc/rsync.password
-rw------- 1 root root 21 Mar 20 10:40 /etc/rsync.password

三、在NFS上部署Rsync客户端

(1)检查rsync软件是否安装:

[[email protected] ~]# rpm -qa rsync

rsync-3.0.6-12.el6.x86_64

(2)只需要创建密码文件(只包含密码即可),并赋予密码文件600权限

[[email protected] ~]# echo "ywxking" > /etc/rsync.password
[[email protected] ~]# chmod 600 /etc/rsync.password

(3)创建共享目录backup

[[email protected] ~]# mkdir /backup

(4)在客户端进行推送测试

[[email protected] backup]# touch ywx{1..10}
[[email protected] backup]# ll
total 0
-rw-r--r-- 1 root root 0 Mar 20 22:12 ywx1
-rw-r--r-- 1 root root 0 Mar 20 22:12 ywx10
-rw-r--r-- 1 root root 0 Mar 20 22:12 ywx2
-rw-r--r-- 1 root root 0 Mar 20 22:12 ywx3
-rw-r--r-- 1 root root 0 Mar 20 22:12 ywx4
-rw-r--r-- 1 root root 0 Mar 20 22:12 ywx5
-rw-r--r-- 1 root root 0 Mar 20 22:12 ywx6
-rw-r--r-- 1 root root 0 Mar 20 22:12 ywx7
-rw-r--r-- 1 root root 0 Mar 20 22:12 ywx8
-rw-r--r-- 1 root root 0 Mar 20 22:12 ywx9

[[email protected] backup]# rsync -avzP /backup/ [email protected]::backup --password-file=/etc/rsync.password
sending incremental file list
./
ywx1
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=9/11)
ywx10
0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=8/11)
ywx2
0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=7/11)
ywx3
0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=6/11)
ywx4
0 100% 0.00kB/s 0:00:00 (xfer#5, to-check=5/11)
ywx5
0 100% 0.00kB/s 0:00:00 (xfer#6, to-check=4/11)
ywx6
0 100% 0.00kB/s 0:00:00 (xfer#7, to-check=3/11)
ywx7
0 100% 0.00kB/s 0:00:00 (xfer#8, to-check=2/11)
ywx8
0 100% 0.00kB/s 0:00:00 (xfer#9, to-check=1/11)
ywx9
0 100% 0.00kB/s 0:00:00 (xfer#10, to-check=0/11)

sent 462 bytes received 201 bytes 1326.00 bytes/sec
total size is 0 speedup is 0.00

(5)nfs01服务器打包脚本nfsbak.sh

vim /server/scripts/nfsbak.sh

#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
######自定义变量
Path=/backup
backup_Server=172.16.1.41
IP=`/sbin/ifconfig eth1|awk -F"[ :]+" ‘NR==2{print $4}‘`
Dir=${IP}_$(date +%F_%w)

######如果需要备份的文件和目录存在,则复制到/backup下面相对的目录中
mkdir -p $Path/$Dir
[ -f /var/spool/cron/root ] && cp -rp /var/spool/cron/root $Path/$Dir/
[ -f /etc/rc.d/rc.local ] && cp -rp /etc/rc.d/rc.local $Path/$Dir/
[ -d /server/scripts ] && cp -rp /server/scripts $Path/$Dir/
[ -d /var/html/www ] && cp -rp /var/html/www $Path/$Dir/
[ -d /app/logs ] && cp -rp /app/logs $Path/$Dir/
[ -f /etc/sysconfig/iptables ] && cp -rp /etc/sysconfig/iptables $Path/$Dir/

#######进入/backup目录并打包相应的目录文件
cd $Path

tar -zcf $Path/${Dir}.tar.gz $Dir

#######打包完成后,删除源目录
rm -rf $Path/$Dir

#######创建md5sum验证信息,方便backup服务器检验数据是否完成
/usr/bin/md5sum $Path/${Dir}.tar.gz > $Path/md5sum_${IP}.txt

#######推送打包的文件及md5sum校验值到备份服务器
rsync -avz $Path/ [email protected]${backupServer}::backup --password-file=/etc/rsync.password
#######找出超过7天的备份并删除
find $Path/ -name "${IP}*" -type f -mtime +7 | xargs rm -rf

(6)nfs备份的定时任务

00 00 * * * /bin/sh /server/scripts/nfsbak.sh

四、备份服务器上检查备份结果是否正常,并将每天的备份结果发给管理员信箱;

因为nfs服务器备份过来的文件都有md5sum,因此文件备份是否正常,只需要md5sum的值一样

#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#####找出1天内的备份文件的md5sum校验和
md5=$(/bin/find /backup/ -type f -mtime -1 -name "md5sum_*.txt")

for i in $md5
do
md5sum -c $md5 >/dev/null 2>&1
md5jg=$(echo $?)
if [ ${md5jg} -eq 0 ];then
mail -s "$(date +%F)This is backup OK" [email protected]
else
mail -s "$(date +%F)This is backup Worry" [email protected]
done

五、备份服务器上每周六的数据都保留,其他备份仅保留180天备份

#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
find /backup ! -name "*_6.tar.gz" ! -name "md5sum*_6.txt" -mtime +180 -type f | xargs rm -rf

六、backup服务器的定时任务

##################################定时任务脚本######################################################
vim /server/scripts/backup.sh

#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
md5=$(/bin/find /backup/ -type f -mtime -1 -name "md5sum_*.txt")

for i in $md5
do
md5sum -c $md5 > /dev/null 2>&1
md5jg=$(echo $?)
if [ ${md5jg} -eq 0 ];then
mail -s "$(date +%F) This is backup Ok!!!" [email protected]
else
mail -s "$(date +%F) This is backup Worry!!!" [email protected]
done

find /backup ! -name "*_6.tar.gz" ! -name "md5sum*_6.txt" -mtime +180 -type f | xargs rm -rf
#####################################################################################################
##############################定时任务#########################################################
00 00 * * * /bin/sh /server/scripts/backup.sh

七、ansible一键部署rsync

1、主机网络参数:
主机 网卡 ip地址 用途
m01 eth1 172.16.1.61 管理主机
backup01 eth1 172.16.1.41 backup服务器
nfs01 eth1 172.16.1.31 nfs服务器

2、在m01管理主机上的准备工作:
(1)编写ssh分发脚本,让m01可以免交互式登录backup和nfs服务器
#!/bin/bash
#ssh connect
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
rm -rf /root/.ssh/id_dsa
#####创建免交互密钥
ssh-keygen -t dsa -f /root/.ssh/id_dsa -N ""
yum install -y sshpass
#####免交互推送m01的密钥
for ip in 41 31
do
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no 172.16.1.$ip"
done

(2)安装ansible
服务端:
yum install -y ansible
客户端:(可选)
yum install -y libselinux-python

(3)编写rsync剧本:rsync.yaml
============================================rsync.yaml__start==============================================================
#command play-book

- hosts: rsync_server
tasks:
- name: step01:install rsync
yum: name=rsync state=installed
- name: step02:edit rsync conf file
copy: src=/etc/ansible/conf/rsync_conf/rsyncd.conf dest=/etc/
- name: step03:create rsync user
user: name=rsync state=present createhome=no shell=/sbin/nologin
- name: step04:create auth file
copy: src=/etc/ansible/conf/rsync_conf/rsync.password dest=/etc/ mode=600
- name: step05:create backup directory
file: dest=/backup state=directory owner=rsync group=rsync
- name: step06:start rsync server
shell: rsync --daemon creates=/var/run/rsyncd.pid

- hosts: rsync_client
tasks:
- name: step01:create auth file
copy: src=/etc/ansible/conf/rsync_conf/rsync_client.password dest=/etc/rsync.password mode=600

============================================rsync.yaml__end==============================================================

(4)测试剧本

[[email protected] rsync_conf]# ansible-playbook -C /server/scripts/rsync_install.yaml

PLAY [rsync_server] ***************************************

TASK [Gathering Facts] ************************************
ok: [172.16.1.41]

TASK [step01:install rsync] ***********************************
ok: [172.16.1.41]

TASK [step02:edit rsync conf file] ********************************
ok: [172.16.1.41]

TASK [step03:create rsync user] ***********************************
ok: [172.16.1.41]

TASK [step04:create auth file] ************************************
ok: [172.16.1.41]

TASK [step05:create backup directory] *********************************
ok: [172.16.1.41]

TASK [step06:start rsync server] **********************************
skipping: [172.16.1.41]

PLAY [rsync_client] ***************************************

TASK [Gathering Facts] ************************************
ok: [172.16.1.7]
ok: [172.16.1.31]

TASK [step01:create auth file] ************************************
changed: [172.16.1.7]
ok: [172.16.1.31]

PLAY RECAP ****************************************
172.16.1.31 : ok=2 changed=0 unreachable=0 failed=0
172.16.1.41 : ok=6 changed=0 unreachable=0 failed=0
172.16.1.7 : ok=2 changed=1 unreachable=0 failed=0

3、一键部署:

[[email protected] rsync_conf]# ansible-playbook /server/scripts/rsync_install.yaml

八、rsync开机自启动脚本(网上查找的)

制作服务启动脚本/etc/init.d/rsyncd
#!/bin/bash
#author:Mr.chen
# chkconfig:35 13 91
# description:This is Rsync service management shell script
# Source function library
. /etc/rc.d/init.d/functions

start(){
rsync --daemon
if [ $? -eq 0 -a `ps -ef|grep -v grep|grep rsync|wc -l` -gt 0 ];then
action "Starting Rsync:" /bin/true
sleep 1
else
action "Starting Rsync:" /bin/false
sleep 1
fi
}

stop(){
pkill rsync;sleep 1;pkill rsync
if [ `ps -ef|grep -v grep|grep "rsync --daemon"|wc -l` -lt 1 ];then
action "Stopping Rsync: " /bin/true
sleep 1
else
action "Stopping Rsync:" /bin/true
sleep 1
fi
}

case "$1" in
start)
start;
;;
stop)
stop;
;;
restart|reload)
stop;
start;
;;
*)
echo $"Usage: $0 {start|stop|restart|reload}"
;;
esac
6)启动脚本放到/etc/init.d目录下,增加x执行权限并添加开机启动
[[email protected] ~]# chmod +x /etc/init.d/rsyncd
[[email protected] ~]# /etc/init.d/rsyncd stop
已终止
[[email protected] ~]# /etc/init.d/rsyncd start
Starting Rsync: [确定]
[[email protected] ~]# chkconfig rsyncd on
[[email protected] ~]# chkconfig --list | grep rsync
rsyncd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

原文地址:https://www.cnblogs.com/yaokaka/p/11620766.html

时间: 2024-08-28 17:44:08

rsync+nfs企业实战案例的相关文章

rsync+nfs+sersync实战案例

回顾: 1.rsync 统一备份各个服务器的配置文件或重要文件 系统配置文件 日志文件 系统日志文件 messages.secure.cron 服务日志文件 access_log.access.log 服务配置文件 /etc/rsyncd.conf./etc/exports... 2.NFS 网络文件系统,提供共享存储服务3.sersync提供实时同步服务 实验组合: 1.rsync 实验环境: rsync服务器 rsync客户机 实验需求: rsync服务器提供同步模块,rsync客户端可以通

rsync+crond企业实战案例

[DB 数据同步,带宽占满,导致用户无法上网rsync scp ftp 限速功能.主要提一下rsync –bwlimit(限速)]下面进入正题: 企业案例rsync+crond定时备份某公司里有一台web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他机器上做一个周期性的定时备份.要求如下:每天晚上00点整在web服务器A上打包备份网站程序目录并通过rsync命令推送到服务器B上备份保留(备份思路可以是先在本地按日期打包,然后再利用rsync推到备份服务器上)

(转)awk数组详解及企业实战案例

awk数组详解及企业实战案例 原文:http://www.cnblogs.com/hackerer/p/5365967.html#_label03.打印数组:1. [[email protected] test]# awk 'BEGIN{array[1]="zhurui";array[2]="zhuzhu";for(key in array) print key,array[key]}'2. 1 zhurui3. 2 zhuzhu4. [[email protect

企业实战案例一:自建出口流量清洗服务器

自制异常流量清洗设备 目录: 1.环境介绍 2.网络结构 3.清洗原理 4.脚本实现 4.1 脚本结构介绍 4.2 awk获取异常IP地址 4.3 tcpdump获取异常协议 4.4 反向攻击抑制恶意意图 5.软件实现 6.定制Linux系统 一.环境介绍    国内互联网规模已在世界互联网的地位遥遥领先,各行各业的产生的数据正在快速速度增长,因此给互联网行业.传统企业.IDC机房等带来安全方面的威胁,如企业机房服务器或数据中心遭受异常流量攻击等,在传统的方案和传统的网络架构中采用传统的安全公司

rsync nfs 实时同步,结合实战

目录 rsync nfs 实时同步,实战 一.部署rsync服务端(backup) 二.部署rsync客户端(nfs,web01) 三.部署web代码(web01) 四.NFS服务端部署(nfs) 五.部署nfs备胎服务端(nfs) 六.部署nfs的客户端web01(web01) 七.backup实时同步nfs的data目录 八.定时任务并发邮件 九.NFS服务端部署sersync实时同步(nfs) 十.切换备胎backup(web01) rsync nfs 实时同步,实战 一.部署rsync服

18道Shell高级编程企业实战题及参考答案(一)

Shell高级编程企业实战题参考解答 ########################################################################### 让我们一起感谢,本文内容答案完全来自老男孩教育的学生-张耀课前上机考试解答! ########################################################################### 目录: 1.监控MySQL主从同步... 1 2.批量创建文件及改名... 3

shell高级编程企业实战题编程---是骡子是马 牵出来溜溜!

企业合格的linux运维必会编程题,能独立完成的同学就业工资不会低于10K 这是老男孩linux运维班要求学生必会的题目,完不成的不能合格毕业,每个完成的都奖励价值500-1000元的等值礼物(以当天考试成绩宣布为准),要进要退自己抉择,伙伴们走起! 实战考试时间就在2015年4月15日上机实战,禁止大面积抄袭学习课堂笔记否则无奖励!共18道考试题,面授上课几乎全部讲解过类似的案例,考试题略微变更而已. 企业面试题1:(生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件

利用shell解决企业实际问题案例实践

已知老男孩IT教育的某一周的财务招生费用报表如下: 学号 学生 提层 所交费用 欠费 课程顾问 1 葛毅 1500 13100 0 歪歪 2 罗嘉毅 1500 13000 0 丹丹 3 吴星 500 15000 0 歪歪 4 臧阔 500 3200 0 雨神 5 陈吉 500 7500 0 歪歪 6 朱明 500 15000 0 雨神 7 雷林 100 3000 0 丹丹 8 陈恩林 100 5300 0 歪歪 9 张林坤 300 3200 0 雨神 10 梁宇 80 2500 0 雪神 11

《Web渗透技术及实战案例解析》pdf

下载地址:网盘下载 内容简介 编辑 本书从Web渗透的专业角度,结合网络安全中的实际案例,图文并茂地再现Web渗透的精彩过程.本书共分7章,由浅入深地介绍和分析了目前网络流行的Web渗透攻击方法和手段,并结合作者多年的网络安全实践经验给出了相对应的安全防范措施,对一些经典案例还给出了经验总结和技巧,通过阅读本书可以快速掌握目前Web渗透的主流技术.本书最大的特色就是实用和实战性强,思维灵活.内容主要包括Web渗透必备技术.Google黑客技术.文件上传渗透技术.SQL注入.高级渗透技术.0day