Rsync, 如此命名,是一个远程数据同步工具,可以镜像整个目录树和文件系统,保留源文件的权限、时间和软硬链接,优化数据,删除文件的重复数据, 快速同步局域网和广域网之间多台主机的数据。这主要得益于Rsync的压缩及其核心算法,它是本地和远程主机之间的文件同步 并保持一致,只传输两个文件的不同部分而不是整个数据,所以速度非常快;
一台rsync服务器可以同时备份多台客户端的数据,也可以一台客户端备份多台Rsync服务器的数据;
Rsync支持scp、ssh和守护模式。默认端口是873。首次连接时,您将对数据进行完整备份。之后,所有备份都是增量备份,仅备份更改过的数据。
Rsync只支持单向备份,不支持双向。如果需要双向同步,可以使用Unison。如果需要实时同步,可以结合Rsync+inotify;;
Rsync服务以只读方式提供要备份的数据,以避免损坏生产环境中的数据;
这里有必要解释一下Rsync的核心算法:
假设您在两台名为α和β的计算机之间同步相似的文件A和B,其中α可以访问文件A,β可以访问文件B,并且假设主机α和β之间的网络带宽很小。那么Rsync算法将通过以下五个步骤来完成:
将β文件B分成一组不重叠的数据块,大小固定为s字节。最后一块可能小于S.
β对每个分段数据块进行两种校验:一种是32位滚动弱校验,一种是128位MD4强校验。
β将这些验证结果发送给α。
α搜索文件A中所有大小为S的数据块(偏移量可以是可选的,但不一定是S的倍数)寻找与文件b中某个块具有相同弱校验码和强校验码的数据块,借助滚动校验可以快速完成这项工作。
α向β发送一系列指令,在β上生成文件A的备份。这里的每条指令要么是证明文件B有某个数据块,不需要重传,要么是数据块,肯定不匹配文件B的任何数据块。
Rsync适用于linux、solaris和bsd。在windows平台下,有cwRsync。
本文将以Linux的Rsync和window的cwRsync为例。
2、Rsync服务端 2.1、安装源代码安装
下载rsync服务器程序,
塔尔zxvfrsync-2.6.9.tar.gz
cdrsync-2.6.9
。/configure-prefix=/usr/local/rsync
制造
进行安装
rpm安装
yum安装rsync
本文随yum一起安装。
2.2、服务器运行模式模式选择
对于重负载,选择独立服务来启动。
负载轻的,选择从xinet.d开始,选择这个模式,记得安装xinet.d(yuminstallxinet.d)。
独立运行模式
/usr/bin/rsync-daemon-config=/etc/rsyncd.conf(本例中选择了此方法)
如果需要启动系统,可以将上述命令添加到/etc/rc.local文件中。
2.3、服务器配置创建配置文件和密码文件
触摸/etc/rsyncd.conf主配置文件
触摸/etc/rsync.pas密码文件。这个文件需要注意客户端和服务器的格式,后面会解释。
配置文件rsyncd.conf的说明
Rsync的配置文件分为两部分,全局配置和模块配置。
#全局设置
Uid=root指定模块以root用户身份传输文件。如果用户是匿名的,请在这里填写nobody。
Gid=root指定模块以root用户组的身份传输文件。如果是匿名的,请在这里填写“没有人”。
Usechroot=YES设置为YES,表示文件在传输之前,位于根目录,即PATH指定的目录。这样做主要是出于安全原因。
PIDfile=/var/run/rsyncd.PIDrsync守护进程将其PID写入文件。
锁文件=/var/run/rsync.lock指定支持最大连接数的锁文件。
logfile=/var/log/Rsyncd.log指定由rsync守护进程生成而不是传输到syslog的日志文件。
#模块设置
【金蝶】模块名,直接用于指定上传和下载文件时的配置。
Path=/sda1/JDdatabase指定了该模块的根目录,即所有文件上传和下载都在该目录下进行。
忽略错误指定在rsync服务器上运行删除 *** 作时是否忽略I/O错误。
Read=false指定是否允许上传,false表示允许上传。
Writeonly=false指定是否允许下载,false表示允许下载。
List=true指定当客户请求列出可用模块时,是否列出这些模块。如果为false,则可以创建一个隐藏模块。
HostAllow=192.168.1.65指定哪些客户端可以访问和连接到该模块。您可以指定单个IP、整个网段,例如本例中的单个IP。
Hostdeny=0.0.0.0/0指定不允许哪些客户端连接到此模块。这个例子是代表整个网络的0.0.0.0/0网段。
通常,客户端表示如下:
单个IP:192.168.1.65
Ip段:192.168.1.0/24
解析的主机地址:www.baidu.com
域名主机:*.wine9.com
所有主机:*
多个列表项,用空分隔;
Users=xy指定身份验证用户名,通常用空或逗号分隔。只有这些用户可以连接到此模块。用户名和密码以明文形式存储在密码文件中。
Syslogfacility=local5指定日志级别,一般指发送到rsyslog的日志级别;
Secretsfile=/etc/Rsync.pas指定Rsync身份验证密码文件。只有配置了authusers,此配置才会生效。这里要注意客户端和服务器的配置格式。
Ignorenonreadable指定rysnc服务器完全忽略那些用户无权访问的文件,当目录中有一些要备份的文件不应该由备份获取时,这非常有意义。
超时600设置客户端连接超时,以确保服务器不会永远等待崩溃的客户端。
Doncompress=*。gz指定了哪些文件在传输前不需要压缩。
Maxconnections=4指定此模块中的最大并发连接数为4。如果超过这个数字,告诉它,然后再试一次。
Exclude指定由空分隔的多个文件或目录(相对路径),并将它们添加到排除列表中。这相当于在客户端命令中使用–-exclude来指定模式。
排除自指定包含排除规则定义的文件名,服务器从中读取排除列表的定义。
Include指定由空分隔的多个文件或目录(相对路径),并将它们添加到包含列表中。这相当于在客户端命令中使用–-include来指定模式。
Includefrom指定包含包含规则定义的文件名,服务器从该文件名中读取包含列表的定义。
2.4、建立Rsync口令文件创建密码文件
Touch/etc/Rsync.pas#密码文件,保存Rsync用户和密码验证信息,不需要是系统账号;
vi/etc/rsync.pas
Xy:abc123#的格式是用户名:密码,这个账号不需要是系统账号。
注意和后期客户端密码文件的格式比较。对比两者的区别,有很多童鞋很容易弄错。重要的事情说三遍。注意格式,注意格式,注意格式。
2.5、口令文件权限密码文件,需要设置密码文件权限,这一步也很重要,而且Rsync对权限的要求很敏感。
#chownroot:root/etc/rsync.pas#root:root是指当前启动该服务并被设置为所有者的用户。
#chmod600/etc/Rsync.pas#指定启动这个Rsync服务的用户的权限是只读的,也就是前面提到的所有者权限。
3、Rsync客户端本例中客户端选择windows的cwrsync工具,安装就不用说了。
3.1、创建口令文件创建一个新的rsync.pas文件,并按如下方式添加它:
因为我使用的用户名是xy,所以这个设置的密码必须与服务器端rsync.pas密码文件中设置的密码相同。例如,本例中的密码是abc123
然后,在本例中,它被设置为:
abc123
3.2、口令文件权限必须正确设置windows 密码文件的权限,否则验证将失败。密码文件c:\Rsync.pas的权限要添加到系统登录的账号读取权限中,并设置为文件的所有者 (这个和服务器端有点不同。正常情况下,服务器端的这个用户名应该是启动rsync服务的用户名,不管是windows还是liunx,但对于[/]
转到cwRsync客户端安装目录,c:\programfiles(x86)\cwRsync\bin。
chmod600/cygdrive/c/rsync.pas
chownadministrator/cygdrive/c/rsync.pas#如果没有Chown文件,可以直接从服务器端的安装目录的bin目录下复制过来使用。
注意:Rsync对路径的书写格式与windows不同,它遵循后缀书写格式,
3.3、同步文件Rsync六种同步格式
Rsync完成服务器和客户端的配置后,下一步就是通过Rsync命令完成文件同步 *** 作,就像服务器发起命令请求一样。Rsync的功能非常强大,它提供了六种格式来支持Rsync的六种工作模式。
rsync[选项]...SRCDEST
rsync[选项]...SRC[USER@]主机:DEST
rsync[OPTION]...[USER@]主机:SRCDEST
rsync[选项]...[USER@]HOST::SRCDEST
rsync[OPTION]...SRC[USER@]HOST::DEST
rsync[选项]...rsync://[USER@]HOST[:PORT]/SRC[DEST]
对于上述六种命令格式,
1)rsync[选项]...SRC
复制本地文件,当SRC和DEST的路径信息不包含单个冒号“:”时,启动此工作模式。
rsync.exe—vzrtopg/数据/备份
2)rsync[选项]...SRC[USER@]主持人:DEST
使用远程shell程序(如rsh、ssh)将本地机器的内容复制到远程机器。当DST路径地址包含单个冒号“:”分隔符时,此模式启动。例如rsync-avz*。cfoo:src
3)rsync[选项]...[user@]host:srcdest
使用远程shell程序(如rsh、ssh)将远程机器的内容复制到本地机器。当SRC地址路径包含单个冒号“:”分隔符时,此模式启动。例如rsync-avzfoo:src/bar/data
4)rsync[选项]...[user@]host::srcdest
将文件从远程rsync服务器复制到本地机器。当SRC路径信息包含“::”分隔符时,启动此模式。例如rsync-avroot@172.16.78.192::www/databank,其中www是rsync配置文件中指定的模块名称。
5)rsync[选项]...src[user@]host::dest
将文件从本地机器复制到远程rsync服务器。当DST路径信息包含“::”分隔符时,启动此模式。例如:rsync-av/databackroot@172.16.78.192::www,其中www是rsync配置文件中指定的模块名称。
6)rsync[选项]...rsync://[user@]host[:port]/src[dest]
远程机器的列文件列表。这类似于rsync传输,只是命令中省略了本地机器信息。例如rsync-vrsync://172.16.78.192/www
上传同步文件
rsync.exe-vzrtopg-progress-delete/cygdrive/c/test/*。txtxy@192.168.31.13::Jindie-password-file=/cygdrive/c/rsync.pas
解释:
rsync同步指挥。
Vzrtopg指定传输的参数和细节;
-delete删除DST中存在但SRC中不存在的文件或目录。
/cygdrive/c/test/*。txt注意这里的格式。不能用windows的格式,必须用POSTFIX标准格式;
Xy@192.168.31.13::金蝶Xy是对服务器有访问权限的用户名,192.168.31.13是服务器地址,金蝶是服务器端配置文件中指定的模块,其中指定了用户信息和同步路径;服务器地址和模块由两个冒号分隔。
-password-file=/cygdrive/c/rsync.pas密码文件,其中包含xy帐户的密码,该密码与服务器端配置文件rsyncd.conf中指定的密码文件中设置的密码相同
下载同步文件
rsync.exe-vzrtopg-progress-deletexy@192.168.31.13::Jindie/cygdrive/c/test-password-file=/cygdrive/c/rsync.pas
通常因为上传和下载的方向不同,直接改变源文件的路径和目的地址的路径就可以了。
4、定时同步备份将上述命令写入批处理机文件,如test.bat,通过任务计划实现定时备份。
c:\ProgramFiles(x86)\cwRsync\bin
rsync.exe-vzrtopg-progress-delete/cygdrive/c/test/*。txtxy@192.168.31.13::Jindie-password-file=/cygdrive/c/rsync.pas
复制上面的命令并保存在test.bat文件中,
开始-所有程序-附件-系统工具-任务计划程序
展开任务计划程序库-Microsoft,然后右键单击创建基本任务。
创建基本任务向导,输入“名称”
点击“下一步”
任务触发,根据实际需要,设置每日、每周、每月同步。这里我选择每日备份,可以减少带宽压力。
设置每天的开始时间。在这里,将每天的开始时间设置为凌晨1:00,然后单击“下一步”
选择“开始程序”
浏览并选择脚本文件。
点击“完成”
至此,部署已经完成。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)