rsync+ Notify配置解析及步骤详解

rsync步骤配置

Rsync介绍

什么是rsync

rsync是一款开源,快速,多功能的可实现增量的本地或远程的数据镜像同步备份的优秀工具。适用于多个平台。从软件名称可以看出来是远程同步的意思(remote sync)。可使本地主机不同分区或目录之间及本地和远程两台主机之间的数据快速同步镜像,远程备份等功能。

在同步备份时,默认情况下,rsync通过其独特的“quick check”算法,仅同步大小或者最后修改时间发生变化的文件或目录(也可根据权限,属主等变化同步,需要制定参数)。甚至是只同步一个文件里变化的内容部分,所以可以实现快速的同步数据的功能。

提示:传统的cp,scp工具拷贝每次均为完整拷贝,而rsync除了完整拷贝,还具备增量拷贝的功能,因此从此性能及效率上更胜一筹。

Rsync的特性如下:

1)支持拷贝特殊文件如链接,设备等

2)可以有排除指定文件或目录同步的功能,相当于打包命令tar

3)可以保持原来文件或目录的权限,时间,软硬链接等所有属性均不改变。

4)可实现增量同步,即只同步发生变化的数据,因此数据传输效率更高

5)可以使用rcp,rsh,ssh等方式来配合传输文件,也可以通过直接的socker链接

6)支持匿名的或认证的进程模式传输,方便进行数据备份及镜像。

rsync命令格式常见的三种:

1.rsync [OPTION]... SRC DEST
2.rsync [OPTION]... SRC [[email protected]]HOST:DEST rsync
例:rsync -avz --delete /SRC -e ssh [email protected]:/DEST
需要修改端口时:
rsync -avz --delete /SRC -e "ssh -p2222" [email protected]:/DEST
3.[OPTION]... [[email protected]]HOST:SRC DEST

rsync的参数说明

-v :详细输出
-z :传输时进行压缩以提高传输效率。
-a :归档模式,表示以递归的方式传输文件,并保持文件的属性
--exclude :排除不需要同步传输的文件或者目录
--delete: 让目标目录和源目录的数据一致

Inotify介绍:

Inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件。
在上面章节中,我们讲到,rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样刚好解决了同步数据的实时性问题。

环境说明

服务类型 IP地址 应用 操作系统
源服务器 192.168.24.248 rsync inotify-tools 脚本 centos7/redhat7
目标服务器 192.168.24.129 rsync centos7/redhat7

需求

*部署rsync+inotify-tools把源服务器上的etc目录同步到目标服务器上的/linfan/目录下

在目标服务器上做以下配置

1.关闭防火墙与SELINUX

[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# systemctl disable firewalld
[[email protected] ~]# sed -ri ‘s/^(SELINUX=).*/\1disabled/g‘ /etc/sysconfig/selinux
[[email protected] ~]# getenforce 0

2.安装rsync服务端软件

[[email protected] ~]# yum -y install rsync

3.设置rsyncd.conf配置文件

[[email protected] ~]# vim /etc/rsyncd.conf  //增加以下内容
log file = /var/log/rsyncd.log //日志文件位置,启动rsync后自动产生,无需提前创建
pidfile = /var/run/rsyncd.pid //pid文件存放位置
lock file = /var/run/rsync.lock //支持max connections参数的锁文件
secrets file = /etc/rsync.pass //用户认证配置文件,里面存放用户名称和密码,必须手动创建这个文件

 [etc_from_client]  //自定义同步名称
  path = /linfan/ //rsync服务端存放路径,客户端的数据将同步到此目录
  comment = sync etc from client
  uid = root  //设置rsync运行权限为root
  gid = root   //设置rsync运行权限为root
  port = 873    //默认端口为873
  ignore errors  //表示出现错误忽视错误
  use chroot = no  //默认为true ,修改为no,增加对目录软链接的备份
  read only = no //设置rsync服务端为读写权限
  list = no  //不显示rsync服务端资源列表
  max connections = 200 //最大连接数
  timeout = 600  //设置超时时间
  auth users = admin  //执行数据同步的用户名,可以设置多个,用英文逗号隔开
  hosts allow = 192.168.24.248 //允许进行数据同步的IP地址,可以设置多个,用英文逗号隔开
  hosts deny = 192.168.24.188  ////禁止进行数据同步的IP地址,可以设置多个,用英文逗号隔开

4.创建存放路径目录

[[email protected] ~]# mkdir /linfan

5.创建用户认证文件

[[email protected] ~]# echo ‘admin:518‘ > /etc/rsync.pass
[[email protected] ~]# cat /etc/rsync.pass
admin:518 

6.设置文件权限

[[email protected] ~]# chmod 600 /etc/rsync*
[[email protected] ~]# ll /etc/rsync*
-rw-------. 1 root root 880 Aug 13 14:54 /etc/rsyncd.conf
-rw-------. 1 root root  10 Aug 13 14:55 /etc/rsync.pass

7.启动rsync服务并设置开机自启动

[[email protected] ~]# systemctl start rsyncd
[email protected] ~]# systemctl enable rsyncd
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.

在源服务器上做以下部署:

1.关闭防火墙与SELINUX

[[email protected] ~]#  systemctl stop firewalld
[[email protected] ~]# systemctl disable firewalld
[[email protected] ~]#  sed -ri ‘s/^(SELINUX=).*/\1disabled/g‘ /etc/sysconfig/selinux
[[email protected] ~]# setenforce 0 

2.配置yum源

[[email protected] ~]# cd /etc/yum.repos.d/
[[email protected] yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Bas e-163.repo
[[email protected] yum.repos.d]# sed -i ‘s/\$releasever/7/g‘ /etc/yum.repos.d/CentOS7-Base-163.repo
[[email protected] yum.repos.d]#  sed -i ‘s/^enabled=.*/enabled=1/g‘ /etc/yum.repos.d/CentOS7-Base-163.repo
[[email protected] ~]# yum -y install epel-release //安装过程略
[[email protected] ~]# yum -y update --skip-broken //升级过程略
安装rsync服务端软件,只需要安装,不要启动,不需要配置
[[email protected] ~]# yum -y install rsync

3.创建认证密码文件

[[email protected] ~]# echo ‘518‘ > /etc/rsync.pass
[[email protected] ~]# cat /etc/rsync.pass
518

4.设置文件权限,只设置文件所有者具有读取、写入的权限

[[email protected] ~]# chmod 600 /etc/rsync.pass
[[email protected] ~]# ll /etc/rsync.pass
-rw-------. 1 root root 0 Aug 13 15:46 /etc/rsync.pass

5.在源服务器上创建测试目录,然后在源服务器上运行以下命令

[[email protected] ~]# mkdir -pv /root/etc/test
rsync -avH --port 873 --progress --delete /root/etc/ [email protected]::etc_from_client --password-file=/etc/rsync.pass
sending incremental file list
./
test/

sent 69 bytes  received 22 bytes  182.00 bytes/sec
total size is 0  speedup is 0.00

6.运行完成后在目标服务器上查看,在/linfan/目录下有test目录,说明数据同步成功

[[email protected] ~]# ls /linfan
test

7.安装inotify-tools工具,实时触发rsync同步

//检查服务器内核是否支持inotify
[[email protected] ~]# ll /proc/sys/fs/inotify/
total 0
-rw-r--r--. 1 root root 0 Aug 13 16:13 max_queued_events
-rw-r--r--. 1 root root 0 Aug 13 16:13 max_user_instances
-rw-r--r--. 1 root root 0 Aug 13 16:13 max_user_watches
//如果有这三个max开头的文件则表示服务器内核支持inotify

//安装inotify-tools
[[email protected] ~]# yum -y install make gcc gcc-c++ inotify-tools   

8.写同步脚本

[[email protected] ~]# mkdir /scripts
[[email protected] ~]# touch /scripts/inotify.sh
[[email protected] ~]# chmod 755 /scripts/inotify.sh
[[email protected] ~]# ll
total 8
drwxr-xr-x. 3 root root   18 Aug 13 15:48 ad
-rw-------. 1 root root 1309 Jul 11 15:50 anaconda-ks.cfg
-rw-r--r--. 1 root root   71 Jul 18 17:16 doudou.repo
drwxr-xr-x. 3 root root   18 Aug 13 15:48 etc
[[email protected] ~]# vim /scripts/inotify.sh
 host=192.168.24.129 //目标服务器的ip(备份服务器)
src=/etc //在源服务器上所要监控的备份目标
des=etc_from_client //自定义的模块名,需要与目标服务器上的定义名称同步
password=/etc/rsync.pass //执行数据同步的密码文件
user=admin  //执行数据同步的名
inotifywait=/usr/bin/inotifywait

$inotifywait -mrq --timefmt ‘%Y%m%d %H:%M‘ --format ‘%T %w%f%e‘ -e modify,delete,create,attrib $src | while read files ; do
    rsync -avzP --delete  --timeout=100 --password-file=${password} $src [email protected]$host::$des
    echo "${files} was rsynced" >>/linfan/rsync.log 2>&1
done

9.设置脚本开机自动启动

[[email protected] ~]# chmod +x /etc/rc.d/rc.local
[[email protected] ~]# ll /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 473 Apr 11 15:36 /etc/rc.d/rc.local
[[email protected] ~]# echo ‘nohup /bin/bash /scripts/inotify.sh‘ >> /etc/rc.d/rc.local
[[email protected] ~]# tail  /etc/rc.d/rc.local
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run ‘chmod +x /etc/rc.d/rc.local‘ to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local

10.到目标服务器上查看是否把新生成的文件自动传上去了

[[email protected] linfan]# pwd
/linfan
[[email protected] linfan]# ls
etc  test

原文地址:http://blog.51cto.com/13858192/2159200

时间: 2024-10-12 17:10:20

rsync+ Notify配置解析及步骤详解的相关文章

CentOS 7.0安装配置Vsftp服务器步骤详解

安装Vsftp讲过最多的就是在centos6.x版本中了,这里小编看到有朋友写了一篇非常不错的CentOS 7.0安装配置Vsftp服务器教程,下面整理分享给各位. 一.配置防火墙,开启FTP服务器需要的端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止

197vpn配置热门pc端步骤详解

197vpn配置热门pc端步骤详解 在使用197vpn的时候会面临到各种的系统情况,不同的系统配置vpn进行使用的方法也是不同的,下面我们来看看当前热门的pc端系统中vpn是如何配置的呢? Windows 7 在画面右下角,点选网络连接,然后选择"打开网络共享中心": 在弹出的对话窗口中,选择"设置新的连接或网络": 选择"连接到工作区",然后选择"使用我的Internet连接(VPN),通过Internet使用虚拟专用网络(VPN)来

linux Mysql 主从复制 原理介绍和步骤详解

大家好,我是霸王卸甲,今天我给大家带来的是linux数据库中的主从复制的简单介绍和步骤详解. 主从复制 mysql主从复制 灵活 一主一从 主主复制 一主多从---扩展系统读取的性能,因为读是在从库读取的: 多主一从---5.7开始支持 联级复制--- 用途及条件 mysql主从复制用途 实时灾备,用于故障切换 读写分离,提供查询服务 备份,避免影响业务 主从部署必要条件: 主库开启binlog日志(设置log-bin参数) 主从server-id不同 从库服务器能连通主库 主从原理mysql主

安装MACOS操作步骤详解

安装MACOS操作步骤详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于安装MAC的操作系统其实大家都知道可以让客服帮忙提供软件上的支持,而且苹果客服都很有礼貌呢,而且非常的有耐心.特别感谢她们的帮助,让我对MAC的操作系统的好感度有了大大的提升.起初,我刚刚拿到我的本的时候是去年,因为我压根并不看好笔记本,我到现在也非常喜欢台式机,因为体验度是相当棒的,但是由于工作的原因,可能是要去出差的时候带着个台式机到处跑也不太合适,于是就决定买一个低配的笔记本.刚刚拿到笔记本第

CentOS下安装Apache步骤详解

CentOS下安装Apache步骤详解 一.实验环境 Linux: CentOS release 6.7 (Final) Apache: httpd-2.4.23.tar.gz VMware: VMware 10.0 宿主机: Win10 x64 二.Apache介绍 Apache一款 Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.它快速.可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器

JDBC连接SQL Server 2005步骤详解

一.设置SQL Server服务器:    1."开始" → "程序" → "Microsoft SQL Server 2005" → "配置工具" → "SQL Server Configuration Manager"(确认"SQL Server Management Studio"已关闭)    2."SQL Server 2005 服务"中停止服务"

PC104上配置VxWorks硬盘启动详解

DEVPC104-SYS是一款在 PC104 尺寸上开发出来的嵌入式工业主板.以其小巧的体积﹑超强的功能和稳定性,可广泛应用于自动查询系统﹑POS 机﹑网络终端﹑仪器仪表﹑信息家电.工业控制等各种嵌入式领域. VxWorks 是美国 Wind River System 公司推出的一个实时操作系统.通常所指的VxWorks操作系统对应软件包括三个部分:引导程序bootrom.主操作系统vxWorks.以及用户开发程序.Tornado提供一个集成的编译bootrom.vxWorks以及用户程序的工程

MySQL Server 5.0–安装及配置/MySQLInstanceConfig.exe用法详解

MySQL Server 5.0–安装及配置/MySQLInstanceConfig.exe用法详解 http://blog.csdn.net/feihong247/article/details/7791105 配置MySQL步骤: 1.       运行MySQL Server安装目录下bin/MySQLInstanceConfig.exe.出现如下所示的向导界面 . 点击"Next"进入下一步. 2.       如果MySQLInstanceConfig在MySQL Serve

虚拟机VMware下安装Red Hat Linux 9.0步骤详解

注意:本安装全部是在虚拟机上进行的,用的是ISO镜像文件安装. 1.安装完VMware  Workstation后,启动VMware  Workstation,新建一个虚拟机,其主界面如下图. 2.VMware  Workstation的配置 VMware  Workstation安装完毕后,利用它可以建立多个虚拟机,每新建一个虚拟机,就会要求你建立一个配置文件.这个配置文件实际上相当于新电脑的"硬件配置",你可以在配置文件中决定虚拟机的硬盘如何配置,内存多大,准备运行哪种操作系统,是