但是不能实现远程路径A
到远程路径B之间的同步
(scp命令可以实现!)源文件
和目标文件
,这里面就涉及到了本地及远程以那边的机器上的文件为同步基准的问题!本地的数据文件作为源文件
,推送
到目标主机上.远程目标主机上的数据文件作为源文件
,拉取
到本地主机上来!注意:这里的rsync实现的方式和cp命令并不一样!
源
和目标
两个文件之间版本控制的问题(1)检查模式:决定哪些文件需要同步
检查模式是指按照指定规则来检查哪些文件需要被同步,例如:哪些文件明确被排除不传输的,
**默认情况:**rsync使用"quick check"算法
快速去检查
源文件和目标文件的大小/修改时间是否一致
,不一致就需要传输数据
当然也可以通过rsync选项来改变rsync的quick check
算法的检查模式,举例:选项"–size-only"选项表示quick check算法将仅检查文件大小不同的文件作为待传输文件.
还有很多检查模式所需的选项可以自行了解.
(2)同步模式:文件同步
同步模式是指在文件确定要被同步后,在同步过程发生之前要做哪些额外的工作,例如:是否在传输的时候删除源主机上但是目标主机上有的文件 ,是否需要备份已存在的目标文件,rsync也提供很多同步模式所需要的选项.
首先我们查看一下man手册
,在Linux系统上man手册是我们学习道路上强大的知识来源
,这里面有最全的使用说明文档!一定要学会巧用man手册
在命令行中敲入一下命令:
root@Geek~_~[17:45:38]:~#man rsync
会看到有语法说明和选项说明:
NAME
rsync — a fast, versatile, remote (and local) file-copying tool
SYNOPSIS
Local: rsync [OPTION...] SRC... [DEST]
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
(1)rsync:为同步的命令
(2)[OPTION…]:为同步时的参数选项
(3)[USER@HOST…]:为rsync同步的远程连接用户和主机地址,USER表示数据传输到远程服务器上,传输数据用户的身份信息
(4)SRC:为源,即带拷贝的分区/文件或目录等,和HOST之间用一个冒号**":"
**连接
远程服务器的数据资源:(拉--本地从远端拉取数据)
本地服务器的数据资源:(推--本地向远端推取数据)
(5)[DEST]:为目标分区/文件或目录等
表示本地目录或文件信息:(拉--由本地从远端指定的某目录里拉取数据)
表示远程目录或文件信息:(推--由本地向远端指定的某目录里推取数据)
基本语法介绍:
LOCAL:rsync [OPTION(可选参数).... ] SRC(需要同步的东西,`源`...) [DEST(目的地)]
例子:
rsync /etc/hosts /tmp/
PS:提一个很简单但是很多人犯迷糊的点
在拷贝目录的时候目录后面带"/"
和不带"/"
的区别:
例子:
/tmp/:表示将"根下"tmp目录下的内容推送过去
/tmp;表示将"跟下"tmp这个目录
以及目录下的内容
都推送过去(就是把目录直接拷贝过去了)
又称为:远程隧道模式
基本语法介绍:
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
解释:(拉)Pull: rsync [OPTION...] [USER(我以什么身份登陆到你的主机)@]HOST:SRC... [DEST目的地]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
解释:(推)Push: rsync [OPTION...] SRC...[USER@]HOST:DEST
又称为:rsync daemon 方式(无差异备份
),会创建守护进程从后台等待着提供服务
基本语法介绍:
root@Geek~_~[19:50:52]:~#man rsync
Pull: (1)rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION..选项] [认证的用户信息USER@]HOST主机地址::SRC接模块信息..[DEST目的地]
(2)rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: (1)rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync[OPTION..选项] SRC本地的数据信息... [认证用户信息USER@]HOST主机地址::DEST目的地
(2)rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
语法演示:
#pull拉取
rsync -avz [email protected]::backup/geek.txt /tmp
#push推送
rsync -avz /etc [email protected]::backup
说明:
(1)通过man帮助可以看到,这里拉和推都有两种方式可选,一般我们比较常用第一种方式,不经常使用第二种URL方式
(2)上面的演示不明白不要紧,我们下面会挨个讲解参数的作用,及其推送拉取的过程
注意
设定部署好
服务端(server)
和客户端(client)
之后,**推送
和拉取
都在客户端
**上进行!`
通过远程shell也能临时启动
一个rsync daemon
,这个方式不同于第三种rsync daemon方式,它不需要远程主机上提前启动好rsync服务
,而是临时派生出rsync daemon,它是单用途的一次性rsync daemon
说明
由于仅临时读取rsync daemon的配置文件,当此次rsync同步完成后,远程shell启动的rsync daemon进程也自动消失,这里使用的语法格式和第三种工作方式相同
,但是要求[OPTION选项]部分不行明确指定"--rsh选项"
或者"-e选项"
参数说明: -e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
这章就讲到这里,在第三章中
(1)讲解rsync客户端访问服务端原理
(2)守护进程模式的搭建部署及使用