rsync+inotify实现数据实时同步
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync+inotify实现数据实时同步相关的知识,希望对你有一定的参考价值。
一、rsync
(一)、rsync简介
rsync是Linux和Unix下一款远程数据同步工具,rsync第一次会把数据全量同步到远端服务器,之后会对比两个文件的不同,传输差异文件,实现增量同步
优点:安全性高、备份迅速,使用同步算法,只同步有变化的文件 备份文件保持原有文件的属性软硬连接,且支持排除备份等
缺点:在数据同步之前需要扫描所有的文件进行对比才能进行差异化同步,如果同步文件达到百万级或者千万级,扫描文件同步将变得非常的耗时,降低了同步的效率
(二)、rsync基本命令介绍(1V4)
rsync是一个强大的命令,他可以同时实现复制,删除,查看,远程同步等功能
1. rsync==cp
[email protected] test]# rsync -a aa.txt aa.txt.bak
[[email protected] test]# ls
aa.txt aa.txt.bak
2、 rsync==scp
[[email protected] test]# rsync -rp /test/ 10.0.0.41:/test/
[email protected]‘s password:
3 、rsync==rm
[[email protected] test]# mkdir /null
[[email protected] test]# rsync -r --delete /null/ /test/
[[email protected] test]# ls
4、 rsync==ls
[[email protected] test]# rsync /etc/hosts
-rw-r--r-- 352 2018/09/15 01:51:11 hosts
(三)、rsync工作方式
1、本地备份方式
语法:Local: rsync [OPTION...] SRC... [DEST]
练习:[[email protected] test]# rsync -a /etc/hosts /tmp/hosts.bak
???[[email protected] test]# ll /tmp/hosts.bak
???-rw-r--r-- 1 root root 352 Sep 15 01:51 /tmp/hosts.bak
2、远程数据备份方式
语法:
Pull: rsync [OPTION...] [[email protected]]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [[email protected]]HOST:DEST
练习:[[email protected] test]# rsync -avz /backup/ [email protected]:/backup/
[email protected]‘s password:
sending incremental file list
./sent 1703 bytes received 333 bytes 370.18 bytes/sec
total size is 1622 speedup is 0.80
- 小提示:如果不指定user信息表示以当前用户进行登陆
3、守护进程传输模式
语法:
Pull: rsync [OPTION...] [[email protected]]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[[email protected]]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [[email protected]]HOST::DEST
rsync [OPTION...] SRC... rsync://[[email protected]]HOST[:PORT]/DEST
- 小提示:这里的SRC与远程传输方式不同,这里的指的是模块信息
守护进程方式部署流程
一、服务端部署流程
1)检查软件是否安装
[[email protected] ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
2)编写配置文件(注意默认是没有的,需要手动创建)[[email protected] ~]# vim /etc/rsyncd.conf
#rsync_config
#created by HQ at 2017
##rsyncd.conf start##
uid = rsync
gid = rsync
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
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = jiang
secrets file = /etc/rsync.password
[backup]
comment = "practice and use"
path = /backup
~
-- INSERT --
配置参数详细说明
配置参数 | 说明 |
---|---|
uid = rsync | 指定rsync服务运行的时候,向磁盘进行读取和写入操作的操作者 |
gid = rsync | 指定rsync服务运行的时候,向磁盘进行读取和写入操作的操作组 |
use chroot = no | 进行数据同步存储时,安全相关参数,默认内网进行数据同步,可以关闭 |
max connections = 200 | 定义向备份服务器进行数据存储的并发连接数 |
timeout = 300 | 定义与备份服务器建立的网络连接,在多长时间没有数据传输时,就释放连接 |
pid file = /var/run/rsyncd.pid | 服务程序运行时,会将进程的pid信息存储到一个指定的pid文件中 |
lock file = /var/run/rsync.lock | 定义锁文件,主要用于配合max connections 参数,当达到最大连接就禁止继续访问 |
log file = /var/log/rsyncd.log | 定义服务的日志文件保存路径信息 |
[backup] | 指定备份目录的模块名称信息 |
path = /backup | 指定数据进行备份的目录信息 |
ignore errors | 在进行数据备份传输过程过程中,忽略一些I/O产生的传输错误 |
list = false | 确认是否可以将服务配置的模块信息,在客户端可以查看显示 |
hosts allow = 172.16.1.0/24 | 设置备份目录允许进行网络数据备份的主机地址或网段信息,即设置白名单 |
hosts deny = 0.0.0.0/32 | 设置备份目录禁止进行网络数据备份的主机地址或网段信息,即设置黑名单 |
auth users = jiang | 指定访问备份数据目录的认证用户信息,为虚拟定义的用户,不需要进行创建 |
secrets file = /etc/rsync.password | 设置访问备份数据目录进行认证用户的密码文件信息,会在文件中设置认证用户密码信息 |
3)、创建备份服务管理用户
useradd rsync -M -s /sbin/nologin
4)创建备份目录
mkdir /backup
chown -R rsync.rsync /backup
5)创建认证文件
echo "jiang:jiang123" >>/etc/rsync.password
chmod 600 /etc/rsync.password
6)启动rsync服务
rsync --daemon
二、客户端部署流程
1)确认软件是否安装
[[email protected] ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
2)创建认证密码文件
echo "jiang" >>/etc/rsync.password
chmod 600 /etc/rsync.password
3)、进行数据备份测试
[[email protected] tmp]# rsync -avz /etc/hosts [email protected]::backup --password-file=/etc/rsync.password
sending incremental file list
hosts
二、利用inotify实现实时同步
(一)、inotify简介
Inotify 是一个 Linux 内核特性,它监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如删除、读、写和卸载操作等。要使用 inotify,必须具备一台带有 2.6.13 或更新内核的 Linux 机器
(二)、实时同步概念
一、为什么要使用实时同步
- 因为定时任务有缺陷,一分钟以内的数据无法进行同步,容易造成数据丢失
二、实时同步的工作原理
1、 创建要存储数据的目录
2、 利用实时同步的软件监控我们进行备份的数据目录
3、 利用rsync服务进行数据推送传输备份(三)、实时同步软件部署
1)、安装inotify软件
yum install -y inotify-tools
2)、编写实时同步的脚本
#!/bin/bash
####################
inotifywait -mrq --format "%w%f" -e create,delete,moved_to,close_write /data|
while read line
do
rsync -az --delete /data/ [email protected]::backup --password-file=/etc/rsync.password
done
说明:在编写同步脚本之前需要保证rsyc守护进程方式同步正常(四)、inotify命令说明
inotifywait
-m|--monitor 始终保持事件监听状态
-r 进行递归监控
-q|--quiet 将无用的输出信息,不进行显示
--timefmt <fmt> 设定日期的格式
man strftime 获取更多时间参数信息
--format <fmt> 命令执行过程中,输出的信息格式
-e 指定监控的事件信息
man inotifywait 查看所有参数说明和所有可以监控的事件信息
总结主要用到的事件信息:
create创建、delete删除、moved_to移入、close_write修改
以上是关于rsync+inotify实现数据实时同步的主要内容,如果未能解决你的问题,请参考以下文章