本篇博客是51CTO老男孩-企业级数据同步软件rsync深度实战第一部分的学习笔记,在此篇博客记录下来是为方便后期查找翻阅,本文所有的知识点归老男孩讲师所有!

本篇博客严禁转载,谢谢大家配合。

概念:Rsync是一款开源的、快速的、多功能的、可实现全量及增量本地或远程数据镜像同步备份的优秀工具。Rsync适用于unix/linux/windows等多种操作系统平台。

全量及增量:两个服务器A和B,当服务器A有了新的数据要同步到服务器B上时,全量是将所有的信息全部复制并传输到服务器B上。

wKiom1lciGqge9CQAABoxaVStnU171.png-wh_50

而增量是将服务器A新增的数据直接传输到服务器B上,相比全量,增量拥有更快的效率。

wKiom1lciITRLVBfAABextfZG0c676.png-wh_50

简介:Rsync英文全称为Remote Rynchronization(远程同步)Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像远程备份等功能;还可以在本地主机的不同分区或目录之间全量及增量的复制数据。还可以实现删除功能

          在同步备份数据时,在默认情况下,Rsync通过其独特的“quick check”(快速检查)算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可以根据权限,属主等属性的变化同步,但需要制定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速的同步备份数据。非常符合我们平台产品的需求,契合度是非常高的。

属主:文件的属主就是指文件所属的主人,就是owner。

特性:

(1)支持拷贝特殊文件如链接,设备等。

(2)可以有排除指定文件或目录同步的功能。

(3)可以做到保持源文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变

(4)可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高

(5)可以使用rcp,rsh,ssh等方式来配合传输文件。

(6)可以通过socket(进程方式)传输文件和数据。

(7)支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。

rcp : remote file copy,即远程文件拷贝。

rsh : remote shell,远程 shell的缩写。

ssh : secure Shell 的缩写, 为建立在应用层和传输层基础上的安全协议。

工作方式:

(1)主机本地间的数据传输。

(2)借助rcp,ssh等通道来传输数据。

(3)以守护进程(socket)的方式传输数据。(重要功能)


本地数据传输模式(local-only mode):


Rsync本地传输数据的语法为

rsync [OPTION...] SRC... [DEST]    (SRC-源,DEST-目的,OPTION-选项)

语法说明:

1、Rsync为同步的命令。

2、[OPTION...]为同步时的参数选项。

3、SRC为源,即待拷的分区、文件或目录等。

4、[DEST]为目的分区、文件或目录等。

实例1:把系统的hosts文件同步到/opt目录

wKiom1lciMeT0F5NAALHacJJqpw309.png-wh_50

实例2:把opt目录拷贝到/mnt下

wKioL1lciSfyXHIgAALzw-MYFxM786.png-wh_50


通过远程shell进行数据传输(remote shell mode):


通过远程shell(rcp,ssh等)传输可以分为两种情况,其语法分别为:

拉取pull:rsync[OPTION...][USER@]HOST:SRC...[DEST]

把远程host的原地址拉到本地

推送push:rsync[OPTION...]SRC...[USER@]HOST:DEST

把本地推到远程的地址前面


    语法说明:

       1、Rsync为同步的命令。

       2、[OPTION...]为同步时的参数选项。

       3、[USER@]HOST...为Rsync同步的远程的连接用户和主机地址。

       4、SRC为源,即待拷的分区、文件或目录等,和HOST之间用一个冒号连接。

       5、[DEST]为目的分区、文件或目录等。

       其中拉取(get),表示从远端主机把数据同步到执行命令的本地主机相应目录;推送(put)表示从本地主机执行命令把本地的数据同步到远端主机指定目录下。


       拉取实例语法:

       rsync -vrtopgP -e’ssh -p 22’oldboy@10.0.0.141:/opt/tmp

       推送实例语法:

       rsync -vrtopgP -e’ssh -p 22’/etc oldboy@10.0.0.15:/tmp

       关键语法说明:

       1、-vzrtopg相当与上文的-avz,表示同步时文件和目录属性不变。参数细节见后文。

       2、--progress显示同步过程,可以用-P替换。

       3、-e’ssh -p 22’,表示通过ssh的通道传输数据,-p 22可省略。

       4、oldboy@10.0.0.141:/opt 远程的主机用户,地址,路径。

       5、/tmp 本地的路径。

    

    使用守护进程的方式数据传输(daemon mode):


       通过守护进程方式传输同样分为两种情况,每种情况又有两种语法写法,分别为:

       拉取:1. rsync [OPTION...] [USER@]HOST::SRC... [DEST]

         2. rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

    推送:1. rsync [OPTION...] SRC... [USER@]HOST::DEST 

         2. rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

    特别值得注意的是,与远程shell方式的命令不同的是,第1种语法格式,本节命令[USER@]HOST : : SRC和[USER@]HOST : : DEST 结尾处,均为双冒号连接SRC或DEST,另外,这个SRC或DEST也不再是路径了,而是守护进程中配置的模块名称。下文会以例子详细说明。

        第2种方法实例(rsync://)

        拉取实践命令:

        rsync -avzrtopgP rsync ://rsync_backup@10.0.0.141:/oldboy/ /test/

--password-file=/etc/rsync.password

        推送实践命令:

        rsync -avzrtopgP /test/ rsync://rsync_backup@10.0.0.141:/oldboy/

--password-file=/etc/rsync.password

    特别说明:以上的用法是个不错的方法,它在拉取和推送时的写法极其类似,尤其是后面讲守护进程服务时,第一种方法通过双冒号加模块名的方法不利于记忆,第二种更适合记忆。 

   



未完待续。。。