zoukankan      html  css  js  c++  java
  • CentOS 7 rsync

    CentOS 7 rsync


    1)软件简介

    Rsync 是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件。Rsync 本来是用以取代rcp 的一个工具,它当前由 Rsync.samba.org 维护。Rsync 使用所谓的“Rsync 演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。运行 Rsync server 的机器也叫 backup server,一个 Rsync server 可同时备份多个 client 的数据;也可以多个Rsync server 备份一个 client 的数据。

    Rsync 可以搭配 rsh 或 ssh 甚至使用 daemon 模式。Rsync server 会打开一个873的服务通道(port),等待对方 Rsync 连接。连接时,Rsync server 会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。

    Rsync 支持大多数的类 Unix 系统,无论是 Linux、Solaris 还是 BSD 上都经过了良好的测试。此外,它在windows 平台下也有相应的版本,比较知名的有 cwRsync 和 Sync2NAS。

    Rsync 的基本特点如下:

    可以镜像保存整个目录树和文件系统;
    可以很容易做到保持原来文件的权限、时间、软硬链接等;
    无须特殊权限即可安装;
    优化的流程,文件传输效率高;
    可以使用 rcp、ssh 等方式来传输文件,当然也可以通过直接的 socket 连接;
    支持匿名传输。


    2)核心算法

    假定在名为 α 和 β 的两台计算机之间同步相似的文件 A 与 B,其中 α 对文件A拥有访问权,β 对文件 B 拥有访问权。并且假定主机 α 与 β 之间的网络带宽很小。那么 Rsync 算法将通过下面的五个步骤来完成:

    β 将文件 B 分割成一组不重叠的固定大小为 S 字节的数据块。最后一块可能会比 S 小。
    β 对每一个分割好的数据块执行两种校验:一种是32位的滚动弱校验,另一种是128位的 MD4 强校验。
    β 将这些校验结果发给 α。
    α 通过搜索文件 A 的所有大小为 S 的数据块(偏移量可以任选,不一定非要是 S 的倍数),来寻找与文件B 的某一块有着相同的弱校验码和强校验码的数据块。这项工作可以借助滚动校验的特性很快完成。
    α 发给 β 一串指令来生成文件 A 在 β 上的备份。这里的每一条指令要么是对文件 B 经拥有某一个数据块而不须重传的证明,要么是一个数据块,这个数据块肯定是没有与文件 B 的任何一个数据块匹配上的。


    3配置管理

    1 关闭selinux

    临时关闭 setenforce 0

    永久关闭 $vi /etc/sysconfig/selinux
    SELINUX=disabled


    2 安装rsync 系统自带

    开机启动 systemctl enable rsyncd


    3 配置服务端
    $ vi /etc/rsyncd.conf

    # /etc/rsyncd: configuration file for rsync daemon mode
    
    # See rsyncd.conf man page for more options.
    
    # configuration example:
    
    uid = root
    gid = root
    use chroot = no
    max connections = 2
    strict modes = yes
    port = 873
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log
    
    [hadoop]
    path = /opt/hadoop/etc/hadoop/ # 数据存放位置
    comment = HADOOP
    read only = yes
    list = no
    auth users = hadoop #与系统用户无关
    secrets file = /etc/rsyncd.secret
    #hosts allow = 192.168.6.1 #设置允许访问的客户端多个客户端用空格隔开
    #hosts deny = * #设置不允许访问的黑名单
    [zookeeper] #这里相当于一个区分符,如果要同步多个文件夹就在这里区分
    path = /opt/zookeeper/conf #数据存放位置
    comment = ZOOKEEPER
    auth users = hadoop
    secrets file = /etc/rsyncd.secrets #存放rsync密码的文件
    read only = no
    list = no

     

    配置rsync密码(在上边的配置文件中已经写好路径)/etc/rsyncd.secrets(名字随便写,只要和上边配置文件里的一致即可),格式(一行一个用户)
    $ vi /etc/rsyncd.secrets

    hadoop:hadoop # 用户:密码
    hadoop1:hadoop1

    配置rsync密码文件权限

    chown root.root /etc/rsyncd.secrets
    chmod 600 /etc/rsyncd.secrets

    4 启动 验证

    $ systemctl start rsyncd

    $ netstat -apn | grep rsync
    tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2688/rsync
    tcp6 0 0 :::873 :::* LISTEN 2688/rsync

     5 客户端配置

    1 配置三个过程就可以了
    1.1 设定密码文件
    1.2 测试rsync执行指令
    1.3 将rsync指令放入周期任务(crontab)

    设定密码文件
    $ vi /etc/rsyncd.secrets
    hadoop #这里只需要写密码

    $ chown root:root /etc/rsyncd.secrets # 注意必须给权限
    $ chmod 600 /etc/rsyncd.secrets # 必须修改权限

    测试rsync执行指令

    上传 rsync -avz --password-file=/etc/rsyncd.secrets /opt/hadoop/etc/hadoo hadoop@namenode::hadoop 
    下载 rsync -avz --progress --delete --password-file=/etc/rsyncd.secrets hadoop@namenode::hadoop /opt/hadoop/etc/hadoop

    rsync的参数的说明:
    -a 相当于 -rlptgoD 的集合
    -u 等同于 –update,在目标文件比源文件新的情况下不更新
    -v 显示同步的文件
    –progress 显示文件同步时的百分比进度、传输速率

    --delete 如果源目标系统中不存在 , 同步系统中的文件将被删除

    将rsync指令放入周期任务(crontab)

  • 相关阅读:
    关于IDEA2019.3在书写pom依赖坐标无法自动提示补全的问题
    vue props的接收格式
    axios请求添加请求头 标准写法
    VUE后台管理系统建立
    arguments
    表单验证规则
    <<>> html内显示
    vue_UI组件库vant之加载转圈
    vue_axios请求拦截器
    vue_js数字有效长度16位_超出的解决办法
  • 原文地址:https://www.cnblogs.com/zhangeamon/p/5724910.html
Copyright © 2011-2022 走看看