• Linux 之 inotify+rsync 备份文件系统


    一、需求

      1.线上有不同的机房,并且每个机房所对公网开放端口不一样。

      2.A机房中的a机器是台文件服务器,需要备份到B机房中的b机器,以及C机房中的c机器。

      3.并且保持实时同步。只要a上面的文件有改动,立即同步到b、c机器

    二、方案

      1.同步方面,使用的软件是rsync。要保持实时同步,用到inotify程序来检测文件变化,进行同步操作。

      拓扑图如下

      如上图所示,下面介绍的是数据服务器,即数据源的rsync安装以及配置,之后会介绍clinet1的安装与配置(clinent2配置同client1即可)。

    三.实施

    • 数据源服务器配置及安装
      1.安装rsync,创建目录
      [root@py ~]# yum -y install rsync xinetd
      [root@py ~]# useradd rsync -s /sbin/nologin
      [root@py ~]# mkdir /tmp/testback
      [root@py ~]# chown rsync.rsync /tmp/testback
      [root@py ~]# ll -d /tmp/backup/

      解释:第1行,安装rsync,默认系统会自带,安装升级一下,xinetd这个服务需要安装。第2行添加一个用于同步的用户,给予不让登陆系统的权限。第3行,创建一个数据源目录,用于同步时,将此下面的文件同步给其它主机。第4行,修改属组和属主为新建的rsync用户。

      2.编辑rsync配置文件,vim /etc/rsyncd.conf, 该文件默认不存在,需要新建,添加以下内容

      uid = rsync
      gid = rsync
      use chroot = no
      max connections = 5
      timeout = 300
      pid file = /var/run/rsyncd.pid
      lock file = /var/run/rsync.lock
      log file = /var/log/rsyncd.log
      [backup]
      path = /tmp/testback
      ignore errors
      read only = false
      list = false
      hosts allow = 110.12.32.25123.34.23.78
      hosts deny = 0.0.0.0/32
      auth users = rsync_backup
      secrets file = /etc/rsync.passwd

      解释:上面是服务配置,uid、gid、以及是否可以切换目录为no;最大连接数为5个客户端;日志文件存放位置;[backup] 为rsync同步的模块名字,该名字可以起个有意义的。在服务中,相对应代表的是path的路径。hosts allow 只允许某个或某些主机,auth users 使用的是虚拟用户。最后1行指定用于rsync认证的文件存放的位置。

      3.创建密码文件

      [root@py ~]# echo “kalashitiaogou.2016” > /etc/rsync.passwd
      [root@py ~]# chod 600 /etc/rsync.passwd

      在源服务器上,密码文件的内容只需要存放密码即可,client必须要用户名:密码 这样的格式。另外修改改密码文件的权限。

      4.修改xinetd服务下的rsync,将disable = no

      service rsync
      {
              disable = no
              flags           = IPv6
              socket_type     = stream
              wait            = no
              user            = root
              server          = /usr/bin/rsync
              server_args     = --daemon --config=/etc/rsyncd.conf
              log_on_failure  += USERID
      }

      解释:此文件只需要修改2处. 第1,将disable = yes 修改成 disable = no;第2,修改 server_args 为 --daemon --config=/etc/rsyncd.conf。使用我们设置的配置文件来启动rsync服务
      以上步骤修改完成后,重启rsync服务,并检查rsync 是否运行在873端口。

      [root@py ~]# /etc/init.d/xinetd restart
      [root@py ~]# netstat -lntup | grep :873
    • 备份服务器client1的安装与配置
      1.安装rsync、xinetd,并添加rsync系统账号,以及创建同步文件存放的目录,并将属主属组修改rsync
      [root@client1 ~]# yum -y install rsync xinetd
      [root@client1 ~]# useradd rsync -s /sbin/nologin
      [root@client1 ~]# mkdir -p /tmp/testback/
      [root@client1 ~]# chown rsync.rsync /tmp/testback

    • 2.创建密码文件

      [root@client ~]# echo “rsync_backup:kalashitiaogou.2016” > /etc/rsync.passwd
      [root@client ~]# chmod 600 /etc/rsync.passwd

       解释:此处不同的是密码文件里存放着是用户名:密码的对应。

      3.编辑/etc/rsyncd.conf

      uid = rsync
      gid = rsync
      use chroot = no
      max connections = 5
      timeout = 300
      pid file = /var/run/rsyncd.pid
      lock file = /var/run/rsync.lock
      log file = /var/log/rsyncd.log
      [backup]
      path = /tmp/testback/
      ignore errors
      read only = false
      list = false
      hosts allow = 104.23.45.17/32
      hosts deny = 0.0.0.0/32
      auth users = rsync_backup
      secrets file = /etc/rsync.passwd

      上述文件和源服务器的配置相差无几,仅仅是host allow 有区别,其它一致。另外模块名[backup] 以及path 路径在clinet 可以根据自己使用的场景进行自定义。

      4.由于应用的环境不一样,客户端的端口仅可以使用80端口,这里我们需要修改下clinet1的rsync监听端口。编辑/etc/services,找到rsync 修改如下。

      [root@client1 ~]# vim /etc/services
      
      rsync        80/tcp
      rsync        80/udp


      5.修改/etc/xinetd.d/rsync,将disable 的值改为no,并以--daemon 运行,如下所示:

      service rsync
      {
              disable = no
              flags           = IPv6
              socket_type     = stream
              wait            = no
              user            = root
              server          = /usr/bin/rsync
              server_args     = --daemon --config=/etc/rsyncd.conf
              log_on_failure  += USERID
      }

      重启服务,并检查rsync 端口监听是否在我们修改后的80端口上

      [root@client1 ~]# /etc/init.d/xinetd restart
      [root@client1 ~]# netstat -aultnp | grep xinetd
    • 备份服务器client2的安装与配置
      1.与client1的安装步骤保持一致。使用同样方式配置client2即可。


    • 测试环节:在数据源服务器上执行以下同步操作,之后去检查客户端模块中对应的path目录下是否有同样的文件。
      [root@py ~]# rsync -avz test.txt --port=80 rsync_backup@110.12.32.25::backup --password-file=/etc/rsync.passwd
      
      [root@py ~]# rsync -avz test.txt --port=80 rsync_backup@123.34.23.78::backup --password-file=/etc/rsync.passwd
  • 相关阅读:
    win10安装jmeter配置环境路径
    genymotion在mac上的安装
    jmeter的启动
    win10的cmd输入javac的问题
    01 | 你真的懂测试吗?从“用户登录”测试谈起 茹炳晟
    冒烟测试
    软件测试基础知识
    红队指南--第3章 列举
    REDTEAM 指南---第四章 外部侦察
    Red Team 指南-第1章 红队和红队概述
  • 原文地址:https://www.cnblogs.com/hanyifeng/p/5127631.html
Copyright © 2020-2023  润新知