注意优点:
1.获得软件的最新版本,及时修复bug
2.软件功能可按需选择/定制,有更多软件可供选择
3.源码包适用各种平台
... ...
开源软件多使用C/C++语言开发(需要安装gcc、gcc-c++、make等编译工具)
yum -y install gcc gcc-c++ make
下载源码包 → 步骤1:tar解包,释放源代码至指定目录
步骤2:./configure配置,指定安装目录/功能模块等选项
步骤3:make 编译,生成可执行的二进制程序文件
步骤4:make install 安装,将编译好的文件复制到安装目录
→ 测试及应用/维护软件
[root@localhost ~]# yum -y install wget #安装下载工具
[root@localhost ~]# wget --no-check-certificate https://jaist.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz #下载软件包
[root@localhost ~]# tar -xf inotify-tools-3.13.tar.gz
[root@localhost ~]# cd inotify-tools-3.13/
通过“./configure --help”可查看帮助
典型配置参数:--prefix=安装目录
[root@localhost inotify-tools-3.13]# ./configure --prefix=/usr/local/inotify-tools
[root@localhost inotify-tools-3.13] ls Makefile #确认结果
[root@localhost inotify-tools-3.13]# make #编译
[root@localhost inotify-tools-3.13]# make install #安装
验证安装结果
查看安装目录、了解程序的使用方法
运行软件包提供的程序/服务
[root@localhost ~]# ls /usr/local/inotify-tools/*
/usr/local/inotify-tools/bin:
inotifywait inotifywatch/usr/local/inotify-tools/include:
inotifytools/usr/local/inotify-tools/lib:
libinotifytools.a libinotifytools.so libinotifytools.so.0.4.1
libinotifytools.la libinotifytools.so.0/usr/local/inotify-tools/share:
doc man
[root@localhost ~]# sed -i '$a export PATH=$PATH:/usr/local/inotify-tools/bin/' /etc/profile #增加环境变量[root@localhost ~]# source /etc/profile #更新环境变量使其当前生效
[root@localhost ~]# inotifywait --help #查看程序用法
按照固定周期定期同步
- 时间间隔性不好固定,同步不及时或资源浪费
- 实时性较差
Linux内核的inotify机制
- 提供事件响应式的文件系统通知机制
- 安装inotify-tools控制工具可调用此机制实现监控
基本用法:
inotifywait [选项] 目标文件夹
常用命令选项:
-m:持续监控(捕获一个事件后不退出)
-r: 递归监控、包括子目录及文件
-q: 减少屏幕输出信息
-e:指定监视的modify、move、create、delete、attrib等事件类别(不加-e默认监控所有类别)
-qq:没有屏幕输出(静默模式)
案例:持续跟踪指定文件夹的变化
- 目标文件夹:/opt
- 当文档出现监视的事件时,会立即给出相应提示
[root@localhost ~]# inotifywait -mrq -e modify,create,delete /opt
基本思路:
- 利用while循环反复检查单词监控结果
while inotifywait监控操作
do
需要执行的rsync同步操作
done
[root@localhost ~]# cat /root/isync.sh
#!/bin/bash
while inotifywait -rqq -e modify,move,create,delete,attrib /var/www/html/
do
rsync -az --delete /var/www/html/ root@192.168.2.5:/var/www/html
done &
[root@localhost ~]# chmod +x /root/isync.sh
[root@localhost ~]# sh isync.sh