Categories: 分布式
Rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多
Rsync
下载
官网:https://download.samba.org/pub/rsync/
本地下载:rsync-3.1.3.tar.gz
安装
注:需要gcc环境,开启873端口
yum -y install gcc
解压压缩包,进入rsync文件夹,执行
./configure
make && make install
查看安装路径
whereis rsync
创建conf文件
vi /etc/rsyncd.conf (删掉注释)
uid=root
gid=root
uid = root
max connections = 200
timeout = 300
pid file = /etc/rsyncd.pid
log file = /etc/rsyncd.log
[www]
path = /usr/local/tmp/
read only = false
ignore errors
hosts allow = 192.168.0.0 //允许同步的ip
auth users = root //开启验证,同步时需要密码
secrets file = /etc/rsyncd.secrets //验证文件,内容格式 root:123456
创建secrets文件
vi /etc/rsyncd.secrets
root:123456
创建pass文件
vi /etc/rsyncd.pass
123456
启动rsync
/usr/local/bin/rsync --daemon --config=/etc/rsyncd.conf
关闭rsync
pkill rsync
推送
rsync -auv --progress /usr/local/tmp/ root@192.168.0.1::www
//普通同步,如被同步端开启验证则需要输入密码,且@前用户名需要与被同步端一致
rsync -auv --progress /usr/local/tmp/ root@192.168.0.1::www --password-file=/etc/rsyncd.pass
//文件验证同步,使用pwd文件进行验证,无需输入密码,但rsyncd.pass只包含一个密码,所以@前用户名和密码与被同步端一致
关于conf、secrets、pass文件说明,A服务器将文件推送到B服务器,B服务器需要有conf、secrets文件并且开启rsync,A服务器需要有pass文件无需开启rsync,然后A服务器执行同步命令即可推送
如果两台服务器需要双向同步,则都拥有三个文件,并开启rsync,再使用inotify监控文件
常见错误:链接
Inotify
下载
inotify-tools主要作用是监控文件变化,并在文件变化时调用rsync同步文件
git下载地址:https://github.com/rvoicilas/inotify-tools/wiki#getting
本地下载:inotify-tools-3.14.tar.gz
安装
解压压缩包,进入inotify文件夹,执行
./configure
make && make install
创建脚本inotify.sh
vim inotify.sh
#!/bin/bash
src=/usr/local/tmp/
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src | while read file
do
rsync -auv --progress /usr/local/tmp/ root@192.168.0.1::www --password-file=/etc/rsyncd.pass
echo " ${file} was rsynced" >>/etc/rsyncd.log 2>&1
done
启动脚本
nohup ./inotify.sh &
查看inotifywait线程,kill关闭