IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Centos下Rsync镜像备份搬迁数据 [服务器模式]

    零下发表于 2017-05-26 07:32:05
    love 0

    Rsync (remote sync)是一款开源、快速,多功能、可实现增量的本地或远程数据镜像同步备份优秀工具。它可通过 LAN/WAN 快速同步多台主机间的文件。

    RSYNC的特性:
    1、支持拷贝特殊文件如链接、设备等。
    2、可以有排除制定文件或目录同步的功能,相当于打包命令tar。
    3、可以做到保持原来文件或目录的权限、时间、软硬连接等所有属性均不改变。
    4、可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高。
    5、可以使用rcp,rsh,ssh等方式配合传输文件,也可以通过直接的socket连接。
    6、支持匿名的或认证的进程模式传输,方便进行数据备份及镜像
    7、优化的流程,文件传输效率高

    RSYNC工作模式:
    Rsync有四种工作模式,具体如下:
    1、列表模式
    和ls -l相似,负责列出源的内容。不仅可以看本地还可以看远端。
    2、shell模式,也称为本地模式
    和cp相似,本地拷贝文件
    3、远程shell模式,可以通过通过rcp,ssh等通道传输
    和rcp相似,不过可以实现增量备份,并且能够通过安全的ssh方式进行数据传输。
    4、服务器模式
    在这种模式下,rsync守护进程在一台机器上永久运行,接收文件传输请求。可以把文件发送给守护进程,也可以向它请求文件。
    服务器模式非常适合创建中心备份服务器或项目存储库

    安装rsync
    先检查系统有没有安装: rpm -qa rsync
    如有返回,则系统已经安装过.
    安装rsync有两种方式 .一种是yum安装,另一种是编译安装
    yum安装:

    yum install -y rsync
    

    rsyncd.conf 文件中 [module] 之前的所有参数为全局参数,也可以在全局参数部分定义模块参数。在这种情况下该参数的值就是所有模块的默认值。
    rsyncd.conf文件详解:

    uid = rsync    # 指定的模块传输文件时所用的用户身份
    gid = rsync    # 指定的site模块传输文件时所用的用户组身份
    port=873       # 默认端口
    use chroot = no # 默认为true,修改为no,增加对目录文件软连接的备份
    max connections = 200  # 指定最大并发连接数以保护服务器,超过限制的连接请求将被告知随后再试。默认值为 0,即没有限制
    timeout = 300          # 服务器会话的超时时间
    pid file = /var/run/rsyncd.pid   # 进程启动后,进程号存放路径
    lock file = /var/run/rsyncd.lock # 服务启动、停止会用到锁文件
    log file = /var/log/rsyncd.log   # 指定日志文件的路径
    Log fromat = %h %o %f %l %b      # 指定日志记录的格式
    motd file = /etc/rsyncd.motd     # 登陆消息提示文件,可以不配置。默认为空。
    [test]         # 模块名称,名称可以任意写,不过一般是以路径命名,最好见名意
    Comment = test # 模块信息描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义
    path=/test/    # 指定供备份的目录路径,必须指定该参数。该目录路径是rsync服务端的一个路径,提供给客户端上传或下载
    ignore erros   # 忽略错误
    read only = false  # 设定是否允许客户上载文件。若为 true 任何上载请求均会失败,若为 false 且客户端拥有服务器目录读写权限则可以上载。默认值为 true 。
    write only 设定是否允许客户下载文件。若为 true 任何下载请求均会失败,默认值为 false 。
    list = false       # 设定当客户请求可以使用的模块列表时,是否列出该模块。若为 false,则创建隐藏的模块。默认值为 true
    hosts allow=192.168.137.0/24  # 指定允许客户连接的 IP 地址。可以为单个 IP 地址或整个网段。多个 IP 或网段需要以空格隔开。默认是允许所有主机连接。
    hosts deny=*   # 指定拒绝连接的客户IP地址,设置方式和hosts allow相同。
    Dont commpress # 指定不进行压缩处理即可传输的文件,默认值是 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
    auth users = rsync_backup  # 该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户不一定是客户端存在的用户。如果"auth users"被设置,那么客户端发出对该模块的连接请求时,需要对用户身份进行验证。用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块 ( 也就是匿名方式 )。
    secrets file = /etc/rsync.password # 虚拟用户的密码文件
    exclude = common/   # 用来指定多个由空格隔开的多个文件或目录 ( 相对路径 ),并将其添加到 exclude 列表中。这等同于在客户端命令中使用 --exclude 参数。一个模块只能指定一个 exclude 选项。但是需要注意的一点是该选项有一定的安全性问题,客户端很有可能绕过 exclude 列表,如果希望确保特定的文件不能被访问,那就最好结合 uid/gid 选项一起使用。
    pre-xfer exec, post-xfer exec  # 设置可在文件传输前/后执行的命令。若在文件传输前执行的命令失败,则取消本次传输操作
    

    下面,就配置rsync服务端跟客户端:
    环境:
    rsync_server :192.168.1.34 centos6.5
    rsync_client:192.168.1.35 centos6.5

    一.RSYNC 服务端部署:
    1、安装rsync,并且配置服务端主配置文件

    [root@localhost ~]# yum install rsync -y
    [root@localhost ~]# vim /etc/rsyncd.conf
    #注:yum安装后/etc目录下没有rsyncd.conf ,我们就手动添加它!
    uid = root
    gid = root
    use chroot = no
    max connections = 200
    timeout = 300
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log
    ignore errors
    read only = false
    list = false
    hosts allow = 192.168.1.0/24
    hosts deny = *
    auth users = rsync
    secrets file = /etc/rsync.password
    [sunsky]
    path = /test
    

    2、创建 rsync.password 作为用户密码文件

    [root@localhost rsync]# touch /etc/rsync.password
    [root@localhost rsync]# chmod 600 /etc/rsync.password 
    [root@localhost rsync]# vi /etc/rsync.password 
    [root@localhost rsync]# cat /etc/rsync.password 
    rsync:123456
    

    3.创建模块中指定的文件

    [root@localhost ~]# mkdir /test
    [root@localhost ~]# chown root:root /test   #更改目录的权限为rsyncd.conf中uid和gid指定属主和属組
    

    4、以守护进程方式启动 rsync

    [root@localhost ~]#/usr/bin/rsync --daemon  --config=/etc/rsyncd.conf  
    #注意如果你的rsyncd.conf文件在/etc/目录下,就不需要再用--config去指定了。--daemon是以守护进程的方式启动
    

    可以将上面的命令写入 /etc/rc.local 中,这样当系统启动时,就会自动以守护进程的方式去运行 rsync

    重启rsync的组合命令

    [root@localhost ~]# pkill rsync  #关闭rsync服务
    [root@localhost ~]# rsync --daemon #启动rsync服务
    [root@localhost ~]# ps -ef | grep rsync   #检查是否启动
    

    5、检查服务状态

    lsof -i:873 
    或者:
    netstat -lntup |grep 873
    

    手动启动rsync的常见参数:

    [root@rsync-server ~]# rsync --daemon   # daemon 表示以守护进程的方式启动rsync服务
    常用启动参数:
    --daemon   # 表示以守护进程的方式启动rsync服务
    --address  # 绑定指定ip地址提供服务,即服务器是多网卡模式或多虚拟IP模式,需要指定某个固定ip提供服务
    --config=FILE  # 更改配置文件路径,而不去使用默认的/etc/rsyncd.conf
    --port=PORT    # 更改其它端口提供服务,而不去使用模式的873端口。
    

    以上即为rsync服务端的整个配置步骤了!
    RSYNC 服务端已经部署完毕,接下来如果要使用的话,肯定还需要搭配 rsync 客户端才行!下面就来看,rsync客户端怎么部署!

    二.RSYNC 客户端部署
    RSYNC 客户端部署起来非常简单,我们仅仅需要安装 rsync 软件,然后创建一个本地密码文件。该密码文件为对应rsync 服务端配置文件里面每个模块下面的虚拟用户的密码,以此来实现免密码同步!

    1. 安装rsync: yum install -y rsync
    2、配置本地密码文件: vi /etc/rsync.password
    #添加服务端的密码就行了

    [root@localhost ~]# cat /etc/rsync.password 
    123456
    

    到此,服务端跟客户端都配置完成!

    实例:

    第一种格式:
    拉取:
    rsync -avzP rsync@192.168.1.34::sunsky /test/ --password-file=/etc/rsync.password
    推送:
    rsync -avzP /test/ rsync@192.168.1.34::sunsky --password-file=/etc/rsync.password
    
    第二种格式:
    拉取:
    rsync -avzP rsync://rsync@192.168.1.34:/sunsky/ /test/ --password-file=/etc/rsync.password
    推送:
    rsync -avzP /test/ rsync://rsync@192.168.1.34:/sunsky/ --password-file=/etc/rsync.password
    

    远程shell模式实例:

    [root@localhost ~]# rsync -avz /opt/backup/ root@192.168.1.35:/opt
    


沪ICP备19023445号-2号
友情链接