实时同步脚本1
inotify+rsync;基于用户密码认证实现实时同步
rsync脚本
#!/bin/bash
#1、安装
rpm -ql rsync >/dev/null && echo -e "已有rsync" || yum install -y rsync
#2、修改配置文件
cat >> /etc/rsync.cof << EOF
uid=root
gid=root
use chroot=no
max connections=0
ignore errors
exclude=lost+found/
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
reverse lookup=no
hosts allow=192.168.100.0/24
[backup]
path=/backup
comment=backup
read only=no
auth users=rsyncuser
secrets file=/etc/rsync.pass
EOF
#3、生产验证码
echo "rsyncuser:123456" > /etc/rsync.pass
#4、修改文件权限
chmod 600 /etc/rsync.pass
#5、准备备份的路径
mkdir /data/www
#6、启动rsync
systemctl start rsyncd >/dev/null && echo -e "服务启动成功" || echo "启动失败,请检查"
echo -e "到此,rsync的服务器端已经准备完成"
inotify脚本
#!/bin/bash
#客户端的准备工作,需要安装inotify-tools实时监控文件
#1、安装inotify-tools
rpm -ql inotify-tools >/dev/null && echo -e "有了" || yum install -y inotify-tools
#2、准备密码文件,并修改权限
echo "123456" > /etc/rsync.pass && chmod 600 /etc/rsync.pass
#3、准备实时同步脚本
cat > /root/inotify-rsync.sh << EOF
#!/bin/bash
SRC='/data/'
DEST='rsyncuser@192.168.100.3::backup'
inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE
TIME DIR FILE;do
FILEPATH=${DIR}${FILE}
rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync"
>> /var/log/changelist.log
done
EOF
#4、执行脚本,将其放置后台执行,关闭当前会话窗口,程序依然可以执行
nohup bash /root/inotify_rsync.sh &
秒级别查看某个文件的变化:watch -n1 ls -l PATH