客户端需求

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软件

[root@backup ~]# yum -y install rsync

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

2 配置 /etc/rsyncd.conf

[root@backup 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服务的用户身份)

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

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

[root@backup ~]# echo "rsync_backup:1" >/etc/rsync.password
[root@backup ~]# chmod 600 /etc/rsync.password

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

[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd

6检查对应的端口 873

[root@backup 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模块
[root@nfs ~]# rsync -avz /etc/passwd rsync_backup@172.16.1.41::backup
#客户端下载
[root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup /opt #无密码方式备份 之指定文件
[root@nfs01 ~]# echo "1" > /etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password
rsync -avz rsync_backup@172.16.1.41::backup /opt --password-file=/etc/rsync.password #无密码方式备份 之环境变量方式
[root@nfs01 ~]# export RSYNC_PASSWORD=1
[root@nfs01 ~]# rsync -avz rsync_backup@172.16.1.41::backup /opt

8其他

强制一致性 pc  ->  U盘保持一致(--delete)
[root@nfs01 ~]# rsync -avz --delete rsync_backup@172.16.1.41::backup/ /data/ --password-file=/etc/rsync.password [root@nfs01 ~]# rsync -avz --delete /data/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password
限速
[root@nfs ~]# dd if=/dev/zero of=/opt/test.dosk bs=1M count=1024
[root@nfs ~]# rsync -avzP --bwlimit=1 /opt/test.dosk rsync_backup@172.16.1.41::backup

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

批量执行

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

客户端推送脚本

[root@nfs 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/ rsync_backup@172.16.1.41::backup #5.本地保留最近7天的数据
find $Path/ -type d -mtime +7|xargs rm -rf

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

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

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

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

2 服务端脚本

[root@backup ~]# 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" 123@qq.com <$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

定时任务

	#多台客户端
[root@nfs ~]# crontab -l
00 01 * * * /usr/bin/bash /server/scripts/clinet_rsync_backup.sh >/dev/null 2>&1 #服务端
[root@backup backup]# crontab -l
00 05 * * * /usr/bin/bash /server/scripts/check_backup.sh >/dev/null 2>&1

总结

- 如何增加在一台服务器的备份
- 1.准备一台服务器(克隆)
- 2.使用xshell连接服务器
- 3.拷贝nfs服务器上的备份脚本(打包的内容)
[root@web01 ~]# rsync -avz root@172.16.1.31:/server /
[root@web01 ~]# sh /server/scripts/client_rsync_backup.sh Rsync推送和拉取
Rsync守护进程(1.安装 2.配置 3.启动 4.加入开机自启动 5.检查 6.出错看日志 ERROR)
demo:将客户端nfs基础的数据打包->推送->backup服务器
将多台服务器的备份数据推送到->backup服务器->1.先校验->2.发送校验结果至管理员

Rsync服务实战的更多相关文章

  1. 3、Rsync备份服务实战

    1.Rsync基本概述 rsync是一款开源的备份工具,可以在不同主机之间进行同步,可实现全量备份与增量备份,因此非常适合用于架构集中式备份或异地备份等应用. rsync官方地址:传送门http:// ...

  2. Rsync备份服务实战

    目录 Rsync备份服务实战 一.Rsync 二.rsync的应用场景 1.Rync的数据同步模式 2.rsync的三种模式 三.rsync配置服务端客户端 四.rsync实战 实战一 报错解决方法: ...

  3. 【Rsync项目实战】备份全网服务器数据

    [Rsync项目实战]备份全网服务器数据 标签(空格分隔): Linux服务搭建-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载,转 ...

  4. 【Rsync项目实战一】备份全网服务器数据

    目录 [Rsync项目实战]备份全网服务器数据 [企业案例] 1.1 环境部署 1.2 开始部署backup服务器:Rsync服务端过程: 1.3 开始部署nfs01服务器:Rsync客户端过程: [ ...

  5. SSH远程管理服务实战

    目录 SSH远程管理服务实战 1.SSH基本概述 2.SSH相关命令 3.Xshell连接不上虚拟机 4.scp命令 5.sftp命令 6.SSH验证方式 7.SSH场景实践 8.SH安全优化 9.交 ...

  6. 配置rsync服务,数据同步。

    这部分设计服务器端和客户端. [服务器端] 如果服务器没有安装rsync服务则使用yum安装rsync服务. yum install rsync 然后 vim /etc/xinetd.d/rsync ...

  7. Rsync企业实战之自动异地备份(转)

    认真的测试过网上的大多数文章和版本,真正能一次性测试通过的文章太少了,需要反复的推敲,反复的查阅资料,才能真正的测试成功,所以,在此背景下,总结了Rsync,加上自己的理解分享出来: 1. 原理篇 R ...

  8. rsync服务架设(数据同步|文件增量备份)

        近期由于业务需要,需要将两台服务器数据保持同步.方案有很多,rsync是其中一种解决方案,本文对rsync的安装及配置进行简单说明,其他实现方式有兴趣可以研究.以下是本文提纲,供参考: rsy ...

  9. ASP.NET Web Api构建基于REST风格的服务实战系列教程

    使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[十]——使用CacheCow和ETag缓存资源 系列导航地址http://www.cnblogs.com/fzrain/p/3 ...

随机推荐

  1. thinkphp3.2模块名如何不区分大小写?

    thinkphp3.2中已配置:'URL_CASE_INSENSITIVE' => true,对于控制器及操作名大小写都可以,但仍对于模块名的大小写就运行机制出错,比如:http://www.x ...

  2. CSS3 画基本图形,圆形、椭圆形、三角形等

    CSS3圆角#css3-circle{ width: 150px; height: 150px; border-radius: 50%; }CSS3 椭圆形css3 radius#css3-elips ...

  3. ajax知识点

    什么是AJAX? AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. ...

  4. box-sizing 的作用

    box-sizing:content-box | border-box content-box: padding和border不被包含在定义的width和height之内.对象的实际宽度等于设置的wi ...

  5. 洛谷P2286 [HNOI2004]宠物收养场

    题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领 ...

  6. How do I install Daydream on my phone?

    Google's philosophy with their newest VR platform is simple. In order to offer the best possible exp ...

  7. springboot部分常用注解

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  8. codeforces 2A Winner (好好学习英语)

    Winner 题目链接:http://codeforces.com/contest/2/problem/A ——每天在线,欢迎留言谈论. 题目大意: 最后结果的最高分 maxscore.在最后分数都为 ...

  9. Centos7开启ssh免密码登录

    1.输入命令:cd .ssh进入rsa公钥私钥目录(清空旧秘钥) 2.在当前目录下执行ssh-keygen -t rsa,三次回车后生成新的公钥(id_rsa.pub)私钥(id_rsa)文件(每个节 ...

  10. C#多线程图片爬虫

    写了个简单的多线程图片爬虫,整理一下.数据已经爬下来了,图片URL需要自行拼接,首先从Lawyers表中取的RawData字段,RawData中有一个list字段是json格式的数据,需要的只是lis ...