• linux 同步 rsync的使用——远程服务器同步配置


    一、背景介绍

      由于需要和其他系统进行对接。文件的逻辑地址通过接口传递,而文件的实体需要通过服务器间的同步进行传输。在同事的建议下选择了rsync。

    二、RSYNC介绍

     RSYNC 有多种方式进行同步,本篇文章主要叙述的是其中,两种远程服务器的同步配置。(在客户端 注意命令中“:” 冒号的个数)

    要了解更多关于rsync的内容,请跳转到 http://man.linuxde.net/rsync 阅读相关文档。

    三、实际操作

    3.1 确认机器是否安装rsync  

    3.2 配置rsync的文件

    以下是本次配置中rsyncd.conf的内容:

     1  uid = root         
     2  gid = root
     3  use chroot = no
     4  max connections = 2000
     5  port = 8973
     6  timeout = 900
     7  log file = /var/run/rsyncd.log
     8  pid file = /var/run/rsyncd.pid
     9  lock file = /var/run/rsyncd.lock
    10  log format = %t%a%m%f%b
    11  commemt = rsync
    12  list = yes
    13  read only = yes                   
    14  write only = no                     
    15  auth users = apprsync   
    16  secrets file = /etc/rsyncd.secret     
    17  ignore errors = yes
    18  hosts allow = 172.21.5.164
    19  
    20 ###########################之上是全局定义 之下是模块单独定义
    21 [rsyncvideo]
    22 path = /app/nas/video
    23 [rsyncimage]
    24 path = /app/nas/image
    25  

    3.2.1全局定义(直接配置请跳过本段)

      在rsync 服务器中,全局定义有几个比较关健的,根据我们前面所给的配置文件 rsyncd.conf 文件;

      pid file = /var/run/rsyncd.pid   注:告诉进程写到 /var/run/rsyncd.pid 文件中;
      port = 873  注:指定运行端口,默认是873,可以自己指定;本次这里选择了8973(在之后的客户端请求会有不一样的地方)
      uid = nobody   
      gid = nobdoy  

      注:服务器端传输文件时,要发哪个用户和用户组来执行,默认是nobody。 如果用nobody 用户和用户组,可能遇到权限问题,有些文件从服务器上拉不下来。所以我就偷懒,为了方便,用了root 。不过可以在定义要同步的目录时定义的模块中指定用户来解决权限的问题。

      use chroot = yes 

      注: 安全相关,默认为true,修改为no,增加对目录文件软连接的备份

      read only = yes 

      注:read only 是只读选择,也就是说,不让客户端上传文件到服务器上。还有一个 write only选项, # no客户端可下载文件,yes不能下载;

      max connections = 5   

      注:客户端最多连接数

      log file = /var/log/rsync.log

      注:rsync 服务器的日志;

      log format = %t %a %m %f %b
          注 日志格式  

           timeout = 300

          注 超期时间

          auth users = apprsync 

          注 执行数据同步的用户名,可以设置多个,用英文状态下逗号隔开(此处是使用模块同步时使用到的用户名与ssh不一样)。

      #limit access to private LANs

      hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0 

      注:可以指定单个IP,也可以指定整个网段,能提高安全性。格式是ip 与ip 之间、ip和网段之间、网段和网段之间要用空格隔开;

    3.2.2 局部配置(直接配置请跳过本段)

    由于需要同步两个不同的文件夹,所以在此处配置两个模块分别定义为 rsyncvideo 和 rsyncimage,也就是同步图片和视频的两个文件夹分别指向两个不同的地址。

    3.3 创建为模块同步方式的用户和密码

    我们在之前配置的时候 写入了 

    1  auth users = apprsync   
    2  secrets file = /etc/rsyncd.secret 

    因此我们要在 指定的路径(/etc/rsyncd.secret) 建立一个指定的用户(apprsync)即可 密码设置为123456.注意此处 需要把该文件的权限设置为600。

    3.4 创建为 ssh同步方式的用户和密码

    由于我们这篇文章主要是讲解实现了两种同步方式。两个可以并存和单独使用。

    创建用户

    sudo useradd -d "/home/apprsync" -m -s "/bin/bash" apprsync

    设置密码
    passwd apprsync;(敲完这个命令之后两次输出)

    3.5启动rsync守护进程,并写入开机自启动

    设置开机自启动,写入到/etc/rc.local里面

    vim /etc/rc.local

    1 # rsync server progress
    2 /usr/bin/rsync --daemon --config=/etc/rsyncd.conf

    3.6 两种不同的客户端同步命令

    3.6.1使用模块同步

    同步模块rsyncimage中的内容 

    在之前配置的 

     hosts allow = 172.21.5.164 这台目标机器中

    输入命令  rsync -avz --delete --port 8973 apprsync@172.21.5.163::rsyncimage /usr/local/image 

    同步模块rsyncvideo中的内容 ,与上面相似

    3.6.2 使用SSH同步

    在之前配置的 

     hosts allow = 172.21.5.164 这台目标机器中

    输入命令

    rsync -avz --delete apprsync@172.21.5.163:/app/nas/video /usr/local/test

    注意 此处并没有指定端口 同时少了一个冒号 并且指定了想要同步的目标地址

    其中中间一次是我弄出一个错误  在模块同步的时候输入了ssh用户的密码 所以导致了认证失败。

    由此,两种方式的同步就到此完毕。

    四、可能遇到的问题

    请不要把两种同步方式弄混了。主要是认证与路径的问题。

    路径最后要注意不要有空格,否则会导致找不到对应的路径。

  • 相关阅读:
    GeoServer源码解析和扩展 (三)结构篇
    GeoServer源码解析和扩展 (一)基础篇
    开放GIS标准OGC之路(4)之 解密Filter
    开放GIS标准OGC之路(3)之 WFS初探
    养成重构的习惯有多重要
    使用GeoTools遇到的两个小问题:nvarchar类型字段无法识别,主键字段无法识别
    OGC之路(1) 之 WMS标准学习总结
    移动端flex布局
    推一把随机回帖模块
    用htmlparser来获取你想要的内容
  • 原文地址:https://www.cnblogs.com/iceworld520/p/9186840.html
Copyright © 2020-2023  润新知