(1)Rsync(英文名称:remote synchronize)是一个增量备份工具
,配合linux中的任务计划
能实现定时或间隔时间同步
,配合inotify
或者sersync
(这里提到的两个工具会讲解如何使用),可以实现触发式的数据实时同步!
可以通过LAN/WAN快速同步
到数台主机间,rsync使用所谓的**"Rsync算法-quick check"
来使本地
和远程
两个主机之间
的文件达到同步
,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快!
**
(2)rsync还可以实现增量
和全量
同步数据方式(下面会讲到什么是增量及全量)
说明
这里提到的rsync的算法
"quick check"
,它的原理以及对算法实现的机制要比想象中复杂一些,平时我们使用rsync实现简单的备份,同步的功能足以,对于运维工作来说没有太大的必要去研究它的算法实现过程,
如果想实现rsync更强大就更完整的功能,就要有理论知识的支撑,所以想要使用起来就要详细的了解及多做实验练习使用rsync工具,
man rsync #rsync手册
rsync -vvvv #显示执行过程,参数"v"越多就越详细
rsync --version #查看版本号
(2)Rsync支持大多数的类Unix系统,无论是Linux,Solaris还是BSD上都经过了良好的测试
此外,它在windows平台下也有相应的版本
,如cwRsync
和Sync2NAS
等工具.
总结
Rsync是一款开源的,快速的,多功能,可实现全量及增量的本地或远程数据同步备份的优秀工具
例子
假如:设定一个文件夹,这个文件夹主机A/B都各创建一个,要求主机A的文件夹里面的数据每天传送给主机B一次
第一天,主机A的文件夹里面有10G数据,通过全量的形式传给了主机B
说明
A主机一次把文件夹里面的
10G数据
全部传输给了主机B
第二天主机A的文件夹里又增加了5G数据;量,今天还需要继续把这些数据传输给主机B一次
说明
当主机A增加数据量的时候再向主机B发送,还是会把整个15G的文件全部发送过去,主机B又重新把原来有过的和新增的接受一遍,这样导致传输效率极低,造成很多资源上的浪费.
(1)接着上面提到的例子咱们继续演示增量是如何传输数据的
(2)第一天,主机A的文件夹里面有10G数据,主机B里面没有任何数据,这时候主机A通过全量的形式把数据传给了主机B.
第二天主机A的文件夹里又增加了5G数据;量,今天还需要继续把这些数据传输给主机B一次,这个时候主机B已经有之前的10G数据了,通过增量备份会如何传输呢??
提示信息
(1)传统的
cp,scp
工具拷贝每次均是完整的拷贝,而rsync出了可以完整的拷贝外,还具备增量拷贝
的功能!
(2)因此,从同步数据的性能及效率上来说,Rsync同步工具更胜一筹!
(3)在CentOS5系统中,rsync2.x版本的数据对比方法,把所有的文件对比一遍,然后进行同步.
在CentOS6系统中,rsync3.x版本的数据对比方法,一遍对比差异,一遍对差异的部分进行同步.
全量复制的工具有:cp mv scp
增量复制的工具有:rsync(它可以1 V 4 代替cp/scp/ls/rm中的某些功能)
(1)对比cp命令
#拷贝文件
root@db01[20:57:36]:~#ls -l /tmp/hosts
ls: cannot access /tmp/hosts: No such file or directory
root@db01[20:58:58]:~#rsync /etc/hosts /tmp/
root@db01[20:59:10]:~#ls -l /tmp/hosts
-rw-r--r-- 1 root root 475 Dec 23 20:59 /tmp/hosts
#拷贝目录
root@db01[21:06:21]:~#rsync -r /etc /tmp/
root@db01[21:06:10]:~#ls -ld /tmp/etc
drwxr-xr-x 79 root root 4096 Dec 23 21:06 /tmp/etc
(2)对比scp命令
#scp远程复制文件
root@db01[21:08:54]:~#scp -P 22 -rp /etc/hosts 10.0.0.10:/tmp
[email protected]'s password:
hosts 100% 475 0.5KB/s 00:00
#rsync远程复制文件
root@db01[21:11:03]:~#rsync -rp /etc/hosts [email protected]:/tmp/
[email protected]'s password:
(3)对比ls命令
#ls查看文件属性
root@db01[21:13:08]:~#ls -l /etc/hosts
-rw-r--r-- 1 root root 475 Dec 23 20:56 /etc/hosts
#rsync查看文件属性
root@db01[21:11:24]:~#rsync /etc/hosts
-rw-r--r-- 475 2018/12/23 20:56:52 hosts
(4)对比rm命令
#创建测试文件
root@db01[21:15:50]:~#touch /test/ceshi.txt
#使用rm删除
root@db01[21:18:59]:~#rm -f /test/ceshi.txt
#rsync进行删除
root@db01[21:16:27]:~#rsync --delete -r /null/ /test/
root@db01[21:16:53]:~#ls -l /test/ceshi.txt
ls: cannot access /test/ceshi.txt: No such file or directory
#这里的--delete参数在不了解的情况下不要随便使用,会造成很严重的后果!!!
说明
(1)rsync不支持远程到远程的文件拷贝,scp支持
(2)虽然rsync可以实现cp本地拷贝/rm删除/ls查看文件列表等一些功能,但是~!需要注意的是,rsync的初始目的仅仅只是同步的辅助手段,而且rsync实现这些功能的方式和上面提到的这些命令的实现方式是不一样的!
1)支持拷贝普通文件与特殊文件,如:链接文件,设备文件等…
2)可以排除指定文件或目录同步的功能,相当于打包命令tar
的排除功能
tar zcvf test.tar.gz /opt/data -exclude=test.txt
3)可以做到保持文件或目录的权限/时间(访问时间,修改时间,创建时间),软硬连接,属主,属组,等多有属性
4)可以实现增量同步,即只同步发生变化的数据,因此数据传输效率很高
5) a.可以使用rpc,rsh,ssh等方式来配合进行隧道加密传输文件(rsync本身不对数据加密)
b.可以通过socket(进程方式)传输文件和数据(server端/client端)—重点学习
c.支持匿名或认证(无需系统用户)的进程模式输出,可以实现方便安全的进行数据备份及镜像.
1)利用定时任务+rsync方式实现数据同步;
对于网站内部技术人员创建的数据文件,可以采取定时任务方式同步
2)利用实时任务+rsync方式实现数据同步;
对于网站外部访问用户传输的数据,可以采取实时同步方式!