1、rsync同步工具
1.1、rsync介绍
rsync(remote sync)是unix系统下的数据镜像备份工具,也是一款快速增量备份工具,支持远程同步、本地复制等功能。而且rsync不但传输速度快,而且在传输时,可以实现差异备份,也就是仅如果服务器端和客户端之间数据不一致时,仅复制不同的部分。
1.1.1、特点:
可以镜像保存整个目录树或文件系统
有较高的文件传输效率
可以借助于ssh实现安全数据传输
支持匿名数据传输
1.1.2、rsync工作模式
本机上直接运行,类似cp工具shell模式(本地模式)
使用rsh或ssh上实现服务器端与客户端之间数据传输(远程shell模式,可利用ssh协议承载其远程传输过程
列表模式,仅列出源中的内容,而不复制(-nv)
服务器模式,此时rsync工作为守护进程。能够接收客户端的数据传输请求,而且在同步时可以把客户端的数据同步给服务器端,也可以反过来
1.1.3、同步方式
基于某种算法,也叫rsync算法,实现去检查你的源和目标之间两个文件是否有不同之处,如果有,仅去发送不同的文件,相同的就不做复制,所以是快速同步工具
1.1.4、缺点
传输过程是不加密的(但是他能借助ssh实现传输加密)
1.2、rsync命令常用选项
-n:测试同步,但是实际上不做同步
-v:详细输出模式
-q:静默模式,不显示信息
-c:checksum,开启校验功能
-r:递归复制
注释:这里需要注意个地方,如果你复制的文件最后没有“/”,那么他复制的就是目录名,如果有的话,他复制的里面的所有文件
-a:归档,保留文件的原有属性
-p:保留文件的权限
-t:保留文件的时间戳
-l:保留符号链接
-g:保留属组
-o:保留属主
-D:保留设备文件
-e ssh:使用ssh作为传输承载
-z:压缩后传输
--progress:显示进度条
--stats:显示如何执行压缩和传输
用法示例: [root@localhost~]# rsync -r --stats -e ssh --progress /etc/pam.d [email protected]:/tmp/
1.3、服务器模式
1.3.1、服务
rsync工作于服务器模式时,rsync自身并不监听,因为他是瞬时守护进程,需要借助于超级守护进程(xinetd)
1.3.2、配置文件
如果rsync需要工作起来,将自己本地某个目录存储块共享出去,还需要提供额外的配置文件。但此配置文件rsync并是没有提供。虽然没有提供直接的配置文件,但是在它安装目录下有一个叫rsyncd.conf.5.gz的文件,这个文件就是rsync的帮助手册。我们可以根据里面的帮助信息,自我编写相应的配置文件
1.3.3、服务配置文件格式
rsync配置文件分两段:
注释:主要定义有哪些共享,每一个共享都是类似Samba一样用[]来定义
全局配置段:通常只有一个
共享配置段:可以有多个
例如:[SHARE_NAME] #定义共享名 #有点类似Samba
1.3.4、rsync所监听的端口
rsync所监听的端口是 873
1.3.5、rsync命令格式
Access via rsync daemon:
#从远端服务器拉去数据 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
示例:使用客户端执行下面的命令(向远端服务器推送数据)
①
[root@localhost ~]# rsync /etc/fstab 192.168.1.187::tools
注释:这里是明确定义推送到哪个共享名即可
②
[root@localhost ~]# rsync /etc/fstab rsync://192.168.1.187/tools
示例:使用客户端执行下面的命令(从远端服务器拉去数据到本地)
注释:前提是你的tools指定的共享盘是有数据的
①
[root@localhost ~]# rsync -a 192.168.1.187::tools/ ./ [root@localhost tmp]# rsync -a 192.168.1.187::tools/Local.repo ./ #拉取单个文件
②
[root@localhost tmp]# rsync -a rsync://192.168.1.187/tools/fstab ./
1.3.6、实验:实现rsync安装及应用
实验拓扑
步骤
1、想启动rsync服务,先安装超级守护进程
[root@rsyncserver ~]# yum install xinetd #安装超级守护进程
2、设置开机自动启动
[root@rsyncserver xinetd.d]# chkconfig xinetd on
3、安装rsync
[root@rsyncServer xinetd.d]# yum install rsync -y
4、查看超级守护进程下自动生成的rsync服务
[root@rsyncserver xinetd.d]# vim /etc/xinetd.d/rsync service rsync { disable = no # 这里改为no,就表示启用起来了 flags = IPv6 socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID
5、创建共享目录
[root@rsyncServer xinetd.d]# mkdir /data
6、编辑配置文件/etc/rsyncd.conf(此文件是自己新建,系统不会自动生成)
[root@rsyncServer xinetd.d]# vim /etc/rsyncd.conf
# Global Settings uid = nobody gid = nobody use chroot = no #要不要启用chroot功能 max connections = 10 #最大并发连接数 strict modes = yes #是否启用严格检查权限,用户是否允许上传下载 pid file = /var/run/rsync.pid log file = /var/log/rsyncd.log # Directory to be synced [tools] path = /data#共享文件所存放的地方 ignore error = yes #传输中如果有文件发生错误了怎么办,yes表示忽略 read only = no #是否是只读 write only = no #是不是只写,让别人不能看 hosts allow = 192.168.1.0/24 #允许哪些主机来实现数据同步(白名单) hosts deny = * #如果他匹配到上面的,那么就直接通过,如果没有,表示拒绝所有 list = false #是否允许列出所有 true/false uid = root gid = root #这里的uid和gid和上面的不同,这里的意思是这个共享目录是以什么身份运行的。如果此处比写,将会继承上面的
7、启动服务
[root@rsyncserver xinetd.d]# service xinetd star
8、使用Linux客户端测试连接
[root@localhost ~]# rsync /etc/fstab 192.168.1.187::tools
注释:如果连接不成功,请查看是否开启了防火墙
1.3.7、实验:服务器端启用用户认证的功能
我们知道使用IP地址访问授权既不方便也不安全,所以解决办法就是给用户授权。
介绍
1、首先要添加认证参数,就是在共享定义处添加配置 [tools]添加两项参数
auth users = USERNAME LIST #允许哪个用户,要写具体的名字,此用户必须是你的 password存在的用户
Secrets file = /etc/rsynce.passwd #密码文件路径,需要自己创建
说明:USERNAME LIST以逗号分隔的再rsyncd.passwd中存在用户名的列表
2、创建密码文件/etc/rsyncd.passwd #这个密码文件有特殊的权限要求,必须是600
格式:
username:password
注释:内容是明文的,所以要做好文件权限控制
示例:
1、编辑rsyncd.conf配置文件,添加用户认证参数
[root@rsyncserver data]# vim /etc/rsyncd.conf auth users = tom, jerry secrets file = /etc/rsyncd.passwd
2、创建rsync密码文件及创建用户账号密码
[root@rsyncserver data]# vim /etc/rsyncd.passwd wqp:pangxie windchaser:pangxie
3、修改权限
[root@rsyncserver data]# chmod 600 /etc/rsyncd.passwd
4、重启xinetd服务
[root@rsyncserver data]# service xinetd restart
5、使用客户端测试
[root@localhost ~]# rsync /etc/fstab [email protected]::tools