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命令大全,

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

