10 use Data::Dump qw(dump);
12 my $dir = '/srv/cloudstore/var';
13 my $log_fifo = "$dir/rsyncd.log";
14 our $pid_file = "$dir/rsyncd.pid";
15 my $cfg_file = "$dir/rsyncd.conf";
18 mkdir $dir if ! -e $dir;
20 unlink $log_fifo if -e $log_fifo;
21 mkfifo $log_fifo, 0700;
24 return unless -e $pid_file;
25 my $pid = read_file $pid_file;
26 warn "kill_rsync $pid_file = $pid";
27 kill 1, $pid && unlink $pid_file; warn "killed old rsync server using pid $pid";
30 my $rsync_config = qq{
38 lock file = $dir/rsyncd.lock
40 #syslog facility = local5
43 transfer logging = yes
44 log format = TRANSFER %o %u %h %a %m %l %f
49 # don't check secrets file permission (uid)
52 pre-xfer exec = /srv/cloudstore/pre-xfer.sh
53 post-xfer exec = /srv/cloudstore/post-xfer.sh
56 path = /srv/cloudstore/users/dpavlin/blob
58 secrets file = /srv/cloudstore/secrets/dpavlin
63 write_file $cfg_file, $rsync_config;
64 warn "created $cfg_file ", -s $cfg_file, " bytes\n";
67 sub DESTROY { kill_rsync; };
69 my $exec = "rsync --daemon --config $cfg_file --no-detach --port=6501";
71 #die "could not fork\n" unless defined(my $pid = fork);
73 # warn "start server with $exec\n";
74 # exec $exec || die $!;
78 open(my $rsync_fd, '-|', $exec);
80 while ( ! -e $pid_file ) {
86 warn "# reading log output from $log_fifo\n";
87 open(my $log, '<', $log_fifo);
88 while( my $line = <$log> ) {