当前位置: 首页 > 图文教程 > 服务器 > Windows服务器 > window系统的Rsync同步实战分析

Windows服务器
用Win 2003架设邮件服务器
为Win 2003加装视频压缩
让DNS服务器支持泛域名解析
感受Windows 2003域更名工具
Win2003中搭建视频服务器
配置Windows 2000系统中的磁盘配额
Windows 2000操作系统启动菜单详解
Windows 2000 工具包中的 REG.EXE 中文说明
坚守阵地—Win 2000内置安全命令的威力
Windows 2000局域网的组策略管理
windows 2000虚拟主机基本权限的设置
巧妙设置Windows 2000启动项
Windows 2000操作系统光盘探秘
阿江的Windows 2000服务器安全设置教程
体验Windows 2000运行如飞的感觉
Windows 2000操作系统二十条超级应用技巧
Windows服务器安全设置经验详谈
Windows 2000虚拟主机最安全设置
在Windows 2000系统中预防Ping攻击
Windows 2000操作系统共享上网完全攻略

Windows服务器 中的 window系统的Rsync同步实战分析


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-04   浏览: 178 ::
收藏到网摘: n/a

Rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync本来是用以取代rcp的一个工具,它当前由 rsync.samba.org维护。 其于window系统的同步实战
1. 远程数据同步工具Rsync介绍
1.1 软件简介
Rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync本来是用以取代rcp的一个工具,它当前由 rsync.samba.org维护。Rsync使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。运行Rsync server的机器也叫backup server,一个Rsync server可同时备份多个client的数据;也可以多个Rsync server备份一个client的数据。
  Rsync可以搭配rsh或ssh甚至使用daemon模式。Rsync server会打开一个873的服务通道(port),等待对方Rsync连接。连接时,Rsync server会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。
  Rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。此外,它在windows平台下也有相应的版本,比较知名的有cwRsync和Sync2NAS。
  Rsync的基本特点如下:
  1.可以镜像保存整个目录树和文件系统;
  2.可以很容易做到保持原来文件的权限、时间、软硬链接等;
  3.无须特殊权限即可安装;
  4.优化的流程,文件传输效率高;
  5.可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接;
6.支持匿名传输。

1.2 核心算法
  假定在名为α和β的两台计算机之间同步相似的文件A与B,其中α对文件A拥有访问权,β对文件B拥有访问权。并且假定主机α与β之间的网络带宽很小。那么rsync算法将通过下面的五个步骤来完成:
  1.β将文件B分割成一组不重叠的固定大小为S字节的数据块。最后一块可能会比S 小。
  2.β对每一个分割好的数据块执行两种校验:一种是32位的滚动弱校验,另一种是128位的MD4强校验。
  3.β将这些校验结果发给α。
  4.α通过搜索文件A的所有大小为S的数据块(偏移量可以任选,不一定非要是S的倍数),来寻找与文件B的某一块有着相同的弱校验码和强校验码的数据块。这项工作可以借助滚动校验的特性很快完成。
  5.α发给β一串指令来生成文件A在β上的备份。这里的每一条指令要么是对文件B经拥有某一个数据块而不须重传的证明,要么是一个数据块,这个数据块肯定是没有与文件B的任何一个数据块匹配上的。

1.3 命令语法
 rsync的命令格式可以为以下六种:
  rsync [OPTION]... SRC DEST
  rsync [OPTION]... SRC [USER@]HOST:DEST
  rsync [OPTION]... [USER@]HOST:SRC DEST
  rsync [OPTION]... [USER@]HOST::SRC DEST
  rsync [OPTION]... SRC [USER@]HOST::DEST
  rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
Rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync本来是用以取代rcp的一个工具,它当前由 rsync.samba.org维护。
  对应于以上六种命令格式,rsync有六种不同的工作模式:
  1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。
  2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。
  3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。
  4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。
  5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。
  6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。
主服务器
IP 192.168.0.100
F:/data/www
备份服务器
IP 192.168.0.101
F:/data/www
实战:
1、http://rsync.samba.org/ 下载cwRsync客户端(cwRsync)和服务器端(cwRsyncServer)。
2、服务器端安装:采用默认选项安装。
安装后,服务默认为手动启动模式,到“管理工具/服务管理”里,启动“RsyncServer”服务,并修改“RsyncServer”为自动启动模式。
1、http://rsync.samba.org/ 下载cwRsync客户端(cwRsync)和服务器端(cwRsyncServer)。
安装的过程很简单,也很顺利,从 cwRsync 网站上下载的 server and client ,都安装了一下,不过后来发现,其实是不需要安装 client 的,只要 server 就可以了,server 包括了 client 的功能。安装完 server 后,会在 service 中增加 Rsync 和 ssh 服务。
服务器端安装:采用默认选项安装。
安装后,服务默认为手动启动模式,到“管理工具/服务管理”里,启动“RsyncServer”服务,并修改“RsyncServer”为自动启动模式
2、配置主服务器
配置了一下 rsyncd.conf
use chroot = false
strict modes = false
hosts allow = *
log file = rsyncd.log
pid file = rsyncd.pid
# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
[test]
path = /cygdrive/c/work
read only = false
transfer logging = yes
只是将 [test] 中的 path 改成了我本机的备份目录
[www]
path = /cygdrive/F/data/www
read only = false
transfer logging = yes
3、备分服务器数据同步
因为只是最简单的数据同步,所以就不使用 ssh 了,直接启动 rsync 服务就可以了。然后按照 usage 上面教的。
rsync -av /cygdrive/F/data/www 192.168.0.100::www
完成了数据的同步工作,一切顺利。顺便说一下,/cygdrive/d 是安装完 cwRsync ,会自动将系统上所有的盘 mount 成 /cygdrive/x ,x 表示盘符,小写的,并把安装目录 mount 成 / 了。
这样我们实现了从主服务器到备分服务器的数据同步
下一步我们结合windows的任务调度来实现这个批处理文件,取名为XXX.cmd
rsync -avr --ignore-errors --force 192.168.0.100::www /cygdrive/F/data
test.bat
---------------------------------------------------------------------------------------------
@echo off set path=%path%;C:\Program Files\cwRsyncServer\bin; date /t >> F:\syn.txt time /t >> F:\syn.txt rsync -avr --ignore-errors --force --exclude="/tmp/" --delete 192.168.0.103::test /cygdrive/F/temp >> F:\syn.txt date /t >> F:\syn.txt time /t >> F:\syn.txt echo . echo . echo . remote synchronous over echo . echo .
rem pause
---------------------------------------------------------------------------------------------
linux中安全性说明
一:服务端rsyncd.conf文件配置
uid = nobody
gid = nobody
use chroot = no # 不使用chroot
max connections = 4 # 最大连接数为4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log # 日志记录文件
[inburst] # 这里是认证的模块名,在client端需要指定
path = /home/inburst/python/ # 需要做镜像的目录
comment = BACKUP CLIENT IS SOLARIS 8 E250
ignore errors # 可以忽略一些无关的IO错误
read only = yes # 只读
list = no # 不允许列文件
hosts allow=172.25.43.57 #允许连接IP
auth users = inburst # 认证的用户名,如果没有这行,则表明是匿名
secrets file = /etc/inburst.pas # 认证文件名
注:
为安全考虑,在设置服务端rsyncd.conf模块时,最好加上auth users = inburst,secrets file = /etc/inburst.pas,密码写到一个文件中inburst.pas。
执行命令时:rsync -avrp /test/ [[email protected]::test][email protected]::test[/email] --password-file=inburst.pas。
二:客户端脚本
rsync -avrp /test/ [[email protected]::test][email protected]::test[/email] --password-file=1234567
(表示将客户端test目录下文件备份到服务器test模块下。如果将/test/放后面,表示将服务器test模块下目录备份带客户端/test/下。)
选项说明:
-v, --verbose 详细模式输出
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-R, --relative 使用相对路径信息
其他参数可以查看rsync相关手册。