您的位置:首页 > 其它

Rsync原理和应用详解

2010-02-26 10:01 423 查看
Rsync使用的Rsync演算法来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 核心算法 假定在名为和的两台计算机之间同步相似的文件A与B,其中对文件A拥有访问权,对文件B拥有访问权

Rsync使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

算法核心部分:

  假定在名为α和β的两台计算机之间同步相似的文件A与B,其中α对文件A拥有访问权,β对文件B拥有访问权。并且假定主机α与β之间的网络带宽很小。那么rsync算法将通过下面的五个步骤来完成:

  1.β将文件B分割成一组不重叠的固定大小为S字节的数据块。最后一块可能会比S 小。

  2.β对每一个分割好的数据块执行两种校验:一种是32位的滚动弱校验,另一种是128位的MD4强校验。

  3.β将这些校验结果发给α。

  4.α通过搜索文件A的所有大小为S的数据块(偏移量可以任选,不一定非要是S的倍数),来寻找与文件B的某一块有着相同的弱校验码和强校验码的数据块。这项工作可以借助滚动校验的特性很快完成。

  5.α发给β一串指令来生成文件A在β上的备份。这里的每一条指令要么是对文件B经拥有某一个数据块而不须重传的证明,要么是一个数据块,这个数据块肯定是没有与文件B的任何一个数据块匹配上的。

Rsync的优点如下:

  1.可以镜像保存整个目录树和文件系统;

  2.可以很容易做到保持原来文件的权限、时间、软硬链接等;

  3.无须特殊权限即可安装;

  4.优化的流程,文件传输效率高;

  5.可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接;

  6.支持匿名传输。

基本语法



通过远程 shell 方式:

rsync [OPTION] [USER@]HOST:SRC DEST

使用远程 shell(如 ssh, rsh)实现将远程机器的内容拷贝到本地机器。 SRC 地址路径中以单个冒号 ":"
进行分隔。

rsync [OPTION] SRC [USER@]HOST:DEST

使用远程 shell(如 rsh、ssh)实现本地机器的内容拷贝到远程机器。 DEST 地址路径中以单个冒号 ":"
进行分隔。

通过 rsync daemon 方式:

rsync [OPTION] [USER@]HOST::SRC DEST 或

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

从远程 rsync 服务器中拷贝文件到本地机。 SRC 地址路径中以双冒号 "::" 进行分隔。

rsync [OPTION] SRC [USER@]HOST::DEST 或

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

从本地机器拷贝文件到远程 rsync 服务器中。 DEST 地址路径中以双冒号 "::" 进行分隔。

如果 rsync 命令中只指定 SRC 参数而不指定 DEST 参数,则意为显示源文件列表而非进行同步拷贝。 rsync
有许多功能选项,常用的选项如下:

rsync 常用参数

选项
描述
-a,
--archive
归档模式,保持所有文件属性,等同于 -rlptgoD
-v,
--verbose
详细信息输出
-r,
--recursive
对子目录进行递归处理
-R,
--relative
使用相对路径信息
-b,
--backup
创建备份
-z,
--compress
对备份的文件在传输时进行压缩处理
--delete用于同步目录,从 DEST 中将
SRC 不存在的文件进行删除
--progress显示备份过程
rsync模式

rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST

rsync [OPTION]... [USER@]HOST:SRC DEST

rsync [OPTION]... SRC [SRC]... DEST

rsync [OPTION]... [USER@]HOST::SRC [DEST]

rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST

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

rsync有六种不同的工作模式:

拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。

使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。

使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。

从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。

从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。

列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。

使用实例:



查看服务端文件及列表

# rsync 9.186.110.53::
查看服务端可用的模块列表以及注释信息

# rsync ibmuser@9.186.110.53::www/
查看服务端 www 模块中的目录及文件列表(使用 rsyncd 用户认证方式)

# rsync ibmuser@9.186.110.53:/var/www/html/
查看服务端 /var/www/html 目录中的内容(使用服务端的系统用户进行验证,如 ibmuser)

保持客户端与服务端的数据同步

# rsync -avz ibmuser@9.186.110.53::www/ /backup1/
使用后台服务方式将服务端 www 模块下的内容备份到本地 /backup1
目录中,备份时保留原有权限、属性、属主及符号连接等,并使用压缩方式加快数据传输。

# rsync – avz ibmuser@9.186.110.53:/var/www/html /backup2/
使用 ssh 方式将远程的 /var/www/html 目录备份到本地 /backup2/ 目录下

# rsync -avz --delete ibmuser@9.186.110.53::www/ /backup3/
将远程 www 模块备份到本地 /backup3/ 目录中,同时进行同步目录,删除本地目录中多余的文件。

当服务端的数据出现问题时,需要通过客户端的数据对服务端进行恢复,只要客户端有服务端的写入权限,即可通过调换 rsync 命令的
SRC、DEST 参数进行恢复。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: