一、rsync客户端介绍

# rsync --help
Usage: rsync [OPTION]... SRC [SRC]... DESTor   rsync [OPTION]... SRC [SRC]... [USER@]HOST:DESTor   rsync [OPTION]... SRC [SRC]... [USER@]HOST::DESTor   rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DESTor   rsync [OPTION]... [USER@]HOST:SRC [DEST]or   rsync [OPTION]... [USER@]HOST::SRC [DEST]or   rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]注意:用“:”的是使用shell连接,带有“rsync或::”使用rsync的服务模式连接常用选项:(借鉴别人的)
-v:显示详细信息
-a:以递归方式传输文件,并保持所有属性;等同于-rlpogtD,-a选项后可跟--no-OPTION参数,用于减去某个选项(一个),如-a --no-l
-r:递归模式,即传输时保持目录结构
-l:传输软链接文件,默认不传输
-L:当SRC包含软链接文件时,传输软链接文件所指向目标文件
-H:保留硬链接,默认使用不同的inode存放
-p:保持文件权限
-o:保持文件所属者信息
-g:保持文件所属组信息
-t:保持文件时间信息
-D:保持设备文件信息
--delete:删除DST中SRC里没有的文件
--exclude=PATTERN:传输时排除指定文件,可使用通配符
-P|--progress:显示传输进度
-u:当DST中的文件比SRC中的文件还新时,不进行覆盖
-z:压缩传输
-e "ssh -p xxx":使用指定端口,或"--rsh=ssh -p xxx"
-R:创建级联目录
--files-from=file-path:根据指定的文件列表文档进行同步
--include=PATTERN --exclude="*": 只同步指定类型的文件
diff file1 file2:对比2个文件的差异
同步目录下的文件时,请一定记得加/


二、rsync服务端的配置文件介绍:

 rsync配置文件有两部分组成,分别在rsyncd.conf中定义,分为全局配置部分和模块配置部分

全局配置
motd file =          定义rsync的客户端连接信息,可选配置
pid file  =          定义rsync的pid文件位置
port      =          定义rsync运行时的端口,默认是tcp/873 ,可选配置
address    =          rsync监听的地址,可选配置,如果不指定默认监听所有地址
socket options =     rsync的套接字存放路径,可选配置

模块配置部分:
[name]               \\声明模块名,用于远程访问是的名称,类似于别名
comment =           \\描述信息
path =              \\文件的存放位置,即name的真实路径
use chroot =       \\是否固定在工作目录,类似于named服务,若开启此项需要以root用户身份运行rsyncd如果为false,则表示不启用此选项
max connections =  \\限制最大连接数,默认为0
log file = /path/to/filename   \\rsync的log存放路径
syslog facility =               \\使用rsyslog服务
lock file =                      \\定义lock存放路径,默认为/var/run/rsyncd.lock
read only = true | false     \\设置客户端是否为只读权限
write only =  true | false  \\设置客户端是否有写入权限
list = true | false            \\是否列出可用模块
uid =                            \\文件传输到本地以后的属主
gid =                            \\文件传输到本地以后的属组
exclude =                        \\排除不同步的文件或目录
auth users = user1,user2....    \\rsync的认证用户
secrets file = /path/to/file.passwd \\认证用户的密码,内容格式为user:password,权限为600
hosts allow =                   \\允许访问的地址,可以是主机名、ip地址、网段/24等
hosts deny = 同上
ignore errors = true | false   \\是否忽略I/O错误信息
log format =                    \\定义日志格式; 参考地址:https://download.samba.org/pub/rsync/rsyncd.conf.html
timeout =                       \\连接超时时长 ,默认为0s


三、服务端配置示例:

# cat /etc/rsyncd.conf
uid=nobody
gid=nobody
use choot=no
max connections= 5
timeout = 200
strict modes= yes
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd/rsync.log
log format = %t %a %m %f %b
motd file = /etc/rsync/rsyncd.motd[bak]
path=/data/mysql_bak/
comment = MySQL backup Direcotry
ignore errors = yes
read only = no
write only = no
hosts allow = 192.168.74.140
hosts deny = *
list = no
uid = root
gid = root
#exclude
auth users=rsync
secrets file = /etc/rsync/rsyncd.passwd# cat /etc/rsync/rsyncd.passwd 
rsync:123456


四、启动服务

方式一:利用xinetd启动
# cat /etc/xinetd.d/rsync 
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service rsync
{disable = no  \\默认为yesflags = IPv6socket_type     = streamwait            = nouser            = rootserver          = /usr/bin/rsyncserver_args     = --daemonlog_on_failure  += USERID
}# /etc/init.d/xinetd start 
[root@zcimg4 ~]# netstat -utpln | grep xinetd
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      32396/xinetd

方式二:
# /usr/bin/rsync  --daemon --config=/path/to/rsyncd.conf
#/usr/bin/rsync --daemon --help \\查看帮助方法

五、客户端连接服务端

在客户端配置连接服务端时使用用户的密码:
# cat /etc/rsync/rsync.passwd 
123456#rsync -aP --password-file=/etc/rsync/rsync.passwd  /mysql_bak   rsync@172.16.100.101::bak/-a:保留所有文件属性-P:显示进度--password-file :指明用户认证的密码/mysal_bak: 本地要同步的数据目录rsync@172.16.100.101::bak/ :数据同步目标位置,注意bak前面没有“/”


六、使用中遇到的问题:

rsync: read error: Connection reset by peer (104)
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.6]
解决方法:
(1)有可能是rsync启动失败,检查配置文件,重新启动rsyncd服务
(2)有可能是rsync的配置文件没有读取的,如果使用xinetd控制rsync服务,xinetd默认读取/etc/rsyncd.conf配置文件,
如果你把rsyncd.conf配置文件放到/etc/rsyncd/rysncd.conf,则需要做软连接才可以使用
例如:ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf


参考文档:

rsync官网:https://download.samba.org/pub/rsync/rsyncd.conf.html

rsync问题:http://www.tuicool.com/articles/me2IFjf