rsync实现服务器的文件同步


参考文献链接:

一、rsync实现负载均衡集群文件同步,搭建线上测试部署环境

二、rsync

三、rsync常见错误

四、rsync 安装使用详解


环境部署:

  服务器1:192.168.1.169,作为客户端

  服务器2:192.168.1.167,作为服务端

  实现功能:每当169服务器中的文件发生改变时,就同步到167服务器中。


服务端配置(即167服务器的配置):

(1)软件安装
yum install rsync xinetd
(2)为 rsyncd 服务编辑配置文件,默认没有,需自己编辑
vim /etc/rsyncd.conf
写入以下内容:
uid = root
gid = root
use chroot = no
max connections = 5
timeout = 600
pid file = /var/run/rsyncd.pid
lockfile = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[web1]
path = /usr/local/nginx/html/hello/
ignore errors = yes
read only = no
write only = no
hosts allow = 192.168.1.169
hosts deny = *
list = yes
auth users = web
secrets file = /etc/web.passwd
(3)创建文件同步的目录,上面配置里的path,如果有就不用创建了
mkdir /usr/local/nginx/html/hello/
(4)创建配置中的密码文件,并增加权限:
echo "web:123" > /etc/web.passwd
chmod 600 /etc/web.passwd
(5)重新启动
service xinetd restart


客户端配置(即169服务器的配置):

(1)安装软件
yum -y install rsync
(2)创建web目录
mkdir /usr/local/nginx/html/hello/
(3)设置密码并设置权限
echo "123"> /tmp/rsync.password
chmod 600 /tmp/rsync.password

(4)关闭防火墙:service iptables stop。


在客户端测试(即169服务器):
rsync -avzP --delete --password-file=/tmp/rsync.password /usr/local/nginx/html/hello/ web@192.168.1.167::web1

如果看到文件同步过去表示成功。


数据实时同步:
  环境:Rsync + Inotify-tools。

  下载安装

  wget https://jaist.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz
  tar -zxvf inotify-tools-3.13.tar.gz
  mkdir /usr/local/inotify
  cd inotify-tools-3.13
  ./configure --prefix=/usr/local/inotify/
  make && make install

设置环境变量

  vim /etc/profile
  在末尾增加一行:
  export PATH=$PATH:/usr/local/inotify/bin
  使配置生效:
  source /etc/profile

echo '/usr/local/inotify/lib' >> /etc/ld.so.conf --加载库文件
ldconfig
ln -s /usr/local/inotify/include /usr/include/inotify


测试脚本:

创建shell文件:
vim /test.sh
输入以下内容:

#!/bin/bash

src=/usr/local/nginx/html/hello/
user=web
host1=192.168.1.167
dst1=web1
passpath=/tmp/rsync.password /usr/local/inotify/bin/inotifywait \
-mrq --timefmt '%d/%m/%y' \
--format '%T %w%f%e' \
-e modify,delete,create,attrib \
/usr/local/nginx/html/hello/ | while read files
do
rsync -vzrtopg --delete --progress --passfile=$passfile-path $src $user@$host1::$dst1
echo "${files} was rsyncd" >>/tmp/rsync.log >&
done

设置自动运行:

chmod 755 /data/test/test.sh
/data/test/test.sh &
echo '/data/test/test.sh &' >> /etc/rc.local --设置开机自启


扩展知识:

  查看已安装的软件包
    yum list rsync
  卸载rsync
    yum remove rsync

  常见错误:    

    问题一:
      rsync: failed to set times on “directory” Operation not permitted (1)
      解决:
        请检查/etc/rsyncd.conf这个配置文件是否正确。

    问题二:

      @ERROR: auth failed on module web
      rsync error: error starting client-server protocol (code 5) at main.c(1657) [Receiver=3.1.3]
      原因:
        服务器端该模块(web)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败。
        提供正确的用户名密码解决此问题。

    问题三:

      inotifywait: error while loading shared libraries: libinotifytools.so.0: cannot open shared object

      [root@db zzh]# ll /proc/sys/fs/inotify (如果有下列三项则支持inotifytools)
      total 0
      -rw-r--r-- 1 root root 0 Sep 20 16:52 max_queued_events
      -rw-r--r-- 1 root root 0 Sep 20 16:52 max_user_instances
      -rw-r--r-- 1 root root 0 Sep 20 16:52 max_user_watches

      解决:
      [root@db zzh]# ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0

    问题四:

      wile read 命令未找到

      解决:

        检出sh文件,或重新编写。

rsync配置文件说明:

uid = root #--rsync运行权限为root
gid = root #--rsync运行权限为root
use chroot = no #--是否让进程离开工作目录
max connections = 5 #--最大并发连接数,0为不限制
timeout = 600 #--超时时间
pid file = /var/run/rsyncd.pid #--指定rsync的pid存放路径
lockfile = /var/run/rsyncd.lock #--指定rsync的锁文件存放路径
log file = /var/log/rsyncd.log #--指定rsync的日志存放路径
[web1] #--模块名称
path = /data/test/src #--该模块存放文件的基础路径
ignore errors = yes #--忽略一些无关的I/O错误
read only = no #--客户端可以上传
write only = no #--客户端可以下载
hosts allow = 192.168.8.167 #--允许连接的客户端主机ip
hosts deny = * #--黑名单,*表示任何主机
list = yes
auth users = web #--认证此模块的用户名
secrets file = /etc/web.passwd #--指定存放“用户名:密码”格式的文件


Linux 之 rsync实现服务器的文件同步的更多相关文章

  1. 使用inotify+rsync实现服务器间文件同步

      1. rsync 1.1 什么是rsync   rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.它使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到 ...

  2. rsync+sersync+inotify实现服务器间文件同步之一

    rsync+sersync+inotify实现服务器间文件同步之一:rsync安装配置 2013年12月14日 ⁄ Linux管理, 服务器集群技术 ⁄ 共 4925字 ⁄ rsync+sersync ...

  3. Linux下Rsync+sersync实现数据实时同步

    inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一. ...

  4. Linux下Rsync+Inotify-tools实现数据实时同步

    Linux下Rsync+Inotify-tools实现数据实时同步 注意:下面的三个案例都是rsync 每次都是全量的同步(这就坑爹了),而且 file列表是循环形式触发rsync ,等于有10个文件 ...

  5. linux使用rsync+inotify-tools+ssh实现文件实时同步

    假设某服务器架构中有两台web服务器(IP为192.168.1.252和192.168.1.254),一台代码更新发布服务器(IP为192.168.1.251),需要同步的目录是/data/www/, ...

  6. Sersync+Rsync实现触发式文件同步

    背景 通常我们在服务器上使用rsync加上crontab来定时地完成一些同步.备份文件的任务.随着业务和应用需求的不断扩大.实时性要求越来越高.一般rsync是通过校验所有文件后,进行差量同步,如果文 ...

  7. cwRsync window下的跨服务器的文件同步

    cwRsync 是window下的文件同步软件,可以跨服务器运行,第一次运行的时候是全部备份同步,之后的同步采用的是增量同步 这个软件分为服务端和客户端. 服务器是需要同步的文件源, 客户端相当于是备 ...

  8. Linux使用rsync客户端与服务端同步目录进行备份

    一.服务端设置 1. 修改 server 端配置 # vi /etc/rsyncd.conf 修改: uid = nobody # 该选项指定当该模块传输文件时守护进程应该具有的uid.默认值为&qu ...

  9. [sersync+rsync] centos6.5 远程文件同步部署记录

    针对本地文件的修改,自动同步到远程文件夹,远程备份很方面.研究了下大家的主流同步方案一般是 rsync+inotify和rsync+sersync, 我这里使用sersync的方案,当然大部分都是参照 ...

随机推荐

  1. python元组的相对不可变性

    元组与多数python集合(列表.字典.集,等等)一样,保存的是对象的引用.如果引用的元素是可变的,即便元组本身不可变,但是元素依然可变.也就是说元组的不可变性其实是指tuple数据结构的物理内容(即 ...

  2. Python爬虫系列-分析Ajax请求并抓取今日头条街拍图片

    1.抓取索引页内容 利用requests请求目标站点,得到索引网页HTML代码,返回结果. 2.抓取详情页内容 解析返回结果,得到详情页的链接,并进一步抓取详情页的信息. 3.下载图片与保存数据库 将 ...

  3. 02Qt信号与槽(1)

    信号与槽 1.概述 ​ 信号和槽机制是 Qt 的核心机制,信号和槽是一种高级接口,应用于对象之间的通信,它是 Qt 的核心特性,也是 Qt 区别于其他工具包的重要地方.信号和槽是 Qt 自行定义的一种 ...

  4. 2-python基础

    1.第一个程序 新建一个python文件,然后写上代码,运行即可 print("hello world") 2.变量 变量就是存东西,供后面来用的 变量名只能是 字母.数字或下划线 ...

  5. Laravel核心解读--Console内核

    Console内核 上一篇文章我们介绍了Laravel的HTTP内核,详细概述了网络请求从进入应用到应用处理完请求返回HTTP响应整个生命周期中HTTP内核是如何调动Laravel各个核心组件来完成任 ...

  6. 前端MVVM模式及其在Vue和React中的体现

    MVVM相关概念 Mvvm 前端数据流框架精讲 1) MVVM典型特点是有四个概念:Model.View.ViewModel.绑定器.MVVM可以是单向绑定也可以是双向绑定甚至是不绑定 2) 绑定器: ...

  7. Applied Nonparametric Statistics-lec7

    Ref: https://onlinecourses.science.psu.edu/stat464/print/book/export/html/9 经过前面的步骤,我们已经可以判断几个样本之间是否 ...

  8. leetcode-5-basic

    解题思路: 设两个变量land和sink,land的值是1的数量,sink表示内部的边.result = land*4-sink*2.按行扫描得到land, 同时得到同一行中内部边的数目:然后按列扫描 ...

  9. python基础之文件处理总结

    读文件: with open('contacts.txt', 'r', encoding='utf-8') as f: data = f.read() 二进制模式读 使用场景:网络传输(视频.图片或进 ...

  10. ASCII码表含义

    在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a.b.c.d这样的52个字母(包括大写)以及0.1等数字还有一些常用的符号(例如*.#. ...