巧用Rsync成功实现多台Windows工作电脑资料同步

来源:岁月联盟 编辑:zhu 时间:2009-03-06
巧用Rsync成功实现多台Windows工作电脑资料同步内容简介:有疑问可以发mail给作者 qbanke@foxmail.com说到电脑,我真是一屋子都是. 从房间到大厅,就已经有5台.这还没包括服务器. 虽然这5台电脑我最常用的也只是2~3台.其他的不是给朋友们来坐的时候打打游戏.就

有疑问可以发mail给作者 qbanke@foxmail.com

说到电脑,我真是一屋子都是.
从房间到大厅,就已经有5台.这还没包括服务器.

虽然这5台电脑我最常用的也只是2~3台.其他的不是给朋友们来坐的时候打打游戏.就是给妈妈上网看看报纸.

不过我相信很多朋友也有不少电脑..例如1或2台台式电脑(一台在家里,一台在公司).跟1或2台笔记本.(一台用于工作一台用于去星巴克叹咖啡)...

哈哈哈...怎么都好!.电脑多就往往有个问题,里边的资料同步比较麻烦!

不说什么,就说我自己. 经常在笔记本上完成一些工作的文档,或者新写好的文章,回到家后就要把U盘把它们从笔记本上拷出来.再放回到台式机上继续写.

这还好,如果那天比较忙.或者好几天不在家.!! 笔记本上更新的资料就常常会有.新建或修改的Web文档...还没来得即写完的Word文档...工作记录...最新加入收藏夹的新网址...新挖掘到的Linux软件跟它的配置说明文本..才下载的Music...电影...数十个...

要的回到家再慢慢回想干了些什么,要在慢慢把这些东西从笔记本的硬盘上找出来.copy到U盘上.再复制到台式机...又再在台式机上整理好.放入响应的目录........靠!!..这头都晕了~~

于是,为了解决我们这些多脑一族的烦恼...许多数据同步软件就诞生了.!.在这里我推荐2个..一个是由来已久的老牌好家伙 Rsync , 另一个就是 allwaysync

前者完全开源而且免费, 后者用久了,用多了,就要收钱!! 不过操作完全可视化.傻瓜化..但要说实现起来的话.2个都差不多.

其实Rsync是在Linux跟Unix上响当当的远程数据同步以及备份软件。今天我们拿来做这"鸟事"可真有点.....呵...

好吧, 我看在钱的份上.是喜欢把问题"复杂化"的.
其实也不是很复杂,就是字比较多.可真要认真看.我已经尽量把细节都写出来了.

本文将介绍跟距离如何用 Rsync windows 版来帮我们好好“改变一下 工作,生活。”

你可以选择2种配置方法!
1,一台台式电脑,一台笔记本
2,一台服务器,一台工作站(台式电脑),一台笔记本

其实2种配置,无非都是要符合Rsync结构里边 服务端 跟 客户端 的资料传输方式。
第一种配置,可以把台式机安装Rsync服务端,而笔记本运行客户端进行资料更新同步。
第二种配置,可以在服务器上安装Rsync服务端,另外的工作站跟笔记本使用客户端进行资料更新。

任何一种方法实现起来都挺好.
但有一点要声明.我还没试过在装有 VISTA 操作系统的台式机上充当Rsync的服务端. 客户端就很成功.

另外再说一说, 我个人现在用的是第二种配置。如果有哪位朋友喜欢,而且想应用在生成环境中,例如公司或企业的重要资料备份以及同步. 这样我还是推荐使用专门的服务器+专门的服务器操作系统. 至少是 Windows2003server 或者 Linux。 如果你有条件有技术的话,Linux 是个最专业的选择哦。

好了,现在入正题。


你要准备的软件有:
最新版 Rsync for windows
服务端:cwRsync_Server_2.1.5_Installer.zip
客户端:cwRsync_2.1.5_Installer.zip

还有这个是服务端的最新核心升级包:cwRsync_2.1.5_update_100.zip
下载地址:


Rsync 的server端跟 客户端 都是一个Windows的exe的安装文件。选好安装路径,装就是了。

先在服务器或者(台式机)上安装Rsync Server 服务端。

我把安装路径设在了服务器(台式机)的 D:/Program Files/cwRsyncServer

Server 端会顺便添加一个SvcwRsync用户,用户密码会在安装过程中自动生成并且告诉你.这个密码难度也挺强的一般是没必要去修改。
而且它还会在系统 服务 里头添加上一个 "RsyncServer"  默认是手动启动, 你可以把它设置成自动,随服务器启动并运行在后台。

安装升级
很简单,把升级包解压,再吧里边的rsync.exe文件覆盖到安装目录下bin的同名文件即可。

好了,现在来说说配置了!

由于Rsync是从Linux跟Unix上移植过来Windows的。
所以其没有图形界面,一切工作控制都要用配置文件来完成。

我们先来设置Server端的。

如果按上边提到的2种配置选择来说,rsync服务端的配置不管是 WinXP还是Win2003都基本是一样的.只是有一些人性化的细节方面我后边会提到.

打开位于 D:/Program Files/cwRsyncServer 下的 rsyncd.conf

use chroot = false
strict modes = false
hosts allow = *
log file = rsyncd.log
pid file = rsyncd.pid

#上边这部分不用管, 看下边的.
#刚刚安装完成,下边原本会是个Test,全部删掉!我们自己来添加新的.

[Documents]    #同步项目(可自定)
path =/cygdrive/h/Documents/    #文件存放位置
read only = false    #允许客户端上传文件,只读关闭
transfer logging = yes    #访问询问账号密码
auth users = qbanke    #账号 qbanke(可以自定)
secrets file = etc/pwd.conf    #账号的密码,需自己创建。

#以上的配置是我用于同步工作用的文档

把修改好的rsync.conf 保存
自己在D:/Program Files/cwRsyncServer 下创建一个文件夹 etc 并且在里边创建一个名为pwd.conf 的密码明文,格式是。

qbanke:123456

qbanke 是用户账号,冒号后边的是密码.
保存后,如果是win2003系统,就要设置权限把这个文件的所有用户可读权限都删掉。不然Rsync检测到该文件权限过低就会因安全拒绝连接。不给你发数据。

还没行!!.要顺利启动,你还需要设置一下用户存放项目的文件夹的权限.

刚才配置的这个 path =/cygdrive/h/Documents/    #文件存放位置

意思是 从盘(就是除C盘以外) 盘符 h (H:/) 下的 Documents 整个意思就其实是(h:/Documents)
当然盘符跟文件夹都可以你自己来建跟修改.

权限设置很重要,决定你Rsync Server与客户端能不能很顺利地取读以及同步数据.

在Win2003下, 要确保在安装过程中自动建立的那个  SvcwRsync 用户对该文件夹有完全控制的权限。因为 rsync 在系统中读写数据时用的是这个用户账号。

而WinXP 就有点麻烦了,不能像2003一样单独设置文件夹的权限,所以要巧妙地使用"共享"来实现。右键点Documents选择属性,共享,完全共享(可读写)。如果你不想共享后其他电脑通过局域网来查看你共享文件夹的内容,你要再多一步。到控制面板,管理工具,计算机管理,本地用户和组,隔壁的Guest,右键点击,属性,把账户已停用的沟打上即可。

然后你总算可以在服务里头把rsync启动了。

还要说一点的, rsync 在WinXP中安装的时候也是创建了一个SvcwRsync的用户。
WinXP 跟 2003 的区别,就是它默认是使用"欢迎屏幕"登陆的。当你重启或者注销后,你就会看到账户选择上多了个SvcwRsync。很碍眼!

咋办? 把它跟其他系统账户一样,隐藏掉!!

下边是方法:

在Windows XP的欢迎屏幕上,默认情况下会显示除Administrator外的所有本地用户名。如果您想在欢迎屏幕显示Administrator账户,可以打开注册表编辑器,定位到“HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon/ SpecialAccounts/UserList”,在右侧的窗口中找到以Administrator命名的键(如果没有可以自己建立。右键,新建,DWORD值),双击,将键值由0改为1,退出后重新启动计算机。这样,Administrator账户就可以在欢迎屏幕上显示了。

同理,如果您想隐藏某个用户,可以在上面提到的位置新建一个以您想隐藏的用户为名的键,然后把值设置成0,重启机器,这个用户就从欢迎屏幕上隐藏起来了。

------------------

所以我说, winXP 干数据同步这事还是不专业啊,问题多。幸好还是能解决掉。

下边就轮到客户端的设置了。(笔记本或工作站台式机)

客户端的安装我觉得其实就是个解压,解压后任由你往哪里扔都行了。
最重要是它的运行方法,要用批处理命令。

我们把客户端扔在 D:/rsync_Kaiser/
在目录下新建一个新建一个 文本文档.txt 改名成 Documents_bak.bat
在里边添加内容:

d:/rsync_Kaiser/bin/rsync.exe -vrtopg --exclude=desktop.ini --exclude=Desktop.ini --exclude=Thumbs.db --exclude=RECYCLER --progress --password-file=etc/pwd.conf /cygdrive/e/Documents qbanke@192.168.3.3::Documents

#意思是
#执行 d:/rsync_Kaiser/bin/rsync.exe
# -vrtopg  这个是运行参数, 可以查看下边的参数列表。
# -exclude=desktop.ini --exclude=Desktop.ini --exclude=Thumbs.db --exclude=RECYCLER 这些也是运行参数, 意思是把=号后边的文件屏蔽掉,不做同步.
# --progress 在程序执行的时候屏幕窗口上显示详细的运作信息,例如整在同步那个文件,速度多少。
# -password-file=etc/pwd.conf  跟服务器端一样,指定密码文件的路径,以便在自动运行的时候不用手动来输入.
# /cygdrive/e/Documents qbanke@192.168.3.3::Documents本地文件夹 e:/ 盘上Documents所有的内容(路径自己根据不情况进行修改)将和 服务端ip地址192.168.3.3 的 Documents 存储目录同步。

然后也要跟服务端一样,在当然目录新建一个etc 文件夹 再新建一个名为pwd.conf 的文本文件.
但里边的内容只需单独填写跟服务器里头配置文件相对应的密码即可,不用填用户名.  123456

保存,设置权限!.XP上什么都不用动. 但如果你的操作系统是VISTA 商业版,或者Ultra版, 就要好像Win2003一样,把改文件的所有可访问用户都干掉.


好,说到这里.希望你是一位技术不赖的网管,能把上边的都能集合自己的经验看明白吧.

服务端跟客户端的配置都完成了,可以试试执行。
如果出现任何错,最大一个可能第一是权限没弄好,目录的,密码文件的。
第二就是配置有误,客户端的没跟服务器的对应好,账号或者存储目录名。

现在客户端所配置的选项是单向的数据上传同步。

意思是检测服务端跟客户端文件的差异,再决定要上传,更新服务器哪些文件。
如果客户端存在比服务器多的文件,即上传。
如果客户端存在比服务器要新的文件,即覆盖。
如果客户端的文件相比服务器的要缺少,即跳过。
(不跳过也行!你可以在客户端参数中-vrtopg的后边加入--delete 来实现同步删除.慎用!!)

对了!还要说一说!.要注意路径的斜杠。很重要!!!

/cygdrive/e/Documents/ qbanke@192.168.3.3::Documents 

这个写法, 会吧 e:/ 盘下Documents所有文件都同步到服务器 Documents 当前目录下边

/cygdrive/e/Documents qbanke@192.168.3.3::Documents 

这个Documents后少了个斜杠!, 就会把e:/ 盘下Documents 同步到服务器Documents 当前目录下边Documents的文件夹内。就是说他会再建一个文件夹。

我的做法是, 在客户端执行的bat程序中定制2行命令。

一行是上边那个用于上传的。
一行是下边这个用户下载的。

这样就能让客户端也能及时更新到服务器上新修改或者创建的文件了。

d:/rsync_Kaiser/bin/rsync.exe -vrtopg --exclude=desktop.ini --exclude=Desktop.ini --exclude=Thumbs.db --exclude=RECYCLER --progress --password-file=etc/pwd.conf qbanke@192.168.3.3::Documents/ /cygdrive/e/Documents

其实就仅仅把上传命令的最后2段反了过来。再改了一下斜杠的位置。

客户端下载的规则其实是跟上传一样的,就是一个对上,一个对下。
检测服务器里边那些文件跟本地的大小跟创建时间有差异,选择新的那个覆盖客户端旧文件。

上传跟下载2行命令+起来,即可完成完整的数据同步任务。即:

A笔记本今天工作完成,把新文件上传至服务器。并检测服务器上有没新的文件更新。有就下载。
B工作站(或者台式机)打开,获取来自服务器端的新文件,并且检测本地有没新的文件更新,有就上传。

B工作站对文件做进一步修改,完成后再次运行同步程序,回传到服务器(如果是第一种方案的话就不用了)。
A笔记本运行同步程序,把工作站最新修改的文件以及最新上传的文件一并同步到本地。

怎样?你还可以把同步的.bat程序发送快捷方式到桌面.并改一个好看的图标.
每天工作完成下班回家,笔记本接入家里的局域网后,就用鼠标点一下~!同步自动检测并自动运行.
你可以去睡一下,煮饭,看电视什么的.不用再在电脑上再折腾多几十分钟去整理了.

Rsync 的服务端配置里头的储存目录不止写一个的,还可以添加多个存放不同的文件夹或者不同的硬盘.

像我的就是:

use chroot = false
strict modes = false
hosts allow = *
log file = rsyncd.log
pid file = rsyncd.pid

[Documents]
path =/cygdrive/h/Documents/
read only = false
transfer logging = yes
auth users = qbanke
secrets file = etc/pwd.conf
# 工作用文档

[photo]
path=/cygdrive/h/photo/
read only=false
transfer logging=yes
auth users = qbanke
secrets file = etc/pwd.conf
# 存放摄影作品的文件夹

[soft]
path=/cygdrive/h/Soft/
read only=false
transfer logging=yes
auth users = qbanke
secrets file = etc/pwd.conf
# 存放软件的文件夹

另外我的邮箱是 [url=mailto:qbanke@foxmail.com]qbanke@foxmail.com[/url] 如果遇到问题可以发邮件来问我.


以下附上rsync客户端命令参数详解

-v, --verbose 详细模式输出
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-R, --relative 使用相对路径信息
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
--backup-dir 将备份文件(如~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
-l, --links 保留软链结
-L, --copy-links 想对待常规文件一样处理软链结
--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结
--safe-links 忽略指向SRC路径目录树以外的链结
-H, --hard-links 保留硬链结
-p, --perms 保持文件权限
-o, --owner 保持文件属主信息
-g, --group 保持文件属组信息
-D, --devices 保持设备文件信息
-t, --times 保持文件时间信息
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
-n, --dry-run现实哪些文件将被传输
-W, --whole-file 拷贝文件,不进行增量检测
-x, --one-file-system 不要跨越文件系统边界
-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节
-e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件
--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件
--delete 删除那些DST中SRC没有的文件
--delete-excluded 同样删除接收端那些被该选项指定排除的文件
--delete-after 传输结束以后再删除
--ignore-errors 及时出现IO错误也进行删除
--max-delete=NUM 最多删除NUM个文件
--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
--force 强制删除目录,即使不为空
--numeric-ids 不将数字的用户和组ID匹配为用户名和组名
--timeout=TIME IP超时时间,单位为秒
-I, --ignore-times 不跳过那些有同样的时间和长度的文件
--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0
-T --temp-dir=DIR 在DIR中创建临时文件
--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份
-P 等同于 --partial
--progress 显示备份过程
-z, --compress 对备份的文件在传输时进行压缩处理
--exclude=PATTERN 指定排除不需要传输的文件模式
--include=PATTERN 指定不排除而需要传输的文件模式
--exclude-from=FILE 排除FILE中指定模式的文件
--include-from=FILE 不排除FILE指定模式匹配的文件
--version 打印版本信息
--address 绑定到特定的地址
--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件
--port=PORT 指定其他的rsync服务端口
--blocking-io 对远程shell使用阻塞IO
-stats 给出某些文件的传输状态
--progress 在传输时现实传输过程
--log-format=formAT 指定日志文件格式
--password-file=FILE 从FILE中得到密码
--bwlimit=KBPS 限制I/O带宽,KBytes per second
-h, --help 显示帮助信息

图片内容