gpt4 book ai didi

window系统的Rsync同步实战分析

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章window系统的Rsync同步实战分析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

其于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有六种不同的工作模式:

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=inburst@172.25.43.158::test]inburst@172.25.43.158::test[/email] --password-file=inburst.pas.

二:客户端脚本 。

rsync -avrp /test/ [email=administrator@172.25.43.58::test]administrator@172.25.43.58::test[/email] --password-file=1234567 。

(表示将客户端test目录下文件备份到服务器test模块下。如果将/test/放后面,表示将服务器test模块下目录备份带客户端/test/下。) 。

选项说明

-v, --verbose 详细模式输出 。

-q, --quiet 精简输出模式 。

-c, --checksum 打开校验开关,强制对文件传输进行校验 。

-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD 。

-r, --recursive 对子目录以递归模式处理 。

-R, --relative 使用相对路径信息 。

其他参数可以查看rsync相关手册.

最后此篇关于window系统的Rsync同步实战分析的文章就讲到这里了,如果你想了解更多关于window系统的Rsync同步实战分析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com