rsync 和 inotify 结合
我们知道 rsync 可以实现推送和拉取,而 inotify-tools 借助内核的 inotify 机制实现了文件的 实时监控。因此,借助这个思路,我们可以通过使用 shell 脚本,调整 inotifywait 的输出格式, 然后借助 inotifywait 的监控文件或目录实时变化去通知 rsync 做相应的推送或者拉取操作! 实时备份脚本
[root@rsync-client-inotify ~]# cat auto_rsync.sh
src1='/data/web/redhat.sx/'
src2='/data/web_data/redhat.sx/'
des1=web
des2=data
host1=172.16.100.1
host2=172.16.100.1
user=rsync_backup
allrsync='/usr/bin/rsync -rpgovz --delete --progress'
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w %w
%f %e' -e modify,delete,create,attr
ib $src | while read DATE TIME DIR FILE EVENT;
do
case $DIR in
${src1}*)
$allrsync $src1 $user@$host1::$des1 --password-file=/etc/rsync.password && echo "
$DATE $TIME $FILE was rsynced" &>> /var/log
/rsync-$des1-$host1.log
$allrsync $src1 $user@$host2::$des1 --password-file=/etc/rsync.password && echo "
$DATE $TIME $FILE was rsynced" &>> /var/log
/rsync-$des1-$host2.log;;
${src2}*)
$allrsync $src2 $user@$host1::$des2 --password-file=/etc/rsync.password &&
echo "
$DATE $TIME $FILE was rsynced" &>> /var/lo g/rsync-$des2-$host1.log
$allrsync $src2 $user@$host2::$des2 --password-file=/etc/rsync.password &&
echo "
$DATE $TIME $FILE was rsynced" &>> /var/lo
g/rsync-$des2-$host2.log;;
esac done
加入开机自启动
另外,为了保证开机之后自动开始实时同步备份,因此我们需要将该脚本加入开机自启动,
并且设置在启动的时候,将脚本执行输出重定向到指定日志文件以及放到后台运行!
[root@rsync-client-inotify ~]# chmod o+x auto_rsync.sh
[root@rsync-client-inotify ~]# mv auto_rsync.sh /usr/sbin/ [root@rsync-client-inotify ~]# vim /etc/rc.local
Bash /usr/sbin/auto_rsync.sh &>> /var/log/auto_rsync.log & 我在这里模拟分别向/data/web/redhat.sx 和/data/web_data/redhat.sx 各写入 10 个 10M 的小文件
[root@rsync-client-inotify ~]# bash /usr/sbin/auto_rsync.sh &>> /var/log/auto_rsync. log &
[1] 40802
[root@rsync-client-inotify ~]# for i in {1..10};do
dd
if=/dev/zero of=/data/web/redhat.
sx/$i.html bs=10M count=1 ;dd if=/dev/zero of=/data/web_data/redhat.sx/$i.html bs
=10M count=1;done
最新文章
- [转载]:STM32为什么必须先配置时钟再配置GPIO
- 1Z0-053 争议题目解析606
- 艾伦 Visual Studio 批量自动化代码操作工具-VS插件发布
- 框架集(Framesets)
- 黄聪:C#带cookie模拟登录百度
- GDB打印STL容器内容
- jquery select处理
- 转载 C#结构体(struct)和类(class)的区别
- Flexbox完整指南- A Complete Guide to Flexbox
- HTML5下通过response header解决跨域AJAX cookie的问题
- python正则表达式练习篇
- 【转】OpenCV中使用神经网络 CvANN_MLP
- Thymeleaf模板的使用
- MongoDB 3.0 WiredTiger Compression and Performance
- Jmeter_从jdbc请求的响应中获取参数做关联
- Linux常用资源(不断改进中)
- Lunix服务器上项目迁移命令
- XRecyclerView上拉刷新下拉加载
- why-the-default-authentication-hadoop-is-unsecured ?
- 在windows上部署使用redis出现的问题及解决方法
热门文章
- Apache主要配置文件http.conf
- c++复习——类(1)
- mac 电脑设置密码可以直接使用 passwd 这个命令
- java 中 进程和线程的区别
- np.asarray(a, dtype=None, order=None)
- rich-text 副文本组件 text文本组件
- React-Native 之 GD (七)下拉刷新 及 上拉加载更多
- Web网站安全
- leetcode-mid-Linked list- 230 Kth Smallest Element in a BST
- Linux内核调试方法总结之bugreport