在多台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
#

[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的更多配置选项,此处绝对不可能描述得完,请参考其手册。

 

你可能感兴趣的:(在多台Windows主机间使用cwRsync来 同步/备份/传送 文件)