rsync+inotify同步備份

系統內核要求2.6.13以上

目標服務器,rsync服務端配置,也就是被同步到的服務器

uname -r    //查看系統內核版本
yum -y install rsync
vi /etc/rsyncd.conf
	uid = rsync
	gid = rsync
	max connections = 200
	pid file = /var/run/rsyncd.pid
	log file = /var/log/rsyncd.log
	lock file = /var/run/rsyncd.lock
	timeout = 900
	read only = false
	[redis_dump]
	path = /data/redis_dump.bak/
	hosts allow = 192.168.88.130
	hosts deny = *         //先允許再拒絕
	secrets file = /etc/rsync.pass
	auth users = rsync
	read only = no
	fake super = yes       //新版本需要這個參數,否則無法同步
echo "rsync:123456" > /etc/rsync.pass
chmod 600 /etc/rsync.pass    //權限一定爲600,否則同步是沒有權限
chown -R rsync:rsync redis_dump.bak    //備份目錄屬主和屬組一定要是rsync配置文件中指定的用戶
systemctl start rsyncd

源服務器,rsync客戶端,也就是被同步的服務器

yum provides inotifywait
yum -y install inotify-tools-3.14-9.el7.x86_64
vi /data/inotify_bak.sh
	#!/bin/bash
	src=/data/redis_dump/
	pass=/etc/rsync.pass
	/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src |while  read files;do
    rsync -avH --port 873 --progress --delete $src [email protected]::redis_dump --password-file=$pass
    echo "${files} was rsynced" >> /tmp/rsync.log 2>&1
    done
chmod +x /data/inotify_bak.sh
echo "123456" > /etc/rsync.pass     //認證用戶的密碼
chmod 600 /etc/rsync.pass
nohup sh /data/inotify_bak.sh &

然後再源服務器創建一些文件測試一下,再到目標服務器看看有沒有被同步過去

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章