rsync
rsync 命令使用说明:
-
1、命令功能:Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。
什么使全量:全部复制(同步)过去(无论新旧)
什么使增量:只复制(同步)有变化的(新的 新修改 新创建)
- 2、命令功能:像scp 命令一样可以在本地同步,也可以跨主机同步,但是比scp 强大的多。
- 3、常用配合使用命令:tar+定时任务
-
4、rsync使用注意事项:tmp和/tmp/
/tmp:tmp目录和tmp目录下面所有的内容
/tmp/:tmp目录下面所有的内容
- 5、使用场景:
不同服务器之间数据备份 定时任务+rsync
存储服务器实时备份(同步)sersync + rsync
rsync 命令使用格式:
rsync命令同scp 命令使用格式一样 :scp 从哪里来 到哪里去。
示例:
scp命令
[root@web01 ~]# scp 10.0.0.41:/etc/hosts /tmp #从10.0.0.41这个主机获取/etc/hosts 文件到本地/tmp目录中
[root@web01 ~]# scp /etc/hosts 10.0.0.41:/tmp #将本地/etc/hosts文件,上传到10.0.0.41主机的/tmp目录中
rsync 命令使用姿势
rsync -av -P /etc/sysconfig 10.0.0.41:/tmp #将本地 /etc/sysconfig目录 上传到10.0.0.41这个主机的/tmp文件中
rsync -av -P 10.0.0.41:/etc/sysconfig /tmp #将10.0.0.41这个主机上的 /etc/sysconfig文件,获取到本地/tmp目录下
rsync命令参数
参数 | 说明 |
---|---|
-v | 显示过程 |
-P | 显示详细过程 |
--delete | rsync同步的时候 让源(从那来) 目标(到哪里去) 一模一样;会删除/同步不同的地方 |
--exclude | 排除 |
--bwlimit=RATE | 限制传输速度 |
-a | -a=-rlgtopD,相当于这七个参数 |
-r | 递归 |
-l | 复制软连接 |
-g | 复制保持用户组不变 |
-o | 所有者不变 |
-t | 保持修改时间不变 |
-p | 保持权限不变 |
-D --devices --specials | 复制特殊设备 |
rsync 守护模式(客户端和服务端-CS模式)
服务端配置方式分一下几个步骤执行。
1、修改配置文件 /etc/rsyncd.conf
2、创建共享目录
3、添加rsync用户
4、创建密码文件
5、启动 rsync服务
6、检查rsync端口和进程
7、本地测试
8、客户端测试,文件制定密码格式(--password-file=)
rsync实现过程:
(1、)rsync 配置文件说明:
(2、)添加rsync 用户:useradd -s /sbin/nologin -M rsync
(3、)创建共享目录:mkdir /data
注意修改属主、数组 chown rsync.rsync /data
(4、)创建rsync密码文件:echo 'rsync_bacup:123456' /etc/rsync.password
注意修改密码文件的权限 chmod 600 /etc/rsync.password
(5、)启动rsync服务:systemctl restart rsyncd
(6、)检查rsync端口和进程: ss -lntup | grep rsync && ps -ef |grep rsync
(7、)本地测试(在本地执行此命令即可):rsync -av /etc/hosts rsync_backup@10.0.0.41::data
(8、)客户端测试 (需要换一台设备进行) rsync -avz --delete /tmp/ rsync_backup@10.0.0.41::data --password-file=/etc/rsync.passwd
注意需要先制定存放密码的文件,然后进行测试 echo '123456'> /etc/rsync.passwd
排错:
1、auth failed on module data : data模块的密码错误了
排查思路
1)密码错误
2)/etc/rsync.password 内容是否正确
3)看日志 发现是密码文件权限的问题
[root@backup /data]# rsync /etc/hosts rsync_backup@10.0.0.41::data
Password:
@ERROR: auth failed on module data
rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]
2019/05/18 14:52:37 [9000] secrets file must not be other-accessible (see strict modes option)
2019/05/18 14:52:37 [9000] auth failed on module data from UNKNOWN (10.0.0.41) for rsync_backup: ignoring secrets file
2、Operation not permitted :权限不足
排查思路
1)查看 path = /data 目录权限
2)查看 /tmp 目录权限是否正常
3)如果还有问题,查看 fake super = yes 是否配置,要是配置了还有问题 ,将配置文件中的 uid 、gid改为root 用户 ;此问题可能是centos 7 特有的坑
全网备份:
企业案例:rsync上机实战考试题:
web01
backup
某公司里有一台Web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他机器上做一个周期性定时备份。要求如下:
每天晚上12点整在Web服务器A(web01 )上打包备份网站程序目录并通过rsync命令推送到服务器B(backup)上备份保留
(备份思路可以是先在本地按日期打包,然后再利用rsync推到备份服务器上)。
具体要求如下:
1)Web服务器A和备份服务器B的备份目录必须都为/backup。
2)Web服务器站点目录假定为(/var/www/html)。
3)Web服务器本地仅保留7天内的备份。
4)每天晚上12点把备份/backup 推送到 备份服务器B上
5)备份服务器上每周六的数据都保留,其他备份仅保留180天备份。
6)备份服务器上检查备份结果是否正常,并将每天的备份结果发给管理员信箱。
思路:
1、配置rsync守护进程模式
2、客户端备份脚本
1)备份到backup目录下,并且以IP地址或主机名命名
ip=`hostname -I |awk'{print $NF }'
mkdir -p /backup/$ip
2)压缩包以日期+星期
tar zchf /backup/$ip/conf-`date +%F-%w`.tar.gz etc/ var/spool/cron/ var/www/html/
3)生成校验信息,留作检查使用
#md5sum校验码
`find /backup/$ip/ -type f -name "*.tar.gz" |xargs md5sum >/backup/$ip/check.md5`
4)发送压缩包至备份服务器
rsync -az /backup/ rsync_backup@backup::backup --password-file=/etc/rsync.password
5)删除最近7天的压缩包
#find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm
客户端:
客户端脚本完整版
cd / && \
tar zchf /backup/$ip/conf-date +%F-%w
.tar.gz etc/ var/spool/cron/ var/www/html/
注意这里的反斜杠的作用,\在这里表示续行符号。
#!/bin/bash
#创建以IP地址命名的目录
ip=`hostname -I |awk '{print $NF}'`
mkdir -p /backup/$ip
#backup configure
cd / && \
tar zchf /backup/$ip/conf-`date +%F-%w`.tar.gz etc/ var/spool/cron/ var/www/html/
#md5sum校验码
find /backup/$ip/ -type f -name "*.tar.gz" |xargs md5sum >/backup/$ip/check.md5
#push rsync
rsync -az /backup/ rsync_backup@backup::backup --password-file=/etc/rsync.password
#del
#find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm
3、将脚本按照要求时间添加到定时任务中
3、服务端删除与检查脚本
find /backup/ -type f -mtime +180 -name ".tar.gz" ! -name "-6.tar.gz" | xargs rm -f
md5sum --check /backup/172.16.1.37/check.md5