一、简介

    rsync一款开源的,快速的,多功能可实现全量及增量的本地或者远程数据同步备份的优秀工具可适用于多个操作系统之上,rsync具有可以使本地和远程两台主机之间的数据快速的同步和备份的用能。


二、工作模式及其特性 

1.rsync特性  

支持拷贝特殊文件如链接文件设备等  

可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能 --exclude 

可以实现增量同步,即只同步发生变化的数据,因此效率很高

实时备份和定时备份 

 

2.rsync命令的工作模式:

1)shell模式,也称为本地模式

2)远程shell模式,此时可以利用ssh协议来保证数据传输的安全  

3)列表模式,其工作方式与ls相似,仅列出源的内容

4)服务器模式,此时,rsync可以工作为守护进程,能够接收客服端的数据传输请求;在使用时,可以在客户端使用rsync命令把文件发送给守护进程,也可以向服务器请求获取文件。


3.rsync常用选项

rsync命令:

rsync  —a  fast,versatile(通用的),remote(and local)file-copying tool  

常用选项:

    -n:测试是否能执行成功 

    -v:显示详细的过程

    -a:归档

    -z:在传输的过程中压缩

    -r:递归复制 

    -P:保持原有属性 

    -p:perm,保持原有权限 

    -e:ssh,表示使用ssh的加密功能 

    -q:quit,静默模式

    -g:保留原文件的属组

    -o:保留原文件的属主

    -l:保留原文件的连接文件 


用法演示:


本地间的数据传输:

删除:rsync -avzP --delete  /tmp  

复制:rsync -avzP /etc/hosts /tmp 

推:rsync -avzP -e 'ssh -p 22' /tmp/ root@10.1.1.10:/tmp   

拉:rsync -avzP -e 'ssh -p 22' root@10.1.1.10:/tmp  /opt 


推:rsync -r -avzP -e ssh /tmp/etc  root@192.168.226.137:/tmp

拉:rsync -avzP -r -e ssh root@192.168.226.137:/tmp/etc  /tmp/


# rsync -r /mydata/data /backups/ : 会把目录data直接同步backups目录中

# rsync -r /mydata/data/ /backups/: 会把目录data/中的内容的同步至/backups目录中


注意:rsnc命令在使用中,如果源参数的末尾没有斜线,就复制指定目录里面的内容,包括目录本身,目标参数末尾的参数没有作用。rsync命令使用中,如果源参数的末尾有斜线,就会复制指定目录的内容,而不复制目录本身



三、配置rsync服务实现远程主机之间数据传输 

1.服务端配置

1)安装软件:rsync、xinetd,超级守护进程配置文件在/etc/xinetd文件中 

yum -y install rsync xinetd  


2)创建rsync配置文件 

#rsync server start#
uid = nobody
gid = nobody
use chroot = no 
max connections = 10 
strict modes = yes 
pid file = /var/run/rsyncd.pid 
log file = /var/log/rsyncd.log 
#directory to be backup or synced  
[synced_name]
path = /path/to/some_dir 
ignore errors = yes 
read only = no 
write only = no 
hosts allow = white_list_ip/net
hosts deny = *
说明:
1、二者都不出现时,默认为允许访问;
2、只出现hosts allow: 定义白名单;但没有被匹配到的主机由默认规则处理,即为允许;
3、只出现hosts deny: 定义黑名单;出现在名单中的都被拒绝;
4、二者同时出现:先检查hosts allow,如果匹配就allow,否则,检查hosts deny,如果匹配则拒绝;如二者均无匹配,则由默认规则处理,即为允许;
list = false
uid = root
gid = root
auth users = username
secrets file = /etc/rsyncd.passwd


3)配置密码文件/etc/rsyncd.password  

格式:username:password     文件权限600 


4)配置服务启动

chkconfig rsync on 

service xinetd start   


5)检查监听的端口:873   

ss -tnl |grep 873 

2.客服端配置

1)配置密码文件/etc/rsyncd.password  

格式:password     文件权限600 


    

3.在客户端进行测试,如果需要周期性操作,则需要将命令写入crontab中      

 Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]

       rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

 Push: rsync [OPTION...] SRC... [USER@]HOST::DEST

       rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

    

图示:


配置:

wKiom1fh_tmCdkRFAABLd2aKRzQ330.png


测试:

wKioL1fh_3Wz4g-FAAA6P2dV1nU651.png








本文小耳朵原创作品,每天进步一点点:)