# Rsync服务实战

Posted chengkanghua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了# Rsync服务实战相关的知识,希望对你有一定的参考价值。

目录

Rsync服务实战

客户端需求

1.客户端每天凌晨01点在服务器本地打包备份(系统配置文件、日志文件、其他目录、应用配置等文件)
2.客户端备份的数据必须存放至以主机名_IP地址_当前时间命名的目录中, 例/backup/nfs-server_172.16.1.31_2018-09-02 
3.客户端最后通过rsync推送本地已打包好的备份文件至backup服务器
4.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间

/backup/
服务端需求

1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每天校验客户端推送过来的数据是否完整
3.服务端需要每天校验的结果通知给管理员
4.服务端仅保留6个月的备份数据,其余的全部删除

注意:所有服务器的备份目录必须都为/backup

## 准备环境

1 安装rsync软件

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

p, li { white-space: pre-wrap; }

2 配置 /etc/rsyncd.conf

[[email protected] backup]# cat /etc/rsyncd.conf
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.password
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup

3 创建用户(运行rsync服务的用户身份)

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

4 创建虚拟用户密码文件(客户端连接时候使用)

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

5启动 rsync 服务,并加入开机自启

[[email protected] ~]# systemctl start rsyncd
[[email protected] ~]# systemctl enable rsyncd

6检查对应的端口 873

[[email protected] backup]# netstat -lntp
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      1391/rsync

7测试 (客户端也安装rsync 但是不启动服务)

#客户端推送  /etc/passwd 推到 服务端 backup模块
[[email protected] ~]# rsync -avz /etc/passwd [email protected]::backup
#客户端下载
[[email protected] ~]# rsync -avz [email protected]::backup /opt

#无密码方式备份 之指定文件
[[email protected] ~]# echo "1" > /etc/rsync.password
[[email protected] ~]# chmod 600 /etc/rsync.password 
rsync -avz [email protected]::backup /opt --password-file=/etc/rsync.password

#无密码方式备份 之环境变量方式
[[email protected] ~]# export RSYNC_PASSWORD=1
[[email protected] ~]# rsync -avz [email protected]::backup /opt

8其他

强制一致性 pc  ->  U盘保持一致(--delete)
[[email protected] ~]# rsync -avz --delete [email protected]::backup/ /data/ --password-file=/etc/rsync.password

[[email protected] ~]# rsync -avz --delete /data/ [email protected]::backup/ --password-file=/etc/rsync.password
限速
[[email protected] ~]# dd if=/dev/zero of=/opt/test.dosk bs=1M count=1024
[[email protected] ~]# rsync -avzP --bwlimit=1 /opt/test.dosk [email protected]::backup

1.脚本,每天01定时执行一次(打包->标记->推送->备份服务器->保留最近7天的文件)

批量执行

for i in {1..30};do date -s 2018/08/$i && sh /server/scripts/client_rsync_backup.sh;done

客户端推送脚本

[[email protected] scripts]# cat /server/scripts/client_rsync_backup.sh
#!/usr/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

#1.定义变量
Host=$(hostname)
Addr=$(ifconfig eth1|awk ‘NR==2{print $2}‘)
Date=$(date +%F)
Dest=${Host}_${Addr}_${Date}
Path=/backup

#2.创建备份目录
[ -d $Path/$Dest ] || mkdir -p $Path/$Dest

#3.备份对应的文件
cd / && [ -f $Path/$Dest/system.tar.gz ] || tar czf $Path/$Dest/system.tar.gz etc/fstab etc/rsyncd.conf && [ -f $Path/$Dest/log.tar.gz ] || tar czf $Path/$Dest/log.tar.gz  var/log/messages var/log/secure && 
#4.携带md5验证信息
[ -f $Path/$Dest/flag ] || md5sum $Path/$Dest/*.tar.gz >$Path/$Dest/flag_${Date}

#4.推送本地数据至备份服务器
export RSYNC_PASSWORD=1
rsync -avz $Path/ [email protected]72.16.1.41::backup

#5.本地保留最近7天的数据
find $Path/ -type d -mtime +7|xargs rm -rf

2.校验的压缩包(邮箱->md5->结果保存下来->将保存的结果发送给管理员->保留最近180天的数据)

服务端接收文件并校验发送邮箱

1.配置邮箱(配发件服务器)

[[email protected] backup]# yum install mailx -y
#配置邮件服务功能
[[email protected] backup]# cat /etc/mail.rc   
set [email protected]
set smtp=smtps://smtp.163.com:465
set [email protected]
set smtp-auth-password=aa123456
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
#测试发邮件                     标题            收件人                发送内容
[[email protected] backup]# mail -s "test$(date +%F)" [email protected] </etc/passwd

[[email protected] ~]# mkdir /server/scripts -p

2 服务端脚本

[[email protected] ~]# vim /server/scripts/check_backup.sh
#!/usr/bin/bash

#1.定义全局的变量
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

#2.定义局部变量
Path=/backup
Date=$(date +%F)

#3.查看flag文件,并对该文件进行校验, 然后将校验的结果保存至result_时间
find $Path/*_${Date} -type f -name "flag$Date"|xargs md5sum -c >$Path/result_${Date}

#4.将校验的结果发送邮件给管理员
mail -s "Rsync Backup $Date" [email protected] <$Path/result_${Date}

#5.删除超过7天的校验结果文件, 删除超过180天的备份数据文件
find $Path/ -type f -name "result*" -mtime +7|xargs rm -f
find $Path/ -type d -mtime +180|xargs rm -rf

定时任务

    #多台客户端
[[email protected] ~]# crontab -l
00 01 * * * /usr/bin/bash /server/scripts/clinet_rsync_backup.sh >/dev/null 2>&1

    #服务端
[[email protected] backup]# crontab -l
00 05 * * * /usr/bin/bash /server/scripts/check_backup.sh >/dev/null 2>&1

总结

- 如何增加在一台服务器的备份
    - 1.准备一台服务器(克隆)
    - 2.使用xshell连接服务器
    - 3.拷贝nfs服务器上的备份脚本(打包的内容)
        [[email protected] ~]# rsync -avz [email protected]:/server  /
        [[email protected] ~]# sh /server/scripts/client_rsync_backup.sh

Rsync推送和拉取
Rsync守护进程(1.安装  2.配置  3.启动 4.加入开机自启动  5.检查  6.出错看日志 ERROR)
demo:将客户端nfs基础的数据打包->推送->backup服务器
       将多台服务器的备份数据推送到->backup服务器->1.先校验->2.发送校验结果至管理员

以上是关于# Rsync服务实战的主要内容,如果未能解决你的问题,请参考以下文章

Linux-Rsync服务器搭建实战

Rsync服务的实战

使用rsync实现服务器数据同步备份

rsync+nfs+sersync实战案例

rsync远程同步(理论+实战)

rsync远程同步——(实战!)