rsync+inotify实时同步备份数据

rsync同步

rsync+inotify实时同步备份数据

软件简介:

rsync命令简介:

rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。
rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个
算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync
是一个功能非常强大的工具,其命令也有很多功能特色选项,
来自: rsync命令

rsync [OPTION] SRC [USER@]HOST::DEST
rsync命令的选项:
  -a, archive 存档模式,等同于-rlptgoD (no -H,-A,-X)
  -u, update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件。
  -z, compress 压缩传送
  -R, relative 使用相对路径信息。
   –timeout=time ip超时时间,单位为秒。
  –delete 删除那些DST中SRC没有的文件。

Inotify命令简介:

Inotify是一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,
可以监控文件系统的访问属性、读写属性、权限属性、删除创建、移动等操作,也就是可以监
控文件发生的一切变化。
来自: inotifywait命令

inotifywait  [OPTION…][ … ]
  -m 是要持续监视变化。
  -r 使用递归形式监视目录。
  -q 减少冗余信息,只打印出需要的信息。
  -e 指定要监视的事件列表。

关于rsync和Inotify更多详细信息可以查看命令手册;
也可以参考Linux命令大全,


1477615117373128.png

1. 安装配置rsync

1.1. yum安装软件rsync

# 软件安装
# 检查执行结果:rpm -aq rsync
yum install -y rsync

# 添加用户
# 检查执行结果:id rsync
useradd rsync -s /sbin/nologin  -M

# 创建目录并修改属主
# 检查执行结果:ll /mydata/rsync
mkdir -p /mydata/rsync
chown -R rsync: /mydata/rsync

1.2. rsync配置

cp /etc/rsyncd.conf{,.bak}
cat <<EOF > /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode

uid = rsync
gid = rsync

use chroot = no
max connections = 100
pid file = /var/run/rsyncd.pid
transfer logging = yes
log file = /var/log/rsyncd.log
exclude = lost+found/
timeout = 900
ignore nonreadable = yes
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

[work]
      path = /mydata/rsync
      ignore errors
      read only = false
      list = false
      hosts allow = 10.10.20.0/24
      hosts deny = 0.0.0.0/0
      auth users = rsync_backup
      secrets file = /etc/rsynd.passwd

EOF

1.3. 虚拟用户secrets file

echo "rsync_backup:123456" > /etc/rsynd.passwd
chmod 600 /etc/rsynd.passwd

1.4. 启动rsync服务

systemctl start rsyncd

↑↑↑↑↑ On IP 10.10.20.79 ↑↑↑↑↑


↓↓↓↓↓ On IP 10.10.20.71 ↓↓↓↓↓↓

1.5. 测试rsync服务的同步功能

# 创建同步账户密码文件,仅需要密码,无须用户名
echo '123456' > /etc/rsync.passwd
# 提权
chmod 600 /etc/rsync.passwd
# 创建同步目录和测试文件
mkdir /mydata/rsync
echo 'just a test from IP 10.10.20.71' > /mydata/rsync/test

rsync -avz --password-file=/etc/rsync.passwd /mydata/rsync/ rsync_backup@10.10.20.79::work

2. 安装配置inotify

2.1. 下载软件

# 从网上下载程序,要求安装git
git clone https://github.com/rvoicilas/inotify-tools.git  /mydata/inotify-tools.git
# 编译安装inotify-tools
cd /mydata/inotify-tools.git
./autogen.sh 
# 编译三部曲
./configure --prefix=/usr/local/inotify
make && make install

2.2. 直接上脚本:

cat <<'EOF' > ~/bin/inotify.sh
#!/usr/bin/env bash
# -*- coding: utf-8 -*-
#
# Author: jacky18676887374@aliyun.com QQ 18676887374
# date: 20161027-10:05:20
# Vervion: 0.0.1
# Synopsis: COMAND
# 
# inotifywait COMMAND
Inotify="/usr/local/inotify/bin/inotifywait"
# inotifywait OPTION
Option_I='-mrq -e move,modify,delete,create,attrib'
# rsync OPTION
Option_R='-auz --delete --timeout=100  --password-file=/etc/rsync.passwd'
# rsync DEST
Dest='rsync_backup@10.10.20.79::work'
# backup file, inotify file; rsync SRC
Src="/mydata/rsync/"
#
########## judge ##########
if [ ! -e "$Src" ] \
|| [ ! -e "${Option_R##*=}" ] \
|| [ ! -e "${Inotify}" ] \
|| [ ! -e "/usr/bin/rsync" ];then
    echo "Check File and Folder"
    exit 9
fi
########## main ##########
$Inotify ${Option_I} $Src | while read file
    do
        rsync ${Option_R} $Src $Dest &> /dev/null
    done
exit 0
EOF

2.3. 修改执行权限并后台执行

chmod u+x ~/bin/inotify.sh
~/bin/inotify.sh &

原创文章,作者:昭其,如若转载,请注明出处:http://www.178linux.com/55125

(1)
上一篇 2016-10-28 08:36
下一篇 2016-10-28 09:07

相关推荐

  • DNS资源记录类型

      资源记录   资源记录(Resource Records),简称RRs。是指每个域所包含的与之相关的资源。例如,每个RR都包括这个域的所属(RR是从哪个域名中得到的),类型(什么样的资源存在于这个RR中),TTL(time to live,存活时间)等等。 DNS包括七大资源记录 A记录:也称为主机记录,是DNS名称到IP地址的映射,用于正向解…

    Linux干货 2017-02-08
  • Bash的&&,||逻辑运算

    Bash的&&,||逻辑运算 bash里的true和false并不是我们通常所认为的0和1。 true和false是shell的内置命令,返回逻辑值。 $?是一个特殊的变量,存放有上一个程序的结束状态。 在shell里面,把0作为程序是否成功结束的标志。 例如: $ true$ echo$?0$ false$ echo$?1 有时候,下一条命…

    Linux干货 2016-04-11
  • iptables

    iptables 包过滤型的防火墙 Firewall:防火墙,隔离工具;工作于主机或网络边缘,对于进出本主机或本网络的报文根据事先定义的检查规则作匹配检测,对于能够被规则匹配到的报文作出相应处理的组件; 主机防火墙网络防火墙 软件防火墙(软件逻辑)硬件防火墙(硬件和软件逻辑) 版本 ipfw (firewall framework):命令行工具,生成规则并送…

    Linux干货 2017-06-13
  • N25-第五周

    一.显示当前系统上root、fedora或user1用户的默认shell;    [root@localhost ~]# useradd fedora && useradd user1 && grep "^\(root\|fedora\|user1\)" /etc/passwd | cu…

    Linux干货 2017-01-09
  • Python基础篇之过程型程序设计

    一、Python过程型程序设计 面向过程 以指令为中心,由指令处理数据 如何组织代码解码问题 面向对象 以数据为中心,所有的处理代码都围绕数据展开 如何设计数据结构组织数据,并提供对此类数据所允许处理操作 简单方法: 1)、编译安装新版本至某特定路径 # yum install readline-devel # tar xf Python-2.7.6.tar…

    2018-01-11
  • linux下逻辑卷管理LVM

    LVM:逻辑卷管理 LVM这个技术就是把底层的存储设备组成一个卷组,底层存储设备的存储空间会变成一个个PE(盘区,大小为2的n次方),这个卷组里就是一个个的PE,然后,这个卷组会重新分区,这些分区就为逻辑卷,这些逻辑卷都是由卷组里分配的PE组成。 关于LVM里的命令: pv的命令: pvcreate pvs pvdisplay pvscan pvremove…

    Linux干货 2015-08-04