--- psinib.pl 2003/10/26 12:55:56 1.16 +++ psinib.pl 2003/10/26 14:04:17 1.17 @@ -62,12 +62,17 @@ # taint path: nmblookup should be there! $ENV{'PATH'} = "/usr/bin:/bin"; -my $use_ping = 1; # deault: use ping to verify that host is up +my $use_ping = 1; # default: use syn tcp ping to verify that host is up +my $verbose = 1; # default verbosity level +my $quiet = 0; my $result = GetOptions( "ping!" => \$use_ping, "backupdest!" => \$BACKUP_DEST, + "verbose+" => \$verbose, "quiet+" => \$quiet, ); +$verbose -= $quiet; + my $mounts = shift @ARGV || 'mountscript'; # die "usage: $0 mountscript"; @@ -145,7 +150,7 @@ $real_bl=readlink($bl) || die "can't read link $bl: $!"; $real_bl="$BACKUP_DEST/$host/$dir/$real_bl" if (substr($real_bl,0,1) ne "/"); if (-l $bc && $real_bl eq $bc) { - print "$share allready backuped...\n"; + xlog($share,"allready backuped..."); $backup_ok++; next; } @@ -153,7 +158,7 @@ } - print "working on $share\n"; + xlog($share,"working on $share..."); # try to nmblookup IP $ip = get_ip($share) if (! $ip); @@ -194,7 +199,8 @@ my $share = shift; my $t = strftime $LOG_TIME_FMT, localtime; my $m = shift || '[no log entry]'; - print STDERR $m,"\n"; + my $l = shift || 1; + print STDERR $m,"\n" if ($verbose >= $l); print L "$t $share\t$m\n"; } @@ -213,7 +219,7 @@ $dir =~ s/^_+//; $dir =~ s/_+$//; } else { - print "Can't parse share $share into host and directory!\n"; + xlog($share,"Can't parse share $share into host and directory!",1); return; } return ($host,$dir,strftime $DIR_TIME_FMT, localtime); @@ -243,12 +249,12 @@ $real_bl=readlink($bl) || die "can't read link $bl: $!"; $real_bl="$BACKUP_DEST/$host/$dir/$real_bl" if (substr($real_bl,0,1) ne "/"); } else { - print "no old backup, trying to find last backup, "; + xlog($share,"no old backup, trying to find last backup,"); if (opendir(BL_DIR, "$BACKUP_DEST/$host/$dir")) { my @bl_dirs = sort grep { !/^\./ && -d "$BACKUP_DEST/$host/$dir/$_" } readdir(BL_DIR); closedir(BL_DIR); $real_bl=pop @bl_dirs; - print "using $real_bl as latest...\n"; + xlog($share,"using $real_bl as latest..."); $real_bl="$BACKUP_DEST/$host/$dir/$real_bl" if (substr($real_bl,0,1) ne "/"); if ($real_bl eq $bc) { xlog($share,"latest from today (possible partial backup)"); @@ -256,12 +262,12 @@ $real_bl .= ".partial"; } } else { - print "this is first run...\n"; + xlog($share,"this is first run..."); } } if (-l $bc && $real_bl && $real_bl eq $bc) { - print "$share allready backuped...\n"; + xlog($share,"allready backuped..."); return 1; } @@ -269,12 +275,12 @@ if (! -e "$BACKUP_DEST/$host") { mkdir "$BACKUP_DEST/$host" || die "can't make dir for host $host, $BACKUP_DEST/$host: $!"; - print "created host directory $BACKUP_DEST/$host...\n"; + xlog($share,"created host directory $BACKUP_DEST/$host..."); } if (! -e "$BACKUP_DEST/$host/$dir") { mkdir "$BACKUP_DEST/$host/$dir" || die "can't make dir for share $share, $BACKUP_DEST/$host/$dir $!"; - print "created dir for share $share, $BACKUP_DEST/$host/$dir...\n"; + xlog($share,"created dir for this share $BACKUP_DEST/$host/$dir..."); } mkdir $bc || die "can't make dir for current backup $bc: $!"; @@ -352,10 +358,10 @@ } elsif (-d $pf) { push @dirs,$pr; } else { - print STDERR "not file or directory: $pf\n"; + xlog($share,"not file or directory: $pf",0); } } else { - print STDERR "ignored: $pr\n"; + xlog($share,"ignored: $pr"); } } } @@ -399,10 +405,10 @@ } elsif ($item->[0] == main::SMBC_DIR) { push @smb_dirs,$pr; } else { - print STDERR "not file or directory [",$item->[0],"]: $pf\n"; + xlog($share,"not file or directory [".$item->[0]."]: $pf",0); } } else { - print STDERR "smb ignored: $pr\n"; + xlog($share,"smb ignored: $pr"); } } } @@ -584,10 +590,34 @@ =head1 SYNOPSIS -./psinib.pl +./psinib.pl [OPTION]... [mount script] =head1 DESCRIPTION +Option can be one of more of following: + +=over 8 + +=item C<--backupdest=dir> + +Specify backup destination directory (defaults is /data/ + +=item C<--noping> + +Don't use ping to check if host is up (default is ti use tcp syn to cifs +port) + +=item C<--verbose -v> + +Increase verbosity level. Defailt is 1 which prints moderate amount of data +on STDOUT and STDERR. + +=item C<--quiet -q> + +Decrease verbosity level + +=back + This script in current version support just backup of Samba (or Micro$oft Winblowz) shares to central disk space. Central disk space is organized in multiple directories named after: @@ -716,7 +746,7 @@ Dobrica Pavlinusic -L +LEwww.rot13.orgE~dpavlinE> =head1 LICENSE