質問:
inotify
[Linux]システムでファイルを確実に記録するために使用できますか?
詳細:
ユーザーの動きを追跡するために使用しようとしてinotifywait
います(現在はbashを使用していますが、スクリプト言語に移行することをお勧めします)。最終的には、作成時にデータベースに新しいファイルを追加し(create
、moved_from
)、ファイルの変更時にデータベース内の既存の行を更新し(、、modify
)attrib
、move_to
最後にファイルの削除時に行を削除します(delete
)。ただし、 saveのように単純に見えるアクションでさえ、多くの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
2つの新しいファイルが作成済み(4913
および.goutputstream-HN3ZDW
)として表示されるだけでtest3.txt~
なく、 コマンドでチェックするとtest3.txt
ファイルが作成されたとしても、作成中のファイルはであり、ではないことに注意してください。完全を期すために、上記の例を示しますが、さらにいくつかのオプションがあります。test3.txt
ls
例1:ファイルの作成、変更、削除、および移動をリッスンします。
$ 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
データベース内のファイルを更新するために使用することは可能ですか?」です。たとえば、ユーザーがファイルを編集して保存した場合、まったく別のファイルを置き換える新しいファイルではなく、そのファイルの更新としてデータベースに反映されるようにします。たとえそれが私を別の方向に向ける提案であったとしても、どんな助けでも大いに感謝されるでしょう。