cwRsync实现服务器文件同步

 最近经理要我测试 cwRsync这个软件,目的是实现公司 多台服务器之间网站文件的同步与备份。我折腾了一天,终于大概了解了这个软件的一些规则并在本地顺利架设好。通过测试,觉得可以把这个软件应用到服务器的文件备份上了,至于数据库备份方案,估计还是要利用数据库本身特有的全量备份和增量备份功能了。
 

  弄懂cwRsync的功能并把软件架设好全靠云端阶梯的一篇文章,虽然在网上已经查看了很多资料,不过令到我有更深启发的却是云端阶梯里面的一篇文章。博主写得很详细,条理清晰,让人很容易看明白。这里要感谢他!下面是他这篇文章的转载:

  如果你有多台计算机,并且你希望它们的某些目录保持一致(例如,你经常更改文件的目录),那么如果用手工复制、粘贴的方法,就太没有效率了,文件夹多的话,能把你累个半死。所以,使用一些同步软件是极其重要的。

  在这里,向你推荐rsync。套用网上的解释:rsync是在Linux和UNIX上广泛使用的文件传输和同步程序。此软件相当强大,经过一些配置之后,可以让你从此以后的同步备份工作变得极其简单、轻松。该软件有Windows下的版本,叫做cwRsync。官方对它的诠释是:cwrsync – Rsync for Windows。

  下载页面: http://www.itefix.no/i2/download

  你需要在一台计算机上安装cwrsync的服务器端软件cwRsyncServer,在另一台计算机上安装cwrsync的客户端软件。不过,由于服务器端软件已经包含了客户端软件的功能,所以,在我的实际使用中,我在多台计算机上均安装了服务器端软件(软件才几M大,无所谓),我觉得这样更方便,因为我的任何一台计算机都可以做为rsync服务器来用。

  安装cwRsyncServer的过程中,会要求你设置一个用户名和密码,建议一定要更改,而不是使用默认的。你提供的这个用户名和密码将会在系统用户中创建一个帐户(在Windows登录界面可以看得到它的存在)。

  由于rsync服务器在Windows下是以服务的形式来启动的,所以你在使用它之前,应该确认你的rsync服务是否已经启动了。 cwRsyncServer软件对应的系统服务名字是RsyncServer,默认是不会自动启动的。

  下面说一下如何设置rsync服务器以及客户端,使得它们可以同步某一目录下的文件。

  由于rsync是来自Linux/Unix,所以就算是Windows下的cwRsync,也颇有Linux rsync的风格,这种风格体现在,你还是需要去修改配置文件(一个文本文件)来对rsync服务器进行设置,而没有一个图形界面来让你用鼠标点几下就解决问题。

  我们用记事本打开cwRsyncServer安装目录下的rsyncd.conf文件(这个文件就是rsync服务器的配置文件了),它定义了rsync服务器的参数,服务启动时会读取该文件内容,并用以初始化rsync服务。如果修改了参数,则需要重新启动服务才能生效。

  rsyncd.conf文件已经有一部分默认内容,你可以参照下面的格式(不包括横线),添加你所需要的参数:

  port = 873 # rsync服务的端口(873就是默认端口,你可以更改)

  use chroot = false # 默认,不更改

  strict modes = false # 默认,不更改

  read only = yes # 服务端文件只读(不允许客户端修改或删除)

  list = no # 不允许客户端对服务器端的文件列表

   hosts allow = * # 允许连接服务器的客户端的IP地址列表(*表示不限制)

  max connections = 10 # 最大连接数

  uid=0 # 对某些场合,这个很重要,下面再解释

  gid=0 # 对某些场合,这个很重要,下面再解释

  auth users = ruser # 允许连接服务器的用户名

  secrets file = rsyncd.secrets # 允许连接服务器的帐户文件,其格式在下面会详述

  motd file = rsyncd.motd # 欢迎信息文件(客户端连接时,服务将向客户端发送欢迎信息,其内容即为此文件的内容)

  log file = rsyncd.log # 日志文件

  lock file = rsyncd.lock # 锁文件

  transfer logging = yes # 传输时记录日志

  # Module definitions

  # Remember cygwin naming conventions : c:/work becomes /cygwin/c/work

  #

   [test] # 一个模块的名字,可随意起,但最好有意义

  path = /cygdrive/D/test # 同步的目录的路径,其中,D盘就是”/cygdrive/D”,所以该路径指的是D盘下的test目录

  [another]

  path = /cygdrive/E/Documents and Settings/another

  需要注意的几点:

  (1)你设置的rsync服务器端口必须在防火墙里打开,否则客户端还是连接不上。

  (2)rsyncd.conf文件中的模块上方是公用的参数,也就是所有模块都会共享的参数,如果在该模块内部又为该参数设置了不同的值,则会按模块内部的值来算。

  (3)rsyncd.secrets文件的内容格式如下:

  用户名:密码

  例如:

  ruser:rupass

  (4)一般来说,你要同步一个目录的话,就要在rsyncd.conf中添加一个”模块”,并为该模块设置路径等参数。

  (5)如果客户端连接rsync服务器时,提示chdir失败,并且你的登录用户名和密码之类的都设置对了,那么很可能你就需要添加上面的”uid=0″和”gid=0″了,我就用这个解决了问题。

  (6)在模块的路径(path)中,经测试可以包含空格。

  好了,服务器端的设置基本完成,然后启动rsync 服务,就可以了。

  下面我们来进行客户端的工作,以完成同步任务。

  前面说了,我在客户端也装了cwRsyncServer,因为它包含了客户端的功能。

  在客户端,我们需要在命令行下执行一个带许多参数的命令,以完成同步功能,正因为如此,我不可能在每次需要同步的时候,先cmd打开命令行,然后再打长长的rsync命令来完成同步,否则也太痛苦了。所以我们可以写一个批处理文件(*.bat),来完成这个任务。批处理文件的内容其实挺简单:

  cd d:/ICW/Bin

  d:

  rsync.exe -ravz –progress –password-file=/cygdrive/f/rsync/pass_file [email protected]::test/ /cygdrive/”D/Program Files/test”

  rsync.exe -ravz –progress –password-file=/cygdrive/f/rsync/pass_file [email protected]::another/ /cygdrive/”E/another”

      pause

  说明:

  (1)第一行表明切换到rsync程序所在目录,请视实际情况更改。

  (2)第二行表明切换到D盘(rsync程序所在的盘)。

  (3)192.168.1.100是rsync服务器IP,请视实际情况更改。

  (4)–password-file 参数指定了客户端登录服务器时,使用的帐户的密码文件,例如上面的”/cygdrive/f/rsync/pass_file” 表明是 F:/rsync/pass_file 文件,该文件内容就是登录rsync服务器的帐户的密码。

  (5)红色的文字指定的是 rsync服务器配置文件中设置的模块名,必须一致。

  (6)有多个目录要同步,就写多个rsync命令,双击此批处理文件时,会依次执行。

  (7)上面例子中的第一个rsync命令的含义是:将远程的rsync服务器中,test模块所指定的目录,同步到本地的 D/Program Files/test 目录。在客户端,如果路径中含有空格,则需要将路径用双引号括起来(如上面的例子所示)。

  这样配置好之后,双击批处理文件,你的两个目录就开始同步啦。以后,你就再也不用费劲地去手工同步文件了,rsync会自动判断哪些文件修改了,哪些没有修改,只传输修改过的文件(并且还会增量传输),节省你的带宽,极其高效。

  rsync功能非一般强大,关于rsync的更多配置选项,此处绝对不可能描述得完,请参考其手册。

 

你可能感兴趣的:(负载均衡)