work.log

元エンジニアの備忘録的ブログ

FreeBSD で lsync 的なやつ

投稿:2012-11-16 19:01  更新:

Linux の lsync みたいなのが欲しくてちょっと調査。

lsync そのものはないけど、Filesys::Notify::KQueue を使えば同じような事
が簡単にできそうなのでちょっと使ってみました。

ほぼサンプルのままですが動作確認用にソースこんな感じで。

# vi kqueue.pl

-----
#!/usr/bin/perl

use strict;
use warnings;
use Filesys::Notify::KQueue;
use Data::Dumper;

   
    my $notify = Filesys::Notify::KQueue->new(

        path    => [qw(/home/test)],
        timeout => 1000,

    );

    while ( 1 ) {

        $notify->wait(sub {

            my @events = @_;

            foreach my $event (@events) { print Dumper( $event ); }

        });
    }

perl kqueue.pl で実行して、

■ /home/test に test.txt を新規作成


$VAR1 = {
          'path' => '/home/test/test.txt',
          'event' => 'create'
        };

■ /home/test の test.txt を変更


$VAR1 = {
          'path' => '/home/test/test.txt',
          'event' => 'modify'
        };

■ /home/test の test.txt を削除


$VAR1 = {
          'path' => '/home/test/test.txt',
          'event' => 'delete'
        };

こんな感じにファイルイベントを監視できる。便利 !