window系统的Rsync同步实战分析
2023-06-13 09:14:02 时间
其于window系统的同步实战
1.远程数据同步工具Rsync介绍
1.1软件简介
Rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync本来是用以取代rcp的一个工具,它当前由rsync.samba.org维护。Rsync使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。运行Rsyncserver的机器也叫backupserver,一个Rsyncserver可同时备份多个client的数据;也可以多个Rsyncserver备份一个client的数据。
Rsync可以搭配rsh或ssh甚至使用daemon模式。Rsyncserver会打开一个873的服务通道(port),等待对方Rsync连接。连接时,Rsyncserver会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。
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]...SRCDEST
rsync[OPTION]...SRC[USER@]HOST:DEST
rsync[OPTION]...[USER@]HOST:SRCDEST
rsync[OPTION]...[USER@]HOST::SRCDEST
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传输,不过只要在命令中省略掉本地机信息即可。
主服务器
IP192.168.0.100
F:/data/www
备份服务器
IP192.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网站上下载的serverandclient,都安装了一下,不过后来发现,其实是不需要安装client的,只要server就可以了,server包括了client的功能。安装完server后,会在service中增加Rsync和ssh服务。
服务器端安装:采用默认选项安装。
安装后,服务默认为手动启动模式,到“管理工具/服务管理”里,启动“RsyncServer”服务,并修改“RsyncServer”为自动启动模式
2、配置主服务器
配置了一下rsyncd.conf
usechroot=false
strictmodes=false
hostsallow=*
logfile=rsyncd.log
pidfile=rsyncd.pid
#Moduledefinitions
#Remembercygwinnamingconventions:c:\workbecomes/cygwin/c/work
#
[test]
path=/cygdrive/c/work
readonly=false
transferlogging=yes
只是将[test]中的path改成了我本机的备份目录
[www]
path=/cygdrive/F/data/www
readonly=false
transferlogging=yes
3、备分服务器数据同步
因为只是最简单的数据同步,所以就不使用ssh了,直接启动rsync服务就可以了。然后按照usage上面教的。
rsync-av/cygdrive/F/data/www192.168.0.100::www
完成了数据的同步工作,一切顺利。顺便说一下,/cygdrive/d是安装完cwRsync,会自动将系统上所有的盘mount成/cygdrive/x,x表示盘符,小写的,并把安装目录mount成/了。
这样我们实现了从主服务器到备分服务器的数据同步
下一步我们结合windows的任务调度来实现这个批处理文件,取名为XXX.cmd
rsync-avr--ignore-errors--force192.168.0.100::www/cygdrive/F/data
test.bat
---------------------------------------------------------------------------------------------
@echooffsetpath=%path%;C:\ProgramFiles\cwRsyncServer\bin;date/t>>F:\syn.txttime/t>>F:\syn.txtrsync-avr--ignore-errors--force--exclude="/tmp/"--delete192.168.0.103::test/cygdrive/F/temp>>F:\syn.txtdate/t>>F:\syn.txttime/t>>F:\syn.txtecho.echo.echo.remotesynchronousoverecho.echo.
rempause
---------------------------------------------------------------------------------------------
linux中安全性说明
一:服务端rsyncd.conf文件配置
uid=nobody
gid=nobody
usechroot=no#不使用chroot
maxconnections=4#最大连接数为4
pidfile=/var/run/rsyncd.pid
lockfile=/var/run/rsync.lock
logfile=/var/log/rsyncd.log#日志记录文件
[inburst]#这里是认证的模块名,在client端需要指定
path=/home/inburst/python/#需要做镜像的目录
comment=BACKUPCLIENTISSOLARIS8E250
ignoreerrors#可以忽略一些无关的IO错误
readonly=yes#只读
list=no#不允许列文件
hostsallow=172.25.43.57#允许连接IP
authusers=inburst#认证的用户名,如果没有这行,则表明是匿名
secretsfile=/etc/inburst.pas#认证文件名
注:
为安全考虑,在设置服务端rsyncd.conf模块时,最好加上authusers=inburst,secretsfile=/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相关手册。
1.远程数据同步工具Rsync介绍
1.1软件简介
Rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync本来是用以取代rcp的一个工具,它当前由rsync.samba.org维护。Rsync使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。运行Rsyncserver的机器也叫backupserver,一个Rsyncserver可同时备份多个client的数据;也可以多个Rsyncserver备份一个client的数据。
Rsync可以搭配rsh或ssh甚至使用daemon模式。Rsyncserver会打开一个873的服务通道(port),等待对方Rsync连接。连接时,Rsyncserver会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。
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]...SRCDEST
rsync[OPTION]...SRC[USER@]HOST:DEST
rsync[OPTION]...[USER@]HOST:SRCDEST
rsync[OPTION]...[USER@]HOST::SRCDEST
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传输,不过只要在命令中省略掉本地机信息即可。
主服务器
IP192.168.0.100
F:/data/www
备份服务器
IP192.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网站上下载的serverandclient,都安装了一下,不过后来发现,其实是不需要安装client的,只要server就可以了,server包括了client的功能。安装完server后,会在service中增加Rsync和ssh服务。
服务器端安装:采用默认选项安装。
安装后,服务默认为手动启动模式,到“管理工具/服务管理”里,启动“RsyncServer”服务,并修改“RsyncServer”为自动启动模式
2、配置主服务器
配置了一下rsyncd.conf
usechroot=false
strictmodes=false
hostsallow=*
logfile=rsyncd.log
pidfile=rsyncd.pid
#Moduledefinitions
#Remembercygwinnamingconventions:c:\workbecomes/cygwin/c/work
#
[test]
path=/cygdrive/c/work
readonly=false
transferlogging=yes
只是将[test]中的path改成了我本机的备份目录
[www]
path=/cygdrive/F/data/www
readonly=false
transferlogging=yes
3、备分服务器数据同步
因为只是最简单的数据同步,所以就不使用ssh了,直接启动rsync服务就可以了。然后按照usage上面教的。
rsync-av/cygdrive/F/data/www192.168.0.100::www
完成了数据的同步工作,一切顺利。顺便说一下,/cygdrive/d是安装完cwRsync,会自动将系统上所有的盘mount成/cygdrive/x,x表示盘符,小写的,并把安装目录mount成/了。
这样我们实现了从主服务器到备分服务器的数据同步
下一步我们结合windows的任务调度来实现这个批处理文件,取名为XXX.cmd
rsync-avr--ignore-errors--force192.168.0.100::www/cygdrive/F/data
test.bat
---------------------------------------------------------------------------------------------
@echooffsetpath=%path%;C:\ProgramFiles\cwRsyncServer\bin;date/t>>F:\syn.txttime/t>>F:\syn.txtrsync-avr--ignore-errors--force--exclude="/tmp/"--delete192.168.0.103::test/cygdrive/F/temp>>F:\syn.txtdate/t>>F:\syn.txttime/t>>F:\syn.txtecho.echo.echo.remotesynchronousoverecho.echo.
rempause
---------------------------------------------------------------------------------------------
linux中安全性说明
一:服务端rsyncd.conf文件配置
uid=nobody
gid=nobody
usechroot=no#不使用chroot
maxconnections=4#最大连接数为4
pidfile=/var/run/rsyncd.pid
lockfile=/var/run/rsync.lock
logfile=/var/log/rsyncd.log#日志记录文件
[inburst]#这里是认证的模块名,在client端需要指定
path=/home/inburst/python/#需要做镜像的目录
comment=BACKUPCLIENTISSOLARIS8E250
ignoreerrors#可以忽略一些无关的IO错误
readonly=yes#只读
list=no#不允许列文件
hostsallow=172.25.43.57#允许连接IP
authusers=inburst#认证的用户名,如果没有这行,则表明是匿名
secretsfile=/etc/inburst.pas#认证文件名
注:
为安全考虑,在设置服务端rsyncd.conf模块时,最好加上authusers=inburst,secretsfile=/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相关手册。
相关文章
- js运行机制同步与异步(宏任务与微任务)
- 京准助力安防监控系统NTP网络时钟同步建设
- 线程同步和锁_自旋锁的实现
- 示波器中的trigger是什么意思_示波器中扫描和同步的作用是什么
- 跨系统实时同步数据解决方案
- 电子时钟同步系统在西安市精神卫生中心的应用
- NTP时间同步服务器(网络时钟系统)架构设计与组成
- 【Kotlin 协程】Flow 异步流 ① ( 以异步返回返回多个返回值 | 同步调用返回多个值的弊端 | 尝试在 sequence 中调用挂起函数返回多个返回值 | 协程中调用挂起函数返回集合 )
- 飞鱼CRM是什么?巨量引擎线索如何自动同步至CRM系统
- 使用OGG微服务将PG同步到kafka(全量+增量)
- python代码定时同步本机的北京时间详解编程语言
- 实现127.0.0.1的精准同步——Linux系统时间(同步linux系统时间)
- 服务Linux系统中实现NTP同步服务指南(linux系统Ntp)
- Linux系统下信号量与线程同步(linux信号量线程)
- MySQL双机同步技术实现数据安全(mysql双机同步)
- Linux系统中实现高精度时间同步(linux保存时间)
- 让Linux系统时间同步:学习如何设置(linux设置时间同步)
- 让Linux系统实现时间同步(linux设定时间同步)
- Linux系统中使用自旋锁实现高效多线程同步(自旋锁linux)
- MySQL主从同步:实现数据备份和读写分离的方式(mysql主从方式)
- 使用Linux下的btsync轻松实现数据同步(linuxbtsync)
- Linux下线程同步的信号量实现(linux线程信号量)
- Linux获取当前时间,轻松实现系统时钟同步(linux获得当前时间)
- Linux系统中如何安装和配置NTP时间同步服务(linuxntp安装)
- Linux读写同步:保障数据一致性(linux读写同步)
- Linux线程同步:多种方案策略(linux线程同步的方法)
- MySQL多库同步:实现数据一致性(mysql多数据库同步)
- 视图同步:MS SQL 数据库实现智能管理(mssql视图同步)
- Redis实现数据库同步的奇妙方式(redis同步数据库)
- 利用Redis实现跨集群数据同步(redis跨集群数据同步)