rsync全部网备份小结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync全部网备份小结相关的知识,希望对你有一定的参考价值。

rsync+crond 定时任务 全网备份


整体规划

1.主机名称与ip地址

服务器说明  外网IP 内网IP 主机名称 

nginx 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

2.目标将web01主机 FNS存储主机中的数据保存到backup主机中

主要保存内容如下

1.每晚上00 点在 Web 上打包系统配置文件 网站程序目录 日志并通过 推到 backup 上备份(NFS 存储服务器同 Web 服务器)

2.所有服务器的备份目录必须都为/backup

3. 定时任务服务的配置文件(/var/spool/cron/root)

开机自启动的配置文件(/etc/rc.local)

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

防火墙 iptables 的配置文件

web 服务器站点目录(/var/html/www)

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

Web 服务器保留打包后的 7 天的备份数据

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

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

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

部署阶段

1.backup上部署rsync服务端 在web服务器上部署rsync客户端

a.查看是否安装rsync软件 #rpm -qa rsync 

b.安装rsync #yum install -y rsync 

c.配置rsync配置文件 #vim /etc/rsyncd.conf

```

uid=rsync #rsync user

gid=rsync #rsync group

use chroot=no #安全选项

max conections=200 #最大连接数

timeout=300 #超时时间

pid file=/var/run/rsyncd.pid #pid file

lock file=/var/run/rsyncd.lock #lock file

log file=/var/log/rsync.logs) #log file

list=false #list

read only=false #read only

auth users=rsync_backup #auth users

secrets file=/etc/rsync.password #password file

hosts allow=172.16.1.0/24 #allow ip

hosts deny=0.0.0.0/32 #deny ip

[backup] #module

path=/backup #module path

```

d.创建用户 #useradd -s /sbin/nologin -M rsync 

e.创建认证文件 #echo "rsync_backup:123">/etc/resync.password 将认证文件设置权限 #chmod 600 /etc/rsync.password

f.创建备份目录 #mkdir -p /backup  #修改目录属性 chown -R rsync.rsync. /backup

g.启动rsync #rsync --daemon 

h.检查是否启动 netstat -lnutp| grep rsync

i.将启动方式以脚本形式写入到/etc/init.d/rsyncd文件中

```

#!/bin/bash

. /etc/init.d/functions                             


                                     # 定义变量

RSYNC_PID=/var/run/rsyncd.pid                 # rsync pid文件

RSYNC=rsync


start() {

    # 如果rsyc进程文件存在 就不再打开

    if [ ! -f "$RSYNC_PID" ]; then

rsync --daemon

return 0

    fi    

    }

stop() {

    # 如果rsyc进程文件存在 就不再打开

    if [  -f "$RSYNC_PID" ]; then

kill `cat $RSYNC_PID`;

return 0

    fi    

    }

restart() {

stop

sleep 1

start

}

case "$1" in

    start)

start

;;

    stop)

stop

;;

    restart)

restart

;;

    *)

echo $"Usage: ${RSYNC} {start|stop|restart}"

;;

esac

```

j.将/etc/init.d/rsyncd 写入开机启动中 echo "/etc/init.d/syncd start">/etc/rc.local


##############################################服务端rsync进程配置完成

2.web01主机rsync客户端配置

a.查看是否安装rsync软件 #rpm -qa rsync 

b.安装rsync #yum install -y rsync 

c.配置/etc/rsync.password #echo "123">/etc/rsync.password

d.测试与backup主机连接 #将hosts文件推送到服务器中 rsync -avz /etc/hosts [email protected]::backup --password-file=/etc/rsync.password

###############################################客户端rsync配置完成

3.web本地实现打包功能与保留数据功能

#定义日期防止出现名称重复

配置文件 # tar  -zcf /backup/conf_$(date +%F).tar.gz /var/spool/cron/root  /etc/rc.local /server/scripts /etc/sysconfig/iptables 

程序 tar  -zcf /backup/www_$(date +%F).tar.gz /var/html/www 

日志文件 tar  -zcf /backup/logs_$(date +%F+%w).tar.gz /app/logs 

#删除数据功能

find /backup -type f -name "*.tar.gz" -mtime +7 | xargs rm -f 

###############################################webserver Over

4.web本地实现打包功能与保留数据功能与web类似,不做详细描述

5.web配置定时任务

a.编辑脚本内容 vim /server/scripts/backup.sh

#!/bin/bash

#get ip 这个ip需要根据个人机器详细情况而定

IP=`ifconfig | awk -F ‘[ :]+‘ ‘NR==11{print $4}‘`

#设定web01主机备份的路径IP是之前获取的内容

Path="/backup/"$IP

#create path

#担心误删除操作,会创建这些文件夹

mkdir -p /var/spool/cron/ /server/scripts/ /var/html/www /app/logs $Path

#create compress data 创建压缩包或目录

tar  -zcf $Path/conf_$(date +%F+%w).tar.gz /var/spool/cron/root  /etc/rc.local /server/scripts /etc/sysconfig/iptables 2>/dev/null

tar  -zcf $Path/www_$(date +%F+%w).tar.gz /var/html/www 2>/dev/null

tar  -zcf $Path/logs_$(date +%F+%w).tar.gz /app/logs 2>/dev/null


#md5sum 指纹验证实现

md5sum $Path/*$(date +%F+%w).tar.gz >$Path/flag_$(date +%F+%w).txt


#delete data 删除多余数据

find $Path -type f -name "*.tar.gz" -mtime +7 | xargs rm -f 2>/dev/null 


#pull data  #推送数据

rsync -avz /backup/ [email protected]::backup --password-file=/etc/rsync.password 

b.测试脚本 

sh /server/scripts/backup.sh

c.服务器端检测

d.确保数据无误后将写入定时任务中 #contab -e

00 00 * * * sh /server/scripts/backup.sh

###############################################Webserver Over

6.NFS01主机配置定时任务与web01主机配置定时任务相仿,不做描述

7.服务器端验证、删除多余数据 发送邮件

a.服务器端验证 #vim /server/scripts/chbackup.sh 

```

#!/bin/bash

#check backup

#md5sum -c 检查之前的验证文件是否相同 

message=`md5sum -c /backup/********/flag_$(date +%F+%w).txt 2>/dev/null`

```

b.删除多余数据 #vim /server/scripts/del.sh

```

#!/bin/bash

#del backdata

#删除6个月之前的数据 且 没有 "+1"(周一) 字符开的文件名

find /backup -type f -name "*.tar.gz" -mtime +180|grep -v  "+1" | xargs rm -f

```

c.发送邮件服务

1.查看/etc/init.d/postfix 是否启动 #/etc/init.d/postfix status

启动方式为: /etc/init.d/postfix start 

如果启动失败:查看/etc/postfix/main.rc文件 第116行 将

```

116 inet_interfaces = localhost

117 

118 # Enable IPv4, and IPv6 if supported

119 inet_protocols = all


```

改为

```

116 inet_interfaces = 127.0.0.1

117

118 # Enable IPv4, and IPv6 if supported

119 inet_protocols = all


```

重新启动

2.修改/etc/mail.rc #vim /etc/mail.rc

在最后追加

```

set [email protected] smtp=smtp.163.com

set [email protected] smtp-auth-password=xxxxxxxxx smtp-auth=login


```

上面使用是网易邮箱,实现发送邮件

3.测试发送电子邮件

echo "test" | mail -s "test" [email protected]

4.完整的检验文件及发送邮件过程 #vim /service/scripts/chbackup.sh

```

#!/bin/bash

#check backup

message=`md5sum -c /backup/********/flag_$(date +%F+%w).txt 2>/dev/null`

echo "$message" | mail -s " the messages of  rsync and crond Server ----$(date +%F)" [email protected]


```

5.检查邮箱

```

the messages of rsync and crond Server ----2017-10-12 ###标题

/backup/172.16.1.31/conf_2017-10-12+4.tar.gz: FAILED open or read #这是故意删除做的掩饰

/backup/172.16.1.8/conf_2017-10-12+4.tar.gz: OK

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

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

```


本文出自 “安宇的博客” 博客,谢绝转载!

以上是关于rsync全部网备份小结的主要内容,如果未能解决你的问题,请参考以下文章

scp小结

git命令小结

postgresql数据备份小结

数据库小结

Oracle - RMAN备份 之 incarnation的实验和小结

DB2数据库备份恢复小结