Debian系统监控文件变化的常用方法
inotify-tools是Debian下基于Linux内核inotify机制的经典工具集,支持实时监控文件/目录的创建、修改、删除等事件,适合需要快速响应的场景。
sudo apt update && sudo apt install inotify-tools。inotifywait -m /path/to/file -e modify,attrib,close_write(-m表示持续监控,-e指定事件类型)。inotifywait -m -r /path/to/directory -e create,delete,modify(-r递归子目录)。inotifywait -m -r --format '%w%f %e' --timefmt '%Y-%m-%d %H:%M:%S' /path/to/dir(%w%f为文件路径,%e为事件类型)。fswatch是支持Linux、macOS、Windows等多平台的文件监控工具,基于inotify(Linux)、FSEvents(macOS)等原生机制,适合需要跨环境使用的场景。
sudo apt update && sudo apt install fswatch。fswatch /path/to/file(实时输出变化事件)。fswatch -r /path/to/directory(-r递归子目录)。fswatch -i 2 /path/to/file(每2秒检查一次变化)。-e '*.log'仅监控日志文件)、排除目录(如-x '/tmp'忽略/tmp目录)。auditd是Debian自带的系统审计框架,可深度监控文件访问、修改、权限变更等操作,适合安全审计或合规性需求(如追踪敏感文件的修改记录)。
sudo apt update && sudo apt install auditd audispd-plugins。/etc/audit/audit.rules,添加-a exit,always -F path=/path/to/file -k file_audit(-k为规则标签,便于后续查询)。ausearch -k file_audit命令检索指定规则的审计日志(日志默认存储在/var/log/audit/audit.log)。watchdog是基于Python的文件系统事件监控库,适合需要自定义监控逻辑或集成到Python项目的场景,支持递归监控、事件过滤等功能。
pip install watchdog。import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class MyHandler(FileSystemEventHandler):
def on_created(self, event): # 文件创建事件
print(f"Created: {event.src_path}")
def on_deleted(self, event): # 文件删除事件
print(f"Deleted: {event.src_path}")
def on_modified(self, event): # 文件修改事件
print(f"Modified: {event.src_path}")
if __name__ == "__main__":
path = "/path/to/directory"
event_handler = MyHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True) # 递归监控
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
FileSystemEventHandler类实现自定义事件处理(如触发API调用、数据库更新)。rsync主要用于文件同步,但通过--dry-run(模拟运行)参数可实现文件变化的差异检测,适合定期检查远程或本地目录的变化(如备份前的增量检查)。
rsync -av --dry-run /path/to/source/ /path/to/destination/(-a归档模式,-v详细输出,--dry-run不实际同步)。