parse transfer log
authorDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 15 Jul 2011 18:45:05 +0000 (18:45 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 15 Jul 2011 18:45:15 +0000 (18:45 +0000)
rsync-piper.pl

index 34c6465..fc4c560 100755 (executable)
@@ -28,6 +28,22 @@ sub kill_rsync {
        kill 0, $pid && unlink $pid_file && warn "removed $pid_file";
 }
 
+my $transfer_log = {
+       ip => '%o',
+       user => '%u',
+       host => '%h',
+       perms => '%B',
+       file => '%f',
+       updated => '%i',
+       len => '%l',
+       transfered => '%b',
+       module => '%m',
+       mtime => '%M',
+       op => '%o',
+       pid => '%p',
+       timestamp => '%t',
+};
+
 my $rsync_config = qq{
 
 #uid = nobody
@@ -42,7 +58,7 @@ lock file = $dir/rsyncd.lock
 log file  = $log_fifo
 
 transfer logging = yes
-log format = TRANSFER %o %u %h %a %m %l %f
+log format = TRANSFER } . join('|',values %$transfer_log) . qq{
 max verbosity = 5
 
 pid file  = $pid_file
@@ -88,6 +104,11 @@ while(1) {
        open(my $log, '<', $log_fifo);
        while( my $line = <$log> ) {
                print "LINE: $line";
+               if ( $line =~ /transfer-log:(.+\|.+)/ ) {
+                       my (%data);
+                       %data{ keys %$transfer_log } = split(/\|/,$1); # FIXME validate?
+                       print dump(\%data);
+               }
        }
        close($log);
        sleep 1;