Horse 发表于 1970-1-1 08:00:00

在多台Windows主机间使用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
                #            # 一个模块的名字,可随意起,但最好有意义
                path = /cygdrive/D/test   # 同步的目录的路径,其中,D盘就是“/cygdrive/D”,所以该路径指的是D盘下的test目录path = /cygdrive/E/Documents and Settings/another_________________________________________________________________________________________________文章来源:http://www.codelast.com/需要注意的几点:(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 ruser@192.168.1.100::test/ /cygdrive/"D/Program Files/test"
rsync.exe -ravz –progress –password-file=/cygdrive/f/rsync/pass_file ruser@192.168.1.100::another/ /cygdrive/"E/another"pause_________________________________________________________________________________________________文章来源:http://www.codelast.com/说明:(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的更多配置选项,此处绝对不可能描述得完,请参考其手册。

Horse 发表于 1970-1-1 08:00:00

 首先要下载cwRsync的服务端和客户端软件,下载地址如下:  服务端:cwRsync_Server_2.0.10_Installer
  客户端:cwRsync_2.0.10_Installer
  然后我在本地机器上安装了其中的服务器端(10.0.2.136),然后在同网段下的另一台机器(10.0.2.137)安装了客户端。为了测试,我专门在本地机器上的f盘上放置了我们的产品dnt的站点文件,同时准备将该站点文件夹下的ASPx和config文件夹作为要进行同步文件的文件夹。然后在其服务端的rsyncd.config文件下,输入如下内容: 
use chroot = false
strict modes = false
hosts allow = *
log file = rsyncd.log
pid file = rsyncd.pid
port = 52326 
max connections = 4 
# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#

path = /cygdrive/f/dnt_snap/aspx
read only = false
transfer logging = yes
lock file = rsyncd.lock 
 
path = /cygdrive/f/dnt_snap/config
read only = false
transfer logging = yes
lock file = rsyncd.lock
  注:在上面的内容中,将监听端口设置为52326。
  这样,我们在控件面板-->管理工具-->服务,找到该服务并启动它,如下图:
  http://pic.firnow.com/pic/201008/02/8196c866-c73d-4d34-ba9f-23f32847101d.gif

  这时我们就可以在客户端(10.0.2.137)的f盘上创建一个叫sync的文件夹,同时在下面创建两个分别叫"config”和“ASPx”的文件夹来对应同步服务端的文件夹。
  然后接着用下面的内容创建一个名为 dnt_rsync.bat的批处理文件:
rsync -av rsync://10.0.2.136:52326/t_config /cygdrive/f/sync/config 
rsync -av rsync://10.0.2.136:52326/t_aspx /cygdrive/f/sync/aspx
  并将其放到cwRsync客户端安装目录下的bin目录中(我的安装目录如下:C:\Program Files\cwRsync\bin),然后双击启动它。
  这样,就开始同步文件了:
  http://pic.firnow.com/pic/201008/02/4d8777bd-2651-49cf-ac97-ba272ed0e446.gif
  之后,我们可以到客户端f盘的相应目前中查看同步过来的文件,呵呵。
  当然cwRsync是采用增量和修改同步方式,如果你将服务器端的相应文件做了修改,则同步时只会同步修改过的文件或新增的文件。    
  下面介绍一下如何通过Windows中的“任务计划”来创建定时任务,执行定时同步。
  首先在客户端的机器上的: 控件面板->任务计划->点击“添加任务计划”, 在相应的弹出窗口中点击下一步,然后点击导航窗口中的“浏览”按钮,如下,并从中选择之前创建的批处理文件”dnt_sync.bat”:

  http://pic.firnow.com/pic/201008/02/b7485398-58d9-4a7c-be71-73d9d0bf044b.gif

  这时系统会显示如下窗口提示当前计划任务执行方式,我这里选择每天执行(一次):
  http://pic.firnow.com/pic/201008/02/2df5b9ea-a5b8-443a-818b-b58d3f9eaf86.gif
  到这里,系统就会创建一个叫dnt_sync的任务计划,同时在接下来的窗口中提示任务的开始执行时间:
  http://pic.firnow.com/pic/201008/02/94d5c37c-16b0-4b5d-bca1-16e0e2f74580.gif
  这里不做任何修改,直接点击下一步,接着是身份验证(通常是管理员身份),必定任务计划非同儿戏,要有足够的权限才可以玩的转:)
  http://pic.firnow.com/pic/201008/02/99483195-5d80-4d88-9daa-2dfc4b0663a2.gif
  最后点击完成,就创建了一个任务计划。只不过它是按天执行的,如果我们希望其每分钟执行一次又该怎么办呢,其实很简单,只要在用鼠标点击新创建的任务计划,并在弹出菜单中选择“属性”,这时在弹出窗口的“日程安排”中点击“高级按钮”,如下:
  http://pic.firnow.com/pic/201008/02/2f341d4b-e613-404b-92b9-42d45c2d1e8c.gif
  这时就会弹出一个叫“高级计划选项”的子窗口,在其它做如下设置:
  http://pic.firnow.com/pic/201008/02/c52da3a4-f073-4efa-b376-b92b53325855.gif
  到这里,这个计划任务就会每天24小时,以每分钟运行一次的方式来同步之前的那两个文件夹了。
  最近使用软件的时间超过了开发软件的时间,导致开发的代码量不像之前那么多了,呵呵。不过这类软件还是很有应用场景的,估计将来会用的上,故写作本文与大家分享的同时以“备份”处之。
  原文链接: http://www.cnblogs.com/daizhj/archive/2009/11/03/1595395.html

fuwen 发表于 1970-1-1 08:00:00

这么高深!一般都不会用到的吧

Horse 发表于 1970-1-1 08:00:00

终于搞掂了。。。
nndx,根本不需要搞那么复杂。
服务器端rsyncd.conf文件的设置:
use chroot = false
strict modes = false
hosts allow = *                #允许IP
log file = rsyncd.log         #log文件
pid file = rsyncd.pid         #不晓得干嘛di
port = 52326               # 端口
uid = 0                        
gid = 0
max connections = 10

# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work

path = /cygdrive/d/test             #需要同步的文件目录
read only = false
transfer logging = yes
lock file = rsyncd.lock

客户端设置批处理文件:
cd C:\Program Files\ICW\bin\
rsync -av --delete rsync://10.10.10.103:52326/t /cygdrive/e/test客户端,批处理中(rsync.bat):

set CYGWIN=nontsec
rsync -vzrtopg --delete rsync://192.168.0.88:873/www.test.com/cygdrive/d/www.test.com最后再把批处理的文件建成计划任务,时间间隔可以根据项目需求而定,同时 set CYGWIN=nontsec 这个参数十分重要,不然会引起文件权限问题,一定要加上, --delete 是是否删除的选项,比如服务器端删除了一个文件,客户端如果也要删除,就要加上这个参数,对于代码同步,这个是必须的,但是对于文件同步,这个不加比较好

1101811258 发表于 1970-1-1 08:00:00

学习学习呵呵
页: [1]
查看完整版本: 在多台Windows主机间使用cwRsync来 同步/备份/传送 文件