Linux_rsync

一. Rsync

1.备份
  • 备份方式

    • 完全备份:全备,效率低下,占用空间
    • 增量备份:增备,效率高,节省空间

在这里插入图片描述

  • 备份工具

    • 本地备份:cp
    • 远程备份:scp、rsync
2. rsync命令
  • 推送 rsync OPTION SRC [user@]HOST:DEST
  • 拉取 rsync OPTION [user@]HOST:SRC DEST
    • OPTION
      • -a 归档模式(相当于tropgDl的集合)
      • -v 详细显示输出
      • -z 传输时压缩增高效率
      • -r 递归传输目录及子目录
      • -t 保持文件时间属性
      • -o 保持文件属主信息
      • -p 保持文件权限
      • -l 保持软链接
      • -P 显示同步过程及传输的进度信息
      • -D 保持设备文件信息
      • -L 保留软链接指向的目录文件
      • -e 使用的信道协议,指定代替rsh的shell
      • –delete 让源与目标,在推送或拉取时,客户端与服务端保持一致。(有风险)
      • –dwlimit 限速
      • –exclude-from=file 文件名所在的目录文件
      • –exclude=PATTERN 指定排除不需要传出的文件模式
例如:
###
推送:[root@nfs ~]# rsync -avz ./1.txt root@172.16.1.41:/tmp

###
拉取:[root@nfs ~]# rsync -avz root@172.16.1.41:/tmp/yum.log ./

###
限速推送:rsync -avzP --bwlimit=10 /etc rsync_backup@172.16.1.41::backup   ##生产常用,极少占用用户资源


PS1:在推送或拉取目录时,要注意’/‘问题,不加‘/’,是整个目录,加‘/’,是目录下的所有文件或目录。

3.守护进程

(不适用真实的用户,可以自行创建一个用户,去运行这个服务)

1.下载rsync
yum install -y rsync
2.修改配置文件

(对文件的要求高,每行后不能有table,不能有注释#)

[root@backup /tmp]# 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 = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]			
path = /backup
    • 对/etc/rsyncd.conf文件详解
[root@backup /tmp]# cat /etc/rsyncd.conf 
uid = rsync			#raync是使用rsync用户身份运行
gid = rsync
port = 873			#此服务的端口号
fake super = yes	#不用root身份也可以存储完整的数据以及数据属性
use chroot = no		#固定在某一个目录种
max connections = 200	#最大连接数
timeout = 600			#超时时间
ignore errors			#忽略错误
read only = false		#可以进行读写操作
list = false			
auth users = rsync_backup		  #自定义假用户(不存在在系统种)
secrets file = /etc/rsync.passwd  #存储密码的路径
log file = /var/log/rsyncd.log	  #此服务的日志
#####################################
[backup]				#模块的名称
comment = welcome to backup server # 描述的意思
path = /backup			#模块名称对应的哭啼目录
3.根据文件进行初始化操作
  • 创建假用户(运行rsync进程需要的身份)
useradd rsync -r -s /sbin/nologin -M
  • 创建密码文件
[root@backup /tmp]# vim /etc/rsync.passwd 
rsync_backup:1    #要与配置文件种定义的保持一致
chmod 600 /etc/rsync.passwd   #要给密码文件授权600,否则报错。
  • 创建模块目录
mkdir /backup
chown -R rsync.rsync /backup   #无步操作报错。
4.启动
[root@backup /tmp]# systemctl start rsyncd
[root@backup /tmp]# systemctl enable rsyncd

[root@backup /tmp]# netstat -lntup |grep 'rsync'
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      17348/rsync         
tcp6       0      0 :::873                  :::*                    LISTEN      17348/rsync
5.测试

客户端使用推送或拉取的方式

#拉取
[root@nfs ~]# rsync -avzP rsync_backup@172.16.1.41::backup ./
receiving incremental file list
./
.ssh/

sent 31 bytes  received 228 bytes  518.00 bytes/sec
total size is 6,892  speedup is 26.61

#推送
[root@nfs ~]# rsync -avz ./yum.log rsync_backup@172.16.1.41::backup
sending incremental file list
yum.log

sent 89 bytes  received 43 bytes  88.00 bytes/sec
total size is 0  speedup is 0.00
  • 客户端非交互式传输数据至服务端

1.定义环境变量

export RSYNC_PASSWORD=1
#然后执行命令不需要密码

2.命令后加入参数 --password-file=/etc/rsync.passwd

ech首先创建密码文件:echo 'rsync_backup:1' /etc/rsync.passwd
[root@nfs ~]# chmod 600 /etc/rsync.pass   #授权600

rsync -avz ./yum.log rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passwd

二.rsync用户与rsync_backup假用户有什么关系

  • 并没有什么关系。
  • 连接rsync服务端的用户不可以是系统用户,只能是定义的连接用户(在配置文件中定义的假用户,不存在在系统中)
  • rsync用户(存在在系统中的用户)用来启动进程,rsync_backup(不存在在系统中的用户,自定义的用户)用于连接服务端的用户。

三.案例

公司有一套集群架构,为了架构的数据安全性,请定时将web01和nfs主机中重要文件备份。请务必保证
备份文件的正确性。并且,在备份服务器中只保留最近7天的备份数据 (服务端不能拉去客户端的数据,服务端不可动)

答:

  • 客户端
    • 提前准备存放备份的目录
    • 在本地打包备份
    • 最后将备份的数据进行推送到备份服务器
    • 客户端服务器本地保留最近7天的数据,避免浪费空间
    • 每天凌晨1点执行该脚本
[root@nfs ~]# vim /server/scripts/client_push_data.sh 
# 定义变量
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Path=/backup
Host=$(hostname)
Addr=$(ifconfig eth1 | awk 'NR==2 {print $2}')
Date=$(date +%F)
Dest=${Host}_${Addr}_${Date}


# 1.创建目录
mkdir -p $Path/$Dest

# 2.文件打包,存储至对应的目录
cd / && \
tar czf $Path/$Dest/sys.tar.gz etc/hosts etc/fstab && \
tar czf $Path/$Dest/other.tar.gz server/scripts var/spool/cron


# 3.添加一个标记 md5
md5sum $Path/$Dest/sys.tar.gz $Path/$Dest/other.tar.gz > $Path/$Dest/flag_$Date


# 4.推送到指定的仓库
export RSYNC_PASSWORD=1
rsync -avz $Path/$Dest rsync_backup@172.16.1.41::backup

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




[root@nfs ~]# crontab -e
#备份系统配置文件、应用配置文件到远端backup主机
00 1 * * * /bin/sh /server/scripts/client_push_data.sh &>/dev/null

  • 服务端
    • 服务端部署rsync,用于接受客户端推送过来的备份数据
    • 服务端需要每天校验推送过来的数据是否完整
    • 服务端需要将每天校验的结果发送给管理员
    • 服务端仅保留6个月的备份数据,其余删除
[root@backup ~]# vim /server/scripts/server_data.sh 
# 定义变量
Path=/backup
Date=$(date +%F)
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin


# 1.服务端校验
md5sum -c $(find $Path/ -type f  -name "flag_${Date}") > $Path/result.txt


# 2.将文件的结果通过邮箱的发送进行发送给管理人员
	# 2.1 将服务器配置邮箱
	# 2.2 通过mail命令发送邮件给管理员
mail -s "Rsync Backup $Date" 552408925@qq.com < $Path/result.txt


#3.保留最近6个月
find $Path/ -type d  -mtime +180 | xargs rm -rf

[root@backup ~]# crontab -e
#将/back下面的远端备份数据的校验结果发送给管理员
00 00 * * * /bin/sh /server/scripts/server_data.sh &>/dev/null

四.配置邮件报警服务

  • 1.安装邮件服务:
[root@web01 ~]# yum install -y mailx
  • 2.修改配置文件
[root@backup ~]# vim /etc/mail.rc    #(将下面的内容追加到文件中)
set from=145459@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=145459qq.com
set smtp-auth-password=#客户端授权码
set smtp-auth=login
  • 3.测试:
[root@backup ~]# mail -s '主题' 123qq.com(收件人) </etc/hosts
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

登高·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值