在现代 Linux 系统中,监控文件或目录的变化是一项常见需求。无论是用于日志分析、自动备份,还是实现网络文件同步,实时感知文件系统的变动都至关重要。本文将带你从零开始,使用 inotify 工具来监控 Linux 上的文件变化,并介绍如何将其应用于网络环境。
inotify 是 Linux 内核提供的一种机制,用于监控文件系统事件(如创建、修改、删除等)。它高效、轻量,是许多自动化脚本和系统工具的基础。
大多数 Linux 发行版默认不安装 inotify 的命令行工具,我们需要先安装 inotify-tools 包:
sudo apt updatesudo apt install inotify-tools sudo yum install inotify-tools # CentOS 7 及更早版本# 或sudo dnf install inotify-tools # Fedora / CentOS 8+ 使用 inotifywait 命令可以实时监听目录中的文件事件。例如,监控 /home/user/documents 目录:
inotifywait -m -r -e create,modify,delete /home/user/documents 参数说明:
-m:持续监听(monitor),不退出-r:递归监控子目录-e:指定要监听的事件类型(create 创建、modify 修改、delete 删除)假设你希望本地某个目录下的文件一旦被修改,就自动通过 rsync 同步到远程服务器。这正是 网络文件监控 的典型应用场景。
下面是一个简单的 Bash 脚本示例:
#!/bin/bashLOCAL_DIR="/home/user/shared"REMOTE_USER="user"REMOTE_HOST="192.168.1.100"REMOTE_DIR="/backup/shared"inotifywait -m -r -e close_write --format '%w%f' "$LOCAL_DIR" | while read FILEdo echo "[$(date)] 文件 $FILE 已修改,正在同步..." rsync -avz "$FILE" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"done 保存为 sync_on_change.sh,赋予执行权限:
chmod +x sync_on_change.sh./sync_on_change.sh 现在,只要 /home/user/shared 中有文件被写入并关闭(close_write 事件),就会自动同步到远程服务器。这种方式非常适合实现轻量级的 实时文件系统监控 和 网络文件同步。
--exclude 过滤临时文件。/proc/sys/fs/inotify/max_user_watches 查看),如需监控大量文件,请适当调高该值。通过 inotify,我们可以轻松实现对 Linux 文件系统的实时监控,并结合网络工具(如 rsync、scp)完成自动化任务。无论你是系统管理员、开发者,还是 DevOps 工程师,掌握这项技能都能极大提升工作效率。希望这篇教程能帮助你入门 Linux文件监控,并将其应用到实际项目中!
本文由主机测评网于2025-12-01发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025121602.html