监视文件更改的位置和长度

问题描述:

使用inotify可以轻松监视文件更改,但Inotify只能在写入文件时回复带有文件名和某个文件属性的IN_MODIFY事件。如何获取新添加内容的开始位置和内容长度的变化文件?有没有解决这个问题的任何API?监视文件更改的位置和长度

你可以让其他脚本手表inotify的日志并为您在一些文件列表和变化,然后日志大小的变化,例如:

#!/bin/bash 
for n in `cat /etc/inotify/special_files_list.conf`; do 
    FOUND_CHANGES=`tail -n 10000 /var/log/inotify.log | grep `$cur_date_with_hour` | grep $n` 
    PREVIOUS_FILE_SIZE=`/var/log/inotify-special.log | cut -d ';' -f 0` 
    FILE_SIZE=stat -c "%s" `cut -d ';' -f 0,1` 
    file_size_diff = `expr $PREVIOUS_FILE_SIZE - $FILE_SIZE` 
    if [ file_size_diff !-eq 0 ]; then 
     echo "$FOUND_CHANGES;" >> /var/log/inotify-special.log 
    fi 
done 
... 
+0

我不想使用diff或其他校验脚本来获得改变内容,我想知道有没有任何api从linux内核得到这个或直接在drbd等IO级别拦截? – Zeyu

+0

也许你可以尝试修改inotify如果它不是很困难,你真的需要这个功能。 – Alex