1、什么是rsync?
rsync(remote synchronization)是一种远程同步工具。
2、rsync的工作原理
(1)客户端构造FileList,其包含有要与服务器同步的所有文件信息对,即name->id(id
是用于唯一表示文件的,比如MD5)。
(2)服务端根据客户端提供的FileList,删除服务器端以及存在的MD5,只保留不存在与服务端的文件信息对,生成一个新的FileList,返回给客户端。
(3)客户端根据收到的新的FileList,发送对应的MD5文件。
3、rsync安装方式
(1)源码安装
1、下载
wget https://download.samba.org/pub/rsync/src/rsync-3.2.3.tar.gz
2、解压并安装
tar -xvf rsync-3.2.3.tar.gz
3、编译安装
./configure make &&make install
源码安装rsync时,其编译时所需要的gcc库文件尽量提前安装完毕 , 默认安装到/usr/local/目录下
(2)yum安装(一般都是用yum安装)
yum install -y rsync
-y 的意思是,在安装过程中遇到选择y\n的时候都自动选择yes
4、rsync的认证方式
(1)rsync-daemon方式
这种方式默认监听的端口是873,并且rsync-daemon方式需要客户端和服务端都安装rsync,以及都要配置rsync配置文件,但是只需要启动服务端的rsync服务,客户端不启动服务也不影响。
(2)ssh认证方式
ssh认证方式,只需要客户端和服务端都安装rsync服务,不需要启动
-e 选项指定协议
例如:
rsync -r -e ssh /root/test root@10.10.10.10:/root/
5、两种认证方式的区别
ssh 协议认证连接的两端是通过管道完成通信和数据传输的,当连接到远程主机 时,将在远程主机 fork 出 rsync 进程使其成为 rsync server;
而 rsync 协议认证是 事先在远程主机上运行 rsync 守护进程,监听套接字等待客户端的连接,建立连接后 所有通信方式都是通过套接字完成的。
6、rsync命令参数
[root@localhost ~]# rsync [OPTION] SRC DEST
用于本地备份
[root@localhost ~]# rsync [OPTION] SRC [USER@]HOST:DEST
将客户端的内容传送到服务端(ssh协议)
[root@localhost ~]# rsync [OPTION] [USER@]HOST:SRC DEST
将服务端的指定内容拉回客户端(ssh协议)
[root@localhost ~]# rsync [OPTION] [USER@]HOST::SRC DEST
将客户端的内容传送到服务端(rsync协议)
[root@localhost ~]# rsync [OPTION] SRC [USER@]HOST::DEST
将服务端的指定内容拉回客户端(rsync协议)
(1)相关参数解释
src:表示要备份的目标文件路径
dest:表示目标文件要存放的路径
/tmp --表示将tmp目录本身及目录下的内容进行传输
/tmp/ --表示只传输tmp目录下面的内容信息
user@:指定登录系统的用户名,若不写,则默认为root用户
host:目标IP地址
(2)option常用选项
1、-a
这是归档模式,表示以递归方式传输文件,并保持所有属 性,它等同于-r、-l、-p、-t、-g、-o、-D 选项。-a 选项 后面可以跟一个 --no-OPTION,表示关闭 -r、-l、-p、- t、-g、-o、-D 中的某一个,比如-a --no-l 等同于 -r、- p、-t、-g、-o、-D 选项。
2、-r
表示递归处理子目录,只传输文件的时候不需要加,若要将子目录一并传输,需要加
3、-v
打印一些信息,比如文件列表,数量
4、-p
表示传输文件时保留文件的权限
5、-o
保留属主信息
6、-g
保留属组信息
7、-D
保留设备信息
8、-t
保留时间信息
9、-l
保留软连接信息
(3)option特殊选项
1、--delete
删除dest文件中src没有的文件
2、--exclude=pattern(英文意思是模式)
排除不需要传输的文件,比如.txt格式的文件
3、--progress
在传输过程中显示同步的状态,比如文件数量,文件传输进度
4、-n
如果不确定传输的命令的结果是否正确,可以用-n 参数模拟命令执行的结果
7、rsync命令中如何选择传输时使用的方式?
若使用单冒号:则表示使用ssh隧道传输,
若使用双冒号::则表示使用rsync模块的传输方式。
8、rsync协议和ssh协议的区别?
rsync协议需要额外的配置文件,稍微复杂,但是可靠性高,比较安全。
ssh协议,操作简单,但是有泄露服务器root的password的风险。
9、rsync 命令的其他用法(用法相同)
类似于 cp 命令 -- 实现本地备份传输数据
类似于scp 命令 -- 远程备份传输数据
类似于 rm 命令 -- 实现无差异同步备份
类似于 ls 命令 -- 本地文件信息查看