一、什么是rsync?

rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具。

rsync官网



http://rsync.samba.org/


  

二、rsync的工作方式

1、单个主机本地之间的数据传输

同步文件hosts到/data/tmp



> rsync /etc/hosts /data/tmp/


同步删除tmp目录中的文件



> rsync -r --delete /data/tmp2/ /data/tmp/


  

2、借助rcp,ssh等通道来传输数据

推文件,把本地hosts文件通过ssh同步到远程主机/data/tmp目录



> rsync -avzP -e 'ssh -p 22' /etc/hosts root@192.168.137.233:/data/tmp/


拉文件,把远程主机/data/tmp目录下文件拉到本地/data/tmp2目录下



> rsync -avzP -e 'ssh -p 22' root@192.168.137.233:/data/tmp/ /data/tmp2/


  

3、以守护进程的方式传输数据

 

三、rsync的常用参数



-v 详细模式输出,传输时的进度等信息
-z 压缩传输
-a 归档模式,等同于-rlptgoD
-r 递归模式
-t 保持文件时间
-o 保持文件属主
-p 保持文件权限
-g 保持文件属组信息
-P 显示同步过程及传输时的进度
-D 保持设备文件信息
-l 保留软链接
--exclude 排除指定文件
--exclude-from 排除文件的路径
--password-file 指定密码文件


  

四、rsync守护进程方式配置



> touch /etc/rsyncd.conf



#端口
port = 873
#用户
uid = nobody
#用户组
gid = nobody
#禁止使用chroot
use chroot = no
#最大连接数
max connections = 100
#PID文件路径
pid file = /var/run/rsyncd.pid
#锁文件路径
lock file = /var/run/rsyncd.lock
#日志文件路径
log file = /var/log/rsyncd.log
#忽略一些无关的IO错误
ignore errors
#认证的用户
auth users = rsync_backup
#密码文件路径
secrets file = /etc/rsyncd.secrets
#允许主机
hosts allow = 192.168.137.0/24
#禁止主机
hosts deny = *

#模块定义服务器哪个目录要被同步
[www.test.com]
path = /data/www/www.test.com
ignore errors
read only = false

[www.test2.com]
path = /data/www/www.test2.com
ignore errors
read only = false


配置密码文件



> echo 'rsync_backup:123456' > /etc/rsyncd.secrets


修改密码文件权限



> chmod 600 /etc/rsyncd.secrets 


以守护进程的方式启动服务



> /data/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf


然后客户端就可以通过如下命令同步文件



> echo '123456' > /etc/rsync.pwd
> chmod 600 /etc/rsync.pwd


把服务器www.test.com模块同步到本地/data/www.test.com下



> rsync -avzP --password-file=/etc/rsync.pwd rsync_backup@192.168.137.222::www.test.com /data/www.test.com