Rsync备份服务小结

Rsync备份服务小结

rsync命令

常用选项:
-a           #归档模式传输, 等于-tropgDl    -t -r -o -p -g -D -l
-v           #详细模式输出, 打印速率, 文件数量等
-z           #传输时进行压缩以提高效率
-r           #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t           #保持文件时间信息
-o           #保持文件属主信息
-p           #保持文件权限
-g           #保持文件属组信息
-l           #保留软连接
-P           #显示同步的过程及传输时的进度等信息

-D           #保持设备文件信息
-L           #保留软连接指向的目标文件
-e           #使用的信道协议,指定替代rsh的shell程序

--exclude=PATTERN   #指定排除不需要传输的文件模式
--exclude-from=file #文件名所在的目录文件
--partial           #断点续传
--password-file=xxx #使用密码文件

----------------------------------------------------------------------------
--bwlimit=100kb       #限速传输单位默认是kb (不用z选项)
[root@web01 /tmp]# rsync -avP --bwlimit 100 /tmp/ rsync_backup@172.16.1.41::backup
sending incremental file list
./
data.txt
      5,537,792   1%  100.04kB/s
---------------------------------------------------------------------------
--delete            #让目标目录和源目录数据保持一致(不用*)放前后皆可
#推:数据与推送数据的源数据一致
[root@web01 /tmp]# rsync -avP --delete /tmp/ rsync_backup@172.16.1.41::backup
sending incremental file list
deleting file2
deleting file1
sent 223 bytes  received 43 bytes  532.00 bytes/sec
total size is 0  speedup is 0.00

rsyncd备份案例

#客户端需求
1.客户端提前准备存放的备份的目录,目录规则如下:/backup/主机_IP_时间
2.客户端在本地打包备份(系统配置文件、应用配置等)拷贝至/backup/主机_IP_时间
3.客户端最后将备份的数据进行推送至备份服务器
4.客户端每天凌晨1点定时执行该脚本
5.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间

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

客户端需求解析

1.客户端提前准备存放的备份的目录,目录规则如下:/backup/主机_IP_时间
[root@web01 ~]# mkdir -p /backup/`hostname`_`hostname -I | awk '{print $2}'`_`date +%F`

2.客户端在本地打包备份(系统配置文件、应用配置等)拷贝至/backup/主机_IP_时间
[root@web01 ~]# cd /backup/`hostname`_`hostname -I | awk '{print $2}'`_`date +%F`
[root@web01 /backup/web01_172.16.1.7_2020-08-12]# tar zcf conf.tar.gz /etc/passwd /var/log/messages &> /dev/null

3.客户端最后将备份的数据进行推送至备份服务器
生成校验码
[root@web01 ~]# md5sum /backup/`hostname`_`hostname -I | awk '{print $2}'`_`date +%F`/conf.tar.gz > /backup/`hostname`_`hostname -I | awk '{print $2}'`_`date +%F`/check.md5
文件推送检查
[root@web01 ~]# rsync -avz /backup/`hostname`_`hostname -I | awk '{print $2}'`_`date +%F`/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsyncd.passwd

4.客户端每天凌晨1点定时执行该脚本
[root@web01 ~]# crontab -e	编写任务
#每天凌晨1点进行文件备份
00 01 * * * /bin/bash /scripts/backup.sh &> /dev/null
[root@web01 ~]# crontab -l	检查任务
#每天凌晨1点进行文件备份
00 01 * * * /bin/bash /scripts/backup.sh &> /dev/null

5.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间
[root@web01 ~]# find /backup/ -type d -mtime +7 | xargs rm -rf

服务端需求解析

1.服务端部署rsync,用于接收客户端推送过来的备份数据
[root@web01 ~]# yum install -y rsyncd
[root@web01 ~]# echo '123456' > /etc/rsync.passwd
[root@web01 ~]# cat /etc/rsync.passwd 
[root@web01 ~]# chmod 600 /etc/rsync.passwd 
[root@web01 ~]# systemctl start rsyncd
[root@web01 ~]# netstat -lntp
[root@web01 ~]# ps aux | grep rsync // ps -ef | grep rsync

2.服务端需要每天校验客户端推送过来的数据是否完整
md5sum -c /backup/*_`date +%F`/check.md5 > /backup/result.txt

3.服务端需要每天校验的结果通知给管理员
[root@backup ~]# yum install -y mailx
[root@backup ~]# vim /etc/mail.rc 
--------------------------------------------
set from=xxx@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=xxx@qq.com
set smtp-auth-password=授权码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
----------------------------------------------
[root@backup ~]# mail -s '备份数据完整校验' xxx@qq.com < /backup/result.txt

4.服务端仅保留6个月的备份数据,其余的全部删除
[root@backup ~]# find /backup/ -type d -mtime +180 |xargs rm -rf

rsync双端服务配置

客户端配置

	1>#启动rsyncd服务
# 安装rsyncd,rsync守护进程
[root@backup ~]# yum install -y rsyncd

#创建目录
[root@backup ~]# mkdir /backup
# 创建密码文件 
[root@backup ~]# echo '123456' > /etc/rsyncd.passwd
[root@backup ~]# cat /etc/rsyncd.passwd 
123456
# 将密码文件的权限改成600
[root@backup ~]# chmod 600 /etc/rsyncd.passwd 

# 启动rsync
[root@backup ~]# systemctl start rsyncd
# 检查启动情况
[root@backup ~]# netstat -lntup | grep rsync
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      1149/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      1149/rsync 
[root@backup ~]# ps aux | grep rsync
root       1149  0.0  0.1 114748  1124 ?        Ss   02:54   0:00 /usr/bin/rsync --daemon --no-detach
	
	2>#写脚本
[root@web01 ~]# vim /scripts/backup.sh
#!/bin/bash
#1.定义变量
MOD=/backup
HOST=`hostname`
IP=`hostname -I | awk '{print $2}'`
DATE=`date +%F`
DIR=${MOD}/${HOST}_${IP}_${DATE}
#2.创建目录
mkdir -p $DIR
#3.进到目录下并打包本地文件到当前目录
cd $DIR
tar zcf conf.tar.gz /etc/passwd /var/log/messages &> /dev/null
#4.对文件生成验证文件
md5sum $DIR/conf.tar.gz > $DIR/check.md5
#5.定义环境变量 并推送数据($DIR包括目录本身,$DIR/ 推目录下的全部文件不包括目录本身)
export RSYNC_PASSWORD=123456
rsync -avz $DIR rsync_backup@172.16.1.41::backup
#6.清理数据
find $MOD -type d -mtime +7 | xargs rm -rf

	3>#定时任务
#客户端每天凌晨1点定时执行该脚本
[root@web01 ~]# crontab -e	
#每天凌晨1点定时执行该脚本
00 01 * * * /bin/bash /scripts/backup.sh  &> /dev/null

#定时任务检查
[root@web01 ~]# crontab -l

服务端配置

	1>#配置rsyncd服务
# 安装rsyncd,rsync的守护进程
[root@backup ~]# yum install -y rsyncd

# 写配置文件
[root@backup ~]# vim /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 = gjs_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup

# 创建rsync用户
[root@backup ~]# useradd rsync -M -s /sbin/nologin 
# 创建备份的目录
[root@backup ~]# mkdir /backup
# 给目录的属主和属组改成rsync
[root@backup ~]# chown rsync.rsync /backup/
# 创建密码文件 
[root@backup ~]# echo 'gjs_backup:123456' > /etc/rsync.passwd
[root@backup ~]# cat /etc/rsync.passwd 
gjs_backup:123456

# 将密码文件的权限改成600
[root@backup ~]# chmod 600 /etc/rsync.passwd 
# 启动rsync
[root@backup ~]# systemctl start rsyncd
# 检查启动情况
[root@backup ~]# netstat -lntup | grep rsync
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      1149/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      1149/rsync 
[root@backup ~]# ps aux | grep 'rsync'
root       1149  0.0  0.1 114748  1124 ?        Ss   02:54   0:00 /usr/bin/rsync --daemon --no-detach

	2>#安装并配置邮件服务
#安装邮箱
[root@backup ~]# yum install -y mailx
#编辑邮件系统
[root@backup ~]# vim /etc/mail.rc 
set from=xxx@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=xxx@qq.com
set smtp-auth-password=授权码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/

	3>#编写服务端脚本
# 写脚本文件
[root@backup ~]# vim /root/check.sh
#!/bin/bash
# 1.定义模块目录变量
MOD=/backup
DATE=`date +%F`
DIR=${MOD}/*_${DATE}
# 2.服务端需要每天校验客户端推送过来的数据是否完整
md5sum -c $DIR/check.md5 >> $MOD/result.txt
# 3.服务端需要每天校验的结果通过QQ邮箱通知
mail -s '校验备份数据完整性' xxx@qq.com < $MOD/result.txt
# 4.服务端仅保留6个月的备份数据,其余的全部删除
find $MOD/ -type d -mtime +180 |xargs rm -rf

	4>#定时任务
# 写定时任务
[root@backup ~]# crontab -e
00 01 * * * /bin/bash /scripts/check.sh &>/dev/null
[root@backup ~]# crontab -l
00 01 * * * /bin/bash /scripts/check.sh &>/dev/null

posted @ 2020-08-13 12:19  雪小松  阅读(166)  评论(0编辑  收藏  举报