本篇博客是51CTO老男孩-企业级数据同步软件rsync深度实战第一部分的学习笔记,在此篇博客记录下来是为方便后期查找翻阅,本文所有的知识点归老男孩讲师所有!
本篇博客严禁转载,谢谢大家配合。
概念:Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据镜像同步备份的优秀工具。Rsync适用于unix/linux/windows等多种操作系统平台。
全量及增量:两个服务器A和B,当服务器A有了新的数据要同步到服务器B上时,全量是将所有的信息全部复制并传输到服务器B上。
而增量是将服务器A新增的数据直接传输到服务器B上,相比全量,增量拥有更快的效率。
简介: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目录
实例2:把opt目录拷贝到/mnt下
通过远程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
特别说明:以上的用法是个不错的方法,它在拉取和推送时的写法极其类似,尤其是后面讲守护进程服务时,第一种方法通过双冒号加模块名的方法不利于记忆,第二种更适合记忆。
未完待续。。。
转载于:https://blog.51cto.com/xiaoyanhongru/1944780