## Rsync搭建
### 1.1 环境准备
```
Rsync-Server 192.168.1.174
Client-Rsync 192.168.1.173
服务启动用户都是root,客户端的用户也是root
[root@Rsync-Server file]# systemctl stop firewalld
[root@Rsync-Server file]# getenforce
Permissive
```
### 1.1 检查是否安装rsync
```
[root@Rsync-Server ~]# rpm -qa|grep rsync
#如果没有安装Rsync
[root@Rsync-Server ~]# yum install -y rsync
``` ### 1.2 服务端配置Rsync
```
[root@Rsync-Server ~]# cat /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
[file]
path = /data/file/
ignore errors
read only = false
list = false
hosts allow = 192.168.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_file
secrets file = /etc/rsync.password
[root@Rsync-Server ~]# cat /etc/rsync.password
rsync_file:123456
[root@Rsync-Server ~]# ll /etc/rsync.password
-rw-------. 1 root root 18 Oct 19 11:37 /etc/rsync.password
``` ### 1.3 Rsync启动脚本
```
[root@Rsync-Server file]# cat /etc/init.d/rsyncd
#!/bin/bash
. /etc/init.d/functions start() {
rsync --daemon &>/dev/null
if [ $? = 0 ];then
action "startting rsync" /bin/true
else
action "startting rsync" /bin/false
fi
} stop() {
if [ -e /var/run/rsyncd.pid ];then
kill -9 `cat /var/run/rsyncd.pid` &>/dev/null
rm -fr /var/run/rsyncd.pid /var/run/rsync.lock
action "stopping rsync" /bin/true
else
echo "the rsyncd is not running"
fi
} status() {
if [ -e "/var/run/rsyncd.pid" ];then
echo -e "\033[32m rsyncd is running... \033[0m"
else
echo -e "\033[31m rsyncd is stopped \033[0m"
fi
} restart() {
stop
start
} case $1 in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
restart
;;
*)
echo "USAG: $0 {start|stop|status|restart}"
esac
"Centos7用systemctl管理Rsync"
[root@Rsync-Server ~]# cat /usr/lib/systemd/system/rsyncd.service
[Unit]
Description=fast remote file copy program daemon
ConditionPathExists=/etc/rsyncd.conf [Service]
EnvironmentFile=/etc/sysconfig/rsyncd
Type=forking
PIDFile=/var/run/rsyncd.pid
ExecStart=/etc/init.d/rsyncd start
ExecReload=/etc/init.d/rsyncd restart
ExecStop=/etc/init.d/rsyncd stop
PrivateTmp=true [Install]
WantedBy=multi-user.target
``` ### 1.4 Rsync客户端
```
[root@Client-Rsync ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@Client-Rsync ~]# yum install -y inotify-tools rsync
[root@Client-Rsync ~]# cat /etc/rsync.password
123456
#测试一下rsync推送是否有问题
[root@Client-Rsync ~]# touch /data/file/ceshi_Test
[root@Client-Rsync ~]# rsync -avz /data/file/ rsync_file@192.168.1.174::file --password-file=/etc/rsync.password
sending incremental file list
./
ceshi_Test sent 172 bytes received 46 bytes 436.00 bytes/sec
total size is 0 speedup is 0.00
没有报错证明rsync推送成功,参数说明:
-v 详细模式输出,给出传输进度等信息
-z 压缩传输 --compress-level=NUM 指定压缩级别 1-9,9是最大压缩级别
-a 以归档方式传输,保留文件属性
-r 递归传输
-t 保持文件时间信息
-o 保持文件属主信息
-p 保持文件权限
-g 保持文件属组信息
-P 显示同步过程及进度等信息
-D 保持设备文件信息
-l 保持软链接
这些参数加起来等于 –a
--exclude=PATTERN 指定排除不需要传输的文件
--exclude-from=FILE 排除FILE中记录的文件
--delete 保证两边数据完全一样,如果源里没有该文件,就在目标目录删除
``` ### 1.5 配合inotify-tools
```
[root@Client-Rsync ~]# cat inotify.sh
#!/bin/bash
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create,close_write,modify,move,attrib /data/file/ \
|while read file
do
rsync -avz /data/file/ rsync_file@192.168.1.174::file --password-file=/etc/rsync.password
done
inotifywait参数详解:
-m 是保持一直监听
-r 是递归查看目录
-q 是打印出事件
-e modify,delete,create,attrib 是指"监听 创建 移动 删除 写入权限"
#启动测试
[root@Client-Rsync ~]# nohup sh inotify.sh &
``` ### 优化
```
如果实际并发较大,可以适当的把inotify简单优化下:
ls -l /proc/sys/fs/inotify/
echo "50000000" > /proc/sys/fs/inotify/max_user_watches 加大单进程最大的文件监视数量
echo "50000000" > /proc/sys/fs/inotify/max_queued_events 加大队列可容纳的事件数量
```

  

Rsync+inotify搭建使用的更多相关文章

  1. Rsync+Inotify 搭建实时同步数据

    1.安装软件包 # yum install inotify-tools # yum -y install rsync 2.同步机器相互添加信任 [root@host-10-0-100-106 ~]# ...

  2. lsyncd实时同步搭建指南——取代rsync+inotify

    1. 几大实时同步工具比较 1.1 inotify + rsync 最近一直在寻求生产服务服务器上的同步替代方案,原先使用的是inotify + rsync,但随着文件数量的增大到100W+,目录下的 ...

  3. CentOS7 Rsync服务搭建-Rsync+Inotify架构实现实时同步

    一.rsync 概念 1.rsyncrsync是类unix/linux系统下的数据镜像备份工具.使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主机同 ...

  4. 通过rsync+inotify实现数据实时备份同步

    一.环境描述 测试环境 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 环境描述: 主服务器172.26.7.50 ,从 ...

  5. rsync+inotify实现服务器数据同步

    一.什么是rsync rsync,remote synchronize是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限.时间.软硬链接等附加信息.rsync是用 “rsync算 ...

  6. rsync+inotify实现服务器之间文件实时同步--转

    之前做了“ssh信任与scp自动传输脚本”的技术文档,此方案是作为公司里备份的方法,但在实际的运行中,由于主服务器在给备份服务器传输的时候,我们的主服务器需要备份的文件是实时.不停的产生的,造成不知道 ...

  7. sersync基于rsync+inotify实现数据实时同步

    一.环境描述 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 主服务器A:192.168.1.23 从服务器B:192. ...

  8. rsync + inotify 实时同步

    1. 前言 2 台 nginx 需要做集群, 静态文件和php文件都在nginx服务器本地. 有三种方案: (1)NFS (2)Rsync + inotify (3)共享存储服务器 第一种:当 nfs ...

  9. centos 配置rsync+inotify数据实时同步2

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

随机推荐

  1. 谈Apache OFbiz 会员模块表结构设计

    数据库表的结构设计可谓是ofbiz除技术框架之外,另一个非常值得学习的方向.这篇文章我们来谈谈ofbiz对电子商务会员表的设计. PARTY ofbiz对人.团体进行了抽象,称之为party,翻译为中 ...

  2. spring,get请求中带date日期格式参数,后台无法转换的问题

    今天遇到个很奇怪的问题.前端 的查询条件中带有日期范围日期的格式 是 yyyy-MM-dd HH:mm 结果后台报错 org.springframework.validation.BindExcept ...

  3. redis-Nosql

    Nosql: CAP:C(Consistency):强一致性.A(Availability):可用性.P(Partitio Tolerance):分区容错性 CAP 理论的核心是: 一个分布式系统,不 ...

  4. iOS10、Chrome、微信7.0无法定位

    问题 ​ 在做一个项目的时候,需要使用高德地图进行定位,测试的时候没有问题,在微信中打开的时候,无法进行定位,进过查询资料,得知微信升级7.0做了安全限制,然后使用http的定位不能正常使用,有这种限 ...

  5. VMware新加网卡NAT连接(内网)出现本机与虚拟机ping不通的问题

    今新加网卡NAT连接,配置好之后始终出现eth1:link is not ready. 虚拟机与本机不能建立连接. 解决方案:windows里面打开服务开启VMware NAT Service,并关闭 ...

  6. python面向对象--类和实例的认识

    '''1.数据属性 2.函数属性''' #创建一个类class Chinese: "这是一个中国人的类" #类属性 money=4000 #注意类和对象均用点来访问自己的属性 de ...

  7. 使用C#解析XMIND文件格式

    static void Main(string[] args) { var tempPath = @"c:\Temp"; if (Directory.Exists(tempPath ...

  8. Intellij IDEA 插件开发秘籍

    来这里找志同道合的小伙伴! 这里总结一下 Intellij IDEA 插件开发的知识,供大家参考,本篇文章包含以下内容: 开发环境搭建 Component 介绍 Extension Point And ...

  9. thinkphp 模板变量输出替换和赋值

    一.变量输出的几个方法 <?php namespace app\index\controller; use http\Params; use think\Config; use think\Co ...

  10. JAVA泛型通配符T,E,K,V区别,T以及Class<T>,Class<?>的区别

    1. 先解释下泛型概念 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛 ...