windows之间利用CwRsyanc同步

windows之间利用CwRsyanc同步

环境:两台windows server 2008服务器。

        CwRsyanc的服务器地址是:192.168.1.1 ;客户端的地址是:192.168.1.2

安装:

1)下载软件包: 

Copssh_3.1.4_Installer.zip ------openssh 服务器的软件包

cwRsyncServer_4.0.5_Installer.zip  --------rsync服务端软件包

 cwRsync_4.0.5_Installer.zip    ----------resaync客户端软件包

2)服务端安装并配置: 

    A.在192.168.1.1服务器上安装Copssh_3.1.4_Installer.zip cwRsyncServer_4.0.5_Installer.zip (顺序随便)。全部选择下一步就好。

    B.修改rsync.conf    (默认 路劲C:\Program Files (x86)\ICW)

use chroot = false
strict modes = false
hosts allow = *
log file = rsyncd.log
charset = GBK       ---------为了防止同步时中文会变成乱码。

# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
[test]
path = /cygdrive/d/test
read only = false
transfer logging = yes
#auth users = administrator
#secrets file = etc/rsyncd.secrets   -----如果走的是密钥的方式连接,这两个可以不用写

rsync的默认端口是873

    C.修改sshd.conf   (默认路径:C:\Program Files (x86)\cwRsync\ICW\etc\)

Port 22   ---端口
Protocol 2   ---协议
PermitRootLogin    yes   -   允许root(管理员)登录
MaxAuthTries 6  
MaxSessions 10

RSAAuthentication       yes
PubkeyAuthentication     yes
AuthorizedKeysFile .ssh/authorized_keys      -----密钥保存位置

Subsystem sftp /bin/sftp-server

     D.启动服务:

windows之间利用CwRsyanc同步_第1张图片
补充:在安装时,有一步是填写用户名和密码。这个按照默认的就好。系统会自动添加两个用户。如果在启动服务时报错,可能是这两个用户没有管理员的权限。因此要将这两个用户加入administrator组。

windows之间利用CwRsyanc同步_第2张图片

     E.激活openssh用户。

windows之间利用CwRsyanc同步_第3张图片

windows之间利用CwRsyanc同步_第4张图片

   F.为管理员生成密钥对:在bin目录下会有和执行程序,是为当前登录的用户生成密钥对的。(密码为空)


   G。防火墙开放22端口。

 服务器暂时放着。现在配置客户端。

1)安装cwRsync_4.0.5_Installer.zip 软件包。

2)同样给当前登录的用户生成密钥。还是那个执行软件。(密码为空)

3)将生成的公钥拷贝到192.168.1.1(服务器)的用户下的C:\Program Files (x86)\cwRsync\ICW\home\Administrator\.ssh\authorized_key文件中。(这个位置是有openssh 的配置文件中觉定的)

4)防火墙开放22端口。

补充:为什么在生成密钥时,密码要为空。如果输入了密码,则在执行同步的脚本时,或提示输入密码。原因我也不知道。


设置同步脚本:(客户机上需要,服务器上可以不用。因为客户机是主动与服务器连接的。)

@echo off 
  if "%1" == "h" goto begin 
  mshta vbscript:createobject("wscript.shell").run("%~nx0 h",2)(window.close)&&exit 
  :begin 
d:
cd "D:\shell"
"C:\Program Files (x86)\cwRsync\ICW\Bin\rsync" -avuz  --iconv=GBK,UTF-8   --exclude "bin"   --exclude='*.config'-e "'C:\Program Files (x86)\cwRsync\ICW\Bin\ssh'  -p 22"  '/cygdrive/d/zjce/' 192.168.1.1:/cygdrive/d/zjce/
"C:\Program Files (x86)\cwRsync\ICW\Bin\rsync" -avuz --iconv=GBK,UTF-8   --exclude "bin"   --exclude='*.config'  -e "'C:\Program Files (x86)\cwRsync\ICW\Bin\ssh'  -p 22" 192.168.1.1:/cygdrive/d/zjce/  '/cygdrive/d/zjce/
pause   -----这个在测试的时候需要,因为它可以看到通过的过程,在运行时不需要。

--iconv=GBK,UTF-8     -----------防止乱码,前提是在服务器上的rsync.conf文件中写着这句:charset = GBK 

--exclude "bin"      ----------排除bin这个文件夹

--exclude='*.config'       ----------排除所有后缀是.config的文件

排除还有一种方式:--exclude-from=文件名   这个文件中写着需要排除的文件名。已根目录为起点。

补充一点:--include  和 --include-from的使用方法(包含模式):

  --include=单个文件夹路径

  --include-from=文件名   这个文件名中写着要包含的和要 排除的文件。

列如:文件名=baohan.txt

在d盘下有文件夹。目录是d/www/tst/www/。在www下有database 、website .其中website 目录下可能有Bin image web.config 等文件。。一般bin目录、web.config 是不需要同步的所有文本的内容是:

+ www/website/image/        -----+表示要包含的文件

- web.config           --------------- - 表示要排除的

- www/website/bin/

- www/database/*


可以写一个vbs的文件。  rsync.vbs

set ws=WScript.CreateObject("WScript.Shell") 
ws.Run "D:\shell\sync.cmd",2

在指定计划任务,调取 rsync.vbs时。rsync.cmd=需要执行的脚本名称。

可指定计划任务。

感谢:

http://articles.slicehost.com/2007/10/10/rsync-exclude-files-and-folders

http://baike.baidu.com/view/386253.htm

http://www.360doc.com/content/12/1011/14/10834920_240837306.shtml

http://www.xfocus.net/articles/200107/214.html

http://wenku.baidu.com/view/9be231e9b8f67c1cfad6b80f.html

http://blog.csdn.net/ymwugui/article/details/7048084

rsync命令详解:

rsync 同步文件包括目录

分类: linux 2012-05-25 11:30 316人阅读 评论(0) 收藏 举报

rsync -Rr 文件夹名 ip::目标模块

选项说明

-v, --verbose 详细模式输出

-q, --quiet 精简输出模式

-c, --checksum 打开校验开关,强制对文件传输进行校验

-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

-r, --recursive 对子目录以递归模式处理

-R, --relative 使用相对路径信息

rsync foo/bar/foo.c remote:/tmp/

则在/tmp目录下创建foo.c文件,而如果使用-R参数:

rsync -R foo/bar/foo.c remote:/tmp/

则会创建文件/tmp/foo/bar/foo.c,也就是会保持完全路径信息。

-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的shell程序

--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 显示帮助信息


你可能感兴趣的:(windows,同步,密钥,rsync,openssh)