rsync是一个网络间的实时同步目录或文件的工具,能够实现数据增量同步,可以起到热备和比全量备份数据节省时间及带宽的优点,通常的备份文件或目录都是以拷贝形式全量备份,如果文件过于庞大,则需要很多时间,假如是通过网络间来拷贝一个全量备份,那则又会消耗较大的网络资源,rsync可以起到增量备份,可以只同步备份新增加的部分文件或目录,可以极大的减少时间和网络资源的使用
rsync的特性如下:
1)支持拷贝特殊文件如链接,设备等
2)可以有排除指定文件或目录同步的功能,相当于打包命令tar
3)可以保持原来文件或目录的权限,时间,软硬链接等所有属性均不改变。
4)可实现增量同步,即只同步发生变化的数据,因此数据传输效率更高
5)可以使用rcp,rsh,ssh等方式来配合传输文件,也可以通过直接的socker链接
6)支持匿名的或认证的进程模式传输,方便进行数据备份及镜像
rsync 同步格式(来源目录:需要拷贝的原文件或目录,目标目录:指拷贝到的目标目录上)
rsync [option选项] 来源目录 目的目录
rsync [option选项] 来源目录 用户@远程主机:目的目录
rsync [option选项] 用户@远程主机来源目录 目标目录
rsync [option选项] 来源目录 user@远程主机::目标目录
rsync [option选项] user@远程主机::来源目录 目标目录
使用yum安装rsync同步工具:yum install -y rsync
rsync常用选项
-a 包含选项 -rtokgod
-r 同步目录时需要添加的选项,类似cp时的-r选项
-v 同步时输出的信息,显示同步的过程
-l 保留软连接,不会同步软连接指向的源文件,这个-l选项同步会导致软连接失效
-l 保留软连接同时同步软连接的源文件
-p 同步时保持文件原权限属性,不改变文件的原权限
-o 同步文件或目录时保持原先的属主,不改变文件的原属主
-g 同步时保持文件或目录的属组,不改变文件的原属组
-d 保持设备文件信息
-t 同步时保持文件时间的属性,不改变文件的原时间属性
--delete 同步过程中对比目标是否有源没有的文件,如果目标拥有源没有的文件,则将目标内比源多的文件内容删除处理,如同步web程序目录时排除掉产生的log日志目录不进行同步
--exclude 过滤掉某些文件不做同步,如--exclude "1.log" 会把文件名包含1.log的文件或目录过滤掉不做同步
-p 显示同步过程,比如传输速率,比-v选项更加详细
-u 该选项表示为:如果目标中存在的文件比源中的文件新时,则不同步该文件,同步时以最新的文件为主,源不会去覆盖目标内的文件内容
-z 传输时压缩,以zip格式压缩,压缩时节省带宽,但是相对的比较消耗cpu
rsync常用选项示例
使用rsync同步一个目录
同步一个软连接和软连接源文件的目录到目标目录
这个错误是因为当前目录中包含失效的软连接文件,这时我们需要查找出失效的软连接文件进行修复或删除处理
使用-l同步一个包含软连接的文件,创建一个软连接文件然后进行同步
命令 : rsync -avl /usr/local/src/tmp/ /tmp/tmp-1/ 同步后软连接会被同步成一个普通的文件
--delete 选项 同步覆盖掉源内不存在的文件,如目标中存在1234.log,源里不存在1234.log,那么同步时会删除掉目标内的1234.log文件
rsync --exclude 排除某些文件或目录不进行同步,需求如不同步日志文件
rsync -p 选项 显示传输时的详细信息,传输速率,传输时间等信息(这次同步了--exclude排除的文件)
rsync -u 选项会比较同步时所有文件的时间属性信息,同样的两个文件,如果目标的时间属性更新,则不会在同步时把源文件覆盖目标文件,针对目标上的这个比拷贝源还新的文件不做操作
rsync主机间的同步方式
rsync推送同步,把文件或目录推送到其他主机上:rsync -avp 需要同步的目录 目标主机ip:/目标目录路径,如:
rsync -avp /usr/local/src/ 192.168.1.223:/usr/local/src/tmp
推送方式的同步结果
rsync拉取同步的方式,对远程主机的整个目录进行主动拷贝: rsync 远程ip:/拷贝的目录路径 /存放在本机的路径/,如下命令:rsync -avr 192.168.1.223:/usr/local/src/tmp /usr/local/src
主动同步的执行结果,结合上条同步实践可以看到把远程主机的tmp整个目录拷贝过来了,两台机器上的目录下的文件数量和名称也是一致的
rsync通过非默认的ssh端口同步
通过非22端口同步,指定自定义ssh端口进行同步,rsync -avr -e "ssh -p 指定自定义端口" /本机存放的目录/ 远程主机ip:/远程目录/ ,命令如:rsync -avr -e "ssh -p 22" /tmp/ 192.168.1.223:/tmp/tmp-1
同步后将主动同步时的tmp目录进行了删除,从这一点也可以看到进行了同步
此外rsync可以通过系统服务的方式来定时同步主机之间的文件,关于如何配置rsync服务同步的方式请参阅其他资料