题:
可以inotify
可以用于在[Linux的]系统可靠地记录文件?
细节:
我试图用inotifywait
用户的运动跟踪(目前使用bash,但它已建议我迁移到一个脚本语言)。 最后,我想在创建新的文件添加到数据库( create
, moved_from
在后的文件修改(数据库),更新现有的行modify
, attrib
, move_to
),最后在删除文件删除行( delete
)。 我,但是,当运行到许多问题,甚至看似简单的保存动作,产生许多inotifywait消息。 注意下面的命令和它们的输出(注意,使用/home/user/
纯粹是为了举例):
例子:
例1:倾听文件创建:
$ inotifywait -mr /home/user/ -e create --format %w:%f:%e:%T --timefmt %T
触摸:
$touch test.txt
/home/user/:test.txt:CREATE:21:35:30
打开一个新的文件,然后VIM问题:w命令:
$vim test2.txt
/home/user/:test2.txt:CREATE:21:35:30
与当时VIM问题打开现有的文件:w命令:
$vim test2.txt
/home/user/:4913:CREATE:21:35:30
/home/user/:test2.txt:CREATE:21:35:30
用gedit打开一个新的文件,然后点击保存:
$gedit test3.txt
/home/user/:test3.txt~:CREATE:21:35:30
用gedit打开现有的文件,然后点击保存:
$gedit test3.txt
/home/user/:.goutputstream-HN3ZDW:CREATE:21:35:30
/home/user/:test3.txt~:CREATE:21:35:30
需要注意的是,不仅是显示为具有本创建(两个新文件4913
和.goutputstream-HN3ZDW
),而且还正在创建的唯一文件是test3.txt~
而不是 test3.txt
即使文件, test3.txt
创建当与所检查的ls
命令。 为了完整起见,这里是上面的例子,但有一些更多的选择。
实施例1:监听文件的创建,修改,deltion,和运动:
$ inotifywait -mr /home/user/ -e create -e modify -e delete -e moved_to -e moved_from --format %w:%f:%e:%T --timefmt %T
触摸:
$touch test.txt
/home/user/:test.txt:CREATE:21:35:30
开一个新的文件,然后VIM问题:w命令:
$vim test2.txt
/home/user/:test2.txt:CREATE:22:12:32
与当时VIM问题打开现有的文件:w命令:
$vim test2.txt
/home/user/:4913:CREATE:22:04:35
/home/user/:4913:DELETE:22:04:35
/home/user/:test2.txt:MOVED_FROM:22:04:35
/home/user/:test2.txt~:MOVED_TO:22:04:35
/home/user/:test2.txt:CREATE:22:04:35
/home/user/:test2.txt~:DELETE:22:04:35
用gedit打开一个新的文件,然后点击保存:
$gedit test3.txt
/home/user/:test3.txt~:CREATE:21:35:30
用gedit打开现有的文件,然后点击保存:
$gedit test3.txt
/home/user/:.goutputstream-0WQ2DW:CREATE:22:06:34
/home/user/:test3.txt~:CREATE:22:06:34
/home/user/:.goutputstream-0WQ2DW:MOVED_FROM:22:06:34
/home/user/:test3.txt:MOVED_TO:22:06:34
基本上,我的问题是“是否有可能使用inotify
来更新数据库中的文件”? 例如,如果用户编辑文件并保存它,我想这反映在数据库中更新该文件,而不是一个全新的文件替换一个完全不同的文件。 任何帮助将不胜感激,哪怕是我指点的方向不同的建议。