#!/usr/bin/perl # Copyright (c)2004 by Tatsumi Hosokawa use strict; my $debug = 0; #$debug = 1; my @ex; my @tmpdirs = ('/tmp', '/var'); #my @tmpdirs = ('/tmp', '/var', '/jail/*/tmp', '/jail/*/var'); my $dstip = 'AAA.BBB.CCC.DDD'; my $dstpath = '/hd'; open MOUNT, "/sbin/mount | " or die "cannot open 'mount|'"; while () { if (/^(\S+) on (\S+) \((\w+), (\w+)(,|\))/) { my ($dev, $mp, $type, $local) = ($1, $2, $3, $4); if ($type =~ /^(procfs|null|devfs)$/ or $local ne 'local') { push @ex, $mp; } } } close MOUNT; my @xtmpdirs = (); foreach my $i (@tmpdirs) { push @xtmpdirs, glob($i); } my $xtmpdirs = join ' ', @xtmpdirs; my @sockets = (); foreach my $i (`/usr/bin/find $xtmpdirs -type s`) { chop $i; push @sockets, $i if $i; } my $excludes = '--exclude ' . join ' --exclude ', sort(@ex, @sockets); my @xex = (); foreach my $i (@ex) { push @xex, "$dstpath$i"; } my $mkdirs = join ' ', sort (@xex); my $rsync_opts = '-avH --delete --numeric-ids'; my $rsync_cmd = "/usr/local/bin/rsync $rsync_opts $excludes /* $dstip:$dstpath"; print "$rsync_cmd\n"; system $rsync_cmd if not $debug; my $mkdir_cmd = "/usr/bin/ssh $dstip \"/bin/mkdir -p $mkdirs\""; print "$mkdir_cmd\n"; system $mkdir_cmd if not $debug;