Windows平台下如何使用rsync实现文件同步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows平台下如何使用rsync实现文件同步相关的知识,希望对你有一定的参考价值。

参考技术A Windows平台下如何使用rsync实现文件同步

  rsync 是一个很好的文件同步工具,我们需要一个服务端和一个客户端。可以实现把本地文件同步到服务端,也可以把服务端的文件同步到本地。

  1、 下载cwRsync客户端(cwRsync)和服务器端(cwRsyncServer)。

  2、服务器端(假设IP地址为:192.168.1.100)安装:采用默认选项安装。

  安装后,服务默认为手动启动模式,到“管理工具/服务管理”里,启动“RsyncServer”服务,并修改“RsyncServer”为自动启动模式。

  3、服务器端配置:编辑rsyncd.conf文件,写入如下信息:

  以下是代码片段:

  uid = 0

  gid = 0 #使用匿名方式传输时必须加入这两行

  use chroot = false

  strict modes = false

  hosts allow = *

  log file = rsyncd.log

  # Module definitions

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

  #

  [test]

  path = /cygdrive/d/temp #指定服务端用来同步的文件,这个表示“d:\temp”文件夹

  read only = false

  transfer logging = yes

  说明:其中[test]是要同步的.模块定义,可以定义多个模块,path是磁盘路径,/cygdrive/d/temp对应到 d:\temp文件夹,由于cwRsync软件在windows下不能够直接挂盘符,采用 /cygdrive/这种模式。

  4、在另外一台机器安装客户端(假设IP地址为:192.168.1.101),在命令行模式下,进入安装目录的bin文件夹下,执行: rsync -avr 192.168.1.100::test /cygdrive/d/temp,如此既可把服务端的文件同步到本地。 ;

Linux下利用rsync实现多服务器文件同步

windows做为文件服务器,使用rsync的windows服务版本,然后配置好就可以了。需要的朋友可以参考下。

windows做为文件服务器,使用rsync的windows服务版本:cwRsyncServer 下载地址:http://rsync.samba.org 

安装过程要设置用于系统服务的帐号和密码,可以默认。 
注:此帐号用于启用crsync server服务,需要分配给帐号对要同步文件的相应权限,否则无法操作被同步的文件。 

目标:多服务器文件同步
 
环境:2台CentOS5.6
 
Web端:192.168.20.20
 
Backup端:192.168.20.21
 
需要备份目录为:192.168.20.20:/usr/local/web1 /usr/local/web2
 
第一步:服务器端的配置

#rpm –qa |grep rsync && rpm –e rsync-** --dodeps

如果没有的话,则自行下载安装 (yum –y install rsync)

复制代码
#cd /usr/local/
 
# wget http://www.samba.org/ftp/rsync/src-previews/rsync-3.0.6pre1.tar.gz
 
#tar –zxvf rsync-3.0.6pre1.tar.gz
 
#cd rsync-3.0.6pre1
 
#./configure –prefix=/usr/local/rsync 
 
# make && make install
 
# vi /etc/rsyncd.conf
复制代码
复制代码
uid = nobody
gid = nobody
use chroot = no
max connections = 4
pid file = /usr/local/rsync/pid/rsyncd.pid
lock file = /usr/local/rsync/pid/rsync.lock
log file = /usr/local/rsync/pid/rsyncd.log
secrets file=/usr/local/rsync/pwd/rsyncd.pwd
hosts allow = 192.168.20.0/24
hosts deny = *
 
[web1]
path=/usr/local/web1
comment = backup web1
ignore errors
read only = yes
#list = no
auth users = web1
 
[web2]
path=/usr/local/web2
comment = backup web2
ignore errors
read only = yes
#list = no
auth users = web2
复制代码

uid = nobody        //指定文件传输过程中的用户身份
gid = nobody        //指定文件传输过程中的组身份
 
log file = /var/log/rsyncd.log        //指定使用独立的日志文件的位置
pid file = /var/run/rsyncd.pid        //保存pid到指定文件,以便于使用脚本终止进程

read only = yes        //该目录设置为只读,即只允许客户端下行同步,不允许上传。若需要进行从备份机还原数据,改为no
rsyncd默认在873端口监听服务,可在客户端使用telnet连接测

# mkdir -p /usr/local/pid
 
# mkdir -p /usr/local/pwd
 
# vi /usr/local/rsync/pwd/rsyncd.pwd
web1:123456@789
 
web2:789@123456

格式为:用户名:密码
 
设置密码文件仅仅root用户能访问

#chmod 600 /usr/local/rsync/pwd/rsyncd.pwd
 
# cp /usr/local/rsync/bin/rsync  /usr/bin/

在服务器端启动rsync服务

# rsync –daemon (注意重启kill后要把.pid .lock删掉)

第二步:备份端的配置
 
安装rsync软件,同上
 
设置密码文件只需填写对应密码:

复制代码
# touch /usr/local/rsync/web1
 
# touch /usr/local/rsync/web2
 
# vi /usr/local/rsync/web1
 
     123456@789
 
# vi /usr/local/rsync/web2
 
     789@123456
复制代码

同时设置为只有root有权限

# chmod 600 /usr/local/rsync/wbe1

创建备份目录

# mkdir -p /usr/local/web1
 
# mkdir -p /usr/local/web2
 
# rsync –daemon

把服务器端文件web1备份到本机(备份机):

# /usr/bin/rsync -vzrtopg --progress --delete --exclude "logs/" --exclude "conf/ssl.*/" --password-file=/usr/local/rsync/web1 web1@192.168.20.20::web1 /usr/local/web1

# Web2 也是一样的如上手动进行同步
 
--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致, 删除本地目录中多余的文件
 
-- exclude "logs/" 表示不对/web1/logs目录下的文件进行备份。
 
--exclude "conf/ssl.*/"表示不对/web1/conf/ssl.*/目录下的文件进行备份。
 
 
 
如果需要可以放到crontab 计划任务中间隔性的进行同步备份!

 

将以上命令写入计划任务,每1分钟执行,即可实现实时同步的效果。 

注: 
上面这个命令行中-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数。-- progress是指显示出详细的进度情况,--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。 

附,rsync使用时的常见问题: 

错误1: rsync: read error: Connection reset by peer (104) 
rsync error: error in rsync protocol data stream (code 12) at io.c(794) [receiver=3.0.2] 
解决:很大可能是服务器端没有开启 rsync 服务。开启服务。 或者开启了防火墙指定的端口无法访问。 

错误2:@ERROR: chdir failed 
rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2] 
解决:服务器端同步目录没有权限,cwrsync默认用户是Svcwrsync。为同步目录添加用户Svcwrsync权限。 

错误3:@ERROR: failed to open lock file 
rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2] 
解决:服务器端配置文件 rsyncd.conf中添加 lock file = rsyncd.lock 即可解决。 

错误4:@ERROR: invalid uid nobody 
rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.2] 
解决:在rsyncd.conf文件中添加下面两行即可解决问题 
UID = 0 
GID = 0 

错误5:@ERROR: auth failed on module test2 
rsync error: error starting client-server protocol (code 5) at main.c(1296) [receiver=3.0.2] 
解决:服务端没有指定正确的secrets file,请在 [test2]配置段添加如下配置行: 
auth users = coldstar #同步使用的帐号 
secrets file = rsyncd.secrets #密码文件 

错误6:password file must not be other-accessible 
解决:客户端的pass文件要求权限为600, chmod 600 /etc/rsync.pass 即可。

转自 http://www.cnblogs.com/keheng/p/3800734.html

 

以上是关于Windows平台下如何使用rsync实现文件同步的主要内容,如果未能解决你的问题,请参考以下文章

Windows下cwrsync客户端与rsync群辉存储服务端定时数据同步

rsync高级同步

rsync实现服务器之间同步目录文件

Rsync同步过程中遇到的常见问题

rsync+inotify实现远程数据备份

Linux的文件同步工具rsync实战