rsync基础及基本使用

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安装及应用

    实验拓扑

wKiom1ZBWILBvdyBAABexzfB2Xo107.png

    步骤

    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


你可能感兴趣的:(rsync)