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.启动服务:
补充:在安装时,有一步是填写用户名和密码。这个按照默认的就好。系统会自动添加两个用户。如果在启动服务时报错,可能是这两个用户没有管理员的权限。因此要将这两个用户加入administrator组。
E.激活openssh用户。
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 显示帮助信息