一、Rsync简介
rsync(Remote synchronization)是Liunx/Unix下的一个远程数据同步工具。
它可通过LAN/WAN(局域网/广域网)快速同步多台主机间的文件和目录,并适当利用rsync算法(差分编码)以减少数据的传输。
rsync算法并不是每一次都整份传输,而是只传输两个文件的不同部分,因此其传输速度相当快。
rsync能同步更新两处计算机的文件与目录,并适当利用差分编码以减少数据传输量。rsync中的一项同类软件不常见的重要特性是每个目标的镜像只需发送一次。rsync可以拷贝/显示目录内容,以及拷贝文件,并可选压缩以及递归拷贝。
在常驻模式(daemon mode)下(也就是守护进程,在后台持续运行),rsync默认监听TCP端口873,以原生rsync传输协议或者通过远程shell如RSH或者SSH提供文件。SSH模式下,rsync客户端运行程序必须同时在本地和远程机器上安装。
rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
rsync特性
rsync支持很多特性:
1. 可以镜像保存整个目录树和文件系统
2. 可以很容易做到保持原来文件的权限、时间、软硬链接等等(和scp中-p参数功能类似)
3. 无须特殊权限即可安装
4. 快速:第一次同步时rsync会复制全部内容,但在下一次只传输修改过的文件。rsync在传输数据的过 程中可以实行压缩及解压缩操作,因此可以使用更少的带宽;
5. 安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接
6. 支持匿名传输,以方便进行网站镜像
Rsync的工作原理
客户端构造FileList,FileList包含了需要与服务器同步的所有【文件信息对】name->id(id用来唯一表示文件例如MD5,name是文件名)
客户端将FileList发送到服务器。
服务器上rsync处理客户端发过来的FileList,构建新的NewFileList。 其中根据MD5值比较,删除服务器上已经存在的文件信息对,只保留服务器上不存在或变化的文件。
客户端得到服务器发送过来的NewFileList,然后把NewFileList中的文件重新传输到服务器。
![](https://i-blog.csdnimg.cn/blog_migrate/b27f5ace9064befea79d836e0d16ef03.png)
也就是客户端A创建一个Filelist,里面包含了所有客户端A需要与服务器B同步的所有文件的信息对;然后客户端A将这个Filelist发给服务器B;
服务器B使用rsync处理客户端A发来的Filelist,创建一个新的NewFilelist,里面删除了服务器B已经存在的文件,只留下服务器B上没有的文件或者变化了的文件;然后服务器B将这个NewFilelist发给客户端A;
客户端得到服务器发送过来的NewFileList,然后把NewFileList中的文件重新传输到服务器;实现同步;
举例:
文件加密:
语法:
md5sum 所需加密的文件名
![](https://i-blog.csdnimg.cn/blog_migrate/86e5d6371363eb1bb3af1a26a64d8b30.png)
fb956ba1056912397fc187243e13bcca 为加密后的id值;1为文件名
二、Rsync安装
安装rsync,我们可以分为两种方式:源码方式安装和RPM方式安装。
注意:rsync软件无论是服务器端还是客户端都是同一个软件包。
源码方式安装
# 源码方式安装rsync,需要到其官网下载对应的安装包。rsync官网:
rsync.samba.org
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)、编译安装
# 源码安装rsync时,其编译时所需要的gcc库文件尽量提前安装完毕
# 默认安装到/usr/local/目录下
./configure
make &&make install
4)、设置开机启动
echo “/usr/local/bin/rsync --daemon -config=/etc/rsyncd.conf” >> /etc/profil
yum方式安装(推荐)
yum -y install rsync
![](https://i-blog.csdnimg.cn/blog_migrate/853d191fb80cb3c66c8a9c83ab38e098.png)
三、rsync认证方式
rsync有两种常用的认证方式,一种是rsync-daemon方式,另外一种是ssh方式。
在平时使用过程,我们使用最多的是rsync-daemon方式。
注意:在使用rsync时,服务器和客户端都必须安装rsync程序。
rsync-daemon 认证
rsync在rsync-daemon认证方式下,默认监听TCP的873端口。
【rsync-daemon认证方式是rsync的主要认证方式,这个也是我们经常使用的认证方式。】
并且也只有在此种模式下,rsync才可以把密码写入到一个文件中。
注意:
rsync-daemon认证方式,需要服务器和客户端都安装rsync服务
并且只需要rsync服务器端启动rsync,同时配置rsync配置文件。
客户端启动不启动rsync服务,都不影响同步的正常进行。
ssh认证
rsync在ssh认证方式下,可通过系统用户进行认证,即在rsync上通过ssh隧道进行传
输,类似于scp工具。
此时同步操作不在局限于rsync中定义的同步文件夹。
注意:
ssh认证方式,不需要服务器和客户端配置rsync配置文件
只需要双方都安装rsync服务,并且也不需要双方启动rsync。
# 若rsync服务端SSH为标准端口,此时rsync使用方式如下:
rsync -avz /root/test root@10.10.10.10:/root/
# 若rsync服务端SSH为非标准端口,可通过rsync的-e参数进行端口指定。使用方式如
下:
rsync -avz /root/test -e 'ssh -p1234' root@10.10.10.10:/root/
两种认证方式的本质区别:
ssh 协议认证连接的两端是通过管道完成通信和数据传输的,当连接到远程主机时,将在远程主机 fork 出 rsync 进程使其成为 rsync server;
而 rsync 协议认证是事先在远程主机上运行 rsync 守护进程,监听套接字等待客户端的连接,建立连接后所有通信方式都是通过套接字完成的。