1,Rsync介绍
rsync:是一个远程同步传输工具,可通过LAN/WAN快速通过多台主机之间的文件
rsync通过“rsync算法”来远程同步传输两个主机之间不同的文件。而不需要传输已经有的文件来达到快速传输同步文件的目的
端口:873
模式:C/S

2,应用场景
备份方式:
全量备份: 备份所有的文件
增量备份: 备份与上一次备份增加的文件

应用场景

1)本端传输到对端

2)对端传输到本端

3)分层模式

rsync远程拷贝文件Windows rsync远程拷贝文件 多节点_rsync远程拷贝文件Windows


4)云服务器中转

rsync远程拷贝文件Windows rsync远程拷贝文件 多节点_运维_02


rsync与cp命令和scp命令的区别?

cp:在一个主机内复制数据,不能实现主机与主机之间

scp:可以实现主机与主机之间的远程复制数据,但不能实现只复制增量文件

scp -r /root 172.16.1.41:/root/ 将本端的数据复制到172.16.1.41主机的/root目录下

scp -r 172.16.1.41:/root/ /root将172.16.1.41主机的/root目录下的数据复制到本端

3,rsync三种模式

1)本地模式

2)远程模式

3)服务模式

创建测试数据文件:

1)dd if=/dev/zero of=/root/1G.txt bs=1M count=1024                                                  
for i in {1..10}                                                    
do                                                  
echo "S{i}" > /root/test_${i}.txt                                                   
done

1)本地模式
rsync -avzP /root/ /tmp 类似与cp的命令
rsync -azvP a.txt /tmp

2)远程模式
rsync -avzP /root/ 172.16.1.41:/root/ 将本地/root目录下的数据远程同步到172.16.1.41端的/root目录下
rsync -avzP 172.16.1.41:/root/ /root 将172.16.1.41端/root目录下的数据同步到本端/root目录下
a 表示以递归方式传输文件,并保持所有文件属性
v 详细模式输出
z 对备份的文件在传输时进行压缩处理
P 显示传输速率

3)服务模式
1)安装
yum -y install rsync

rpm -qc rsync 查看服务的配置文件

2)配置

1,创建统一的用户和组www uid=666 gid=666

rsync远程拷贝文件Windows rsync远程拷贝文件 多节点_数据_03


rsync远程拷贝文件Windows rsync远程拷贝文件 多节点_服务端_04

2,修改配置文件(服务端)

rsync远程拷贝文件Windows rsync远程拷贝文件 多节点_运维_05


uid = rsync #rsync使用的用户,默认nobody 
gid = rsync #rsync使用的gid 默认nobody 
use chroot = no #是否限定在该目录下,默认为true,当有软连接时,需要改为fasle,如果为 #true就限定为模块默认目录,通常都在内网使用rsync所以不配也可以 max connections = 200 #设置最大连接数timeout = 300 #超时时间 建议300-600
pid file = /var/run/rsyncd.pid #pid文件位置 
lock file = /var/run/rsync.lock #指定lock文件用来支持“max connections ”参数使总连接不会超过限制 
log file = /var/log/rsyncd.log #日志文件路径 
ignore errors #忽略io错误 (最好注释或者不要配上去,有了这个代码,错误信息不回输入进日志文件,只是显示在屏幕上,不利于排错) 
read only = false #指定客户端是否可以上传文件,默认 
truelist = false #是否允许客户端查看可用模块 
hosts allow = 192.168.253.0/24 #允许连接的ip段或个别ip,默认任何人都可以连接 
hosts deny = 0.0.0.0/32 #不允许连接的IP段或个别ip 
auth users = rsync_backup #匿名用户严重登录 
secrets file = /etc/rsync.password #指定用户名和密码文件

格式: 用户名:密码 密码不超过8位#这个是密码文件 权限最好是600 [backup] comment = "this is a comment" #此参数指定在客户端获取可用模块列表时显示在模块名称旁边的描述字

path = /backup #模块在服务端的绝对路径

3,配置密码文件和服务端存放数据目录

rsync远程拷贝文件Windows rsync远程拷贝文件 多节点_客户端_06


rsync远程拷贝文件Windows rsync远程拷贝文件 多节点_rsync远程拷贝文件Windows_07


4)客户端远程备份数据到Rsync服务端成功

rsync远程拷贝文件Windows rsync远程拷贝文件 多节点_rsync远程拷贝文件Windows_08


备份数据在服务端显示用户和组都是www

rsync远程拷贝文件Windows rsync远程拷贝文件 多节点_运维_09


注意:rsync服务搞清楚root用户和配置文件里的www用户以及登录的虚拟用户rsync_backup之间的关系

1)通过ps -aux|grep rsync可以看到rsync服务的deamon是root用户在运行

2)当数据在传输的过程中式www用户在执行

3)rsync_backup用户的功能仅仅是在登录的时候做验证功能

4,如何实现免密登录远程复制,同时在定时任务中的应用场景 (客户端)

方法一

rsync远程拷贝文件Windows rsync远程拷贝文件 多节点_服务端_10


方法二

通过环境变量预先定义好虚拟用户登录密码,export RSYNC_PASSWOR="oldboy"。

这是临时生效,可以写在脚本里,放定时任务里就可以实现免密自动备份!

rsync远程拷贝文件Windows rsync远程拷贝文件 多节点_数据_11


rsync远程拷贝文件Windows rsync远程拷贝文件 多节点_客户端_12