/[psinib]/psinib.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /psinib.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.16 by dpavlin, Sun Oct 26 12:55:56 2003 UTC revision 1.17 by dpavlin, Sun Oct 26 14:04:17 2003 UTC
# Line 62  my $c = 0; Line 62  my $c = 0;
62  # taint path: nmblookup should be there!  # taint path: nmblookup should be there!
63  $ENV{'PATH'} = "/usr/bin:/bin";  $ENV{'PATH'} = "/usr/bin:/bin";
64    
65  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
66    my $verbose = 1;        # default verbosity level
67    my $quiet = 0;
68    
69  my $result = GetOptions(  my $result = GetOptions(
70          "ping!" => \$use_ping, "backupdest!" => \$BACKUP_DEST,          "ping!" => \$use_ping, "backupdest!" => \$BACKUP_DEST,
71            "verbose+" => \$verbose, "quiet+" => \$quiet,
72  );  );
73    
74    $verbose -= $quiet;
75    
76  my $mounts = shift @ARGV ||  my $mounts = shift @ARGV ||
77          'mountscript';          'mountscript';
78  #       die "usage: $0 mountscript";  #       die "usage: $0 mountscript";
# Line 145  while(<M>) { Line 150  while(<M>) {
150                  $real_bl=readlink($bl) || die "can't read link $bl: $!";                  $real_bl=readlink($bl) || die "can't read link $bl: $!";
151                  $real_bl="$BACKUP_DEST/$host/$dir/$real_bl" if (substr($real_bl,0,1) ne "/");                  $real_bl="$BACKUP_DEST/$host/$dir/$real_bl" if (substr($real_bl,0,1) ne "/");
152                  if (-l $bc && $real_bl eq $bc) {                  if (-l $bc && $real_bl eq $bc) {
153                          print "$share allready backuped...\n";                          xlog($share,"allready backuped...");
154                          $backup_ok++;                          $backup_ok++;
155                          next;                          next;
156                  }                  }
# Line 153  while(<M>) { Line 158  while(<M>) {
158          }          }
159    
160    
161          print "working on $share\n";          xlog($share,"working on $share...");
162    
163          # try to nmblookup IP          # try to nmblookup IP
164          $ip = get_ip($share) if (! $ip);          $ip = get_ip($share) if (! $ip);
# Line 194  sub xlog { Line 199  sub xlog {
199          my $share = shift;          my $share = shift;
200          my $t = strftime $LOG_TIME_FMT, localtime;          my $t = strftime $LOG_TIME_FMT, localtime;
201          my $m = shift || '[no log entry]';          my $m = shift || '[no log entry]';
202          print STDERR $m,"\n";          my $l = shift || 1;
203            print STDERR $m,"\n" if ($verbose >= $l);
204          print L "$t $share\t$m\n";          print L "$t $share\t$m\n";
205  }  }
206    
# Line 213  sub share2host_dir { Line 219  sub share2host_dir {
219                  $dir =~ s/^_+//;                  $dir =~ s/^_+//;
220                  $dir =~ s/_+$//;                  $dir =~ s/_+$//;
221          } else {          } else {
222                  print "Can't parse share $share into host and directory!\n";                  xlog($share,"Can't parse share $share into host and directory!",1);
223                  return;                  return;
224          }          }
225          return ($host,$dir,strftime $DIR_TIME_FMT, localtime);          return ($host,$dir,strftime $DIR_TIME_FMT, localtime);
# Line 243  sub snap_share { Line 249  sub snap_share {
249                  $real_bl=readlink($bl) || die "can't read link $bl: $!";                  $real_bl=readlink($bl) || die "can't read link $bl: $!";
250                  $real_bl="$BACKUP_DEST/$host/$dir/$real_bl" if (substr($real_bl,0,1) ne "/");                  $real_bl="$BACKUP_DEST/$host/$dir/$real_bl" if (substr($real_bl,0,1) ne "/");
251          } else {          } else {
252                  print "no old backup, trying to find last backup, ";                  xlog($share,"no old backup, trying to find last backup,");
253                  if (opendir(BL_DIR, "$BACKUP_DEST/$host/$dir")) {                  if (opendir(BL_DIR, "$BACKUP_DEST/$host/$dir")) {
254                          my @bl_dirs = sort grep { !/^\./ && -d "$BACKUP_DEST/$host/$dir/$_" } readdir(BL_DIR);                          my @bl_dirs = sort grep { !/^\./ && -d "$BACKUP_DEST/$host/$dir/$_" } readdir(BL_DIR);
255                          closedir(BL_DIR);                          closedir(BL_DIR);
256                          $real_bl=pop @bl_dirs;                          $real_bl=pop @bl_dirs;
257                          print "using $real_bl as latest...\n";                          xlog($share,"using $real_bl as latest...");
258                          $real_bl="$BACKUP_DEST/$host/$dir/$real_bl" if (substr($real_bl,0,1) ne "/");                          $real_bl="$BACKUP_DEST/$host/$dir/$real_bl" if (substr($real_bl,0,1) ne "/");
259                          if ($real_bl eq $bc) {                          if ($real_bl eq $bc) {
260                                  xlog($share,"latest from today (possible partial backup)");                                  xlog($share,"latest from today (possible partial backup)");
# Line 256  sub snap_share { Line 262  sub snap_share {
262                                  $real_bl .= ".partial";                                  $real_bl .= ".partial";
263                          }                          }
264                  } else {                  } else {
265                          print "this is first run...\n";                          xlog($share,"this is first run...");
266                  }                  }
267          }          }
268    
269          if (-l $bc && $real_bl && $real_bl eq $bc) {          if (-l $bc && $real_bl && $real_bl eq $bc) {
270                  print "$share allready backuped...\n";                  xlog($share,"allready backuped...");
271                  return 1;                  return 1;
272          }          }
273    
# Line 269  sub snap_share { Line 275  sub snap_share {
275    
276          if (! -e "$BACKUP_DEST/$host") {          if (! -e "$BACKUP_DEST/$host") {
277                  mkdir "$BACKUP_DEST/$host" || die "can't make dir for host $host, $BACKUP_DEST/$host: $!";                  mkdir "$BACKUP_DEST/$host" || die "can't make dir for host $host, $BACKUP_DEST/$host: $!";
278                  print "created host directory $BACKUP_DEST/$host...\n";                  xlog($share,"created host directory $BACKUP_DEST/$host...");
279          }          }
280    
281          if (! -e "$BACKUP_DEST/$host/$dir") {          if (! -e "$BACKUP_DEST/$host/$dir") {
282                  mkdir "$BACKUP_DEST/$host/$dir" || die "can't make dir for share $share, $BACKUP_DEST/$host/$dir $!";                  mkdir "$BACKUP_DEST/$host/$dir" || die "can't make dir for share $share, $BACKUP_DEST/$host/$dir $!";
283                  print "created dir for share $share, $BACKUP_DEST/$host/$dir...\n";                  xlog($share,"created dir for this share $BACKUP_DEST/$host/$dir...");
284          }          }
285    
286          mkdir $bc || die "can't make dir for current backup $bc: $!";          mkdir $bc || die "can't make dir for current backup $bc: $!";
# Line 352  sub snap_share { Line 358  sub snap_share {
358                                  } elsif (-d $pf) {                                  } elsif (-d $pf) {
359                                          push @dirs,$pr;                                          push @dirs,$pr;
360                                  } else {                                  } else {
361                                          print STDERR "not file or directory: $pf\n";                                          xlog($share,"not file or directory: $pf",0);
362                                  }                                  }
363                          } else {                          } else {
364                                  print STDERR "ignored: $pr\n";                                  xlog($share,"ignored: $pr");
365                          }                          }
366                  }                  }
367          }          }
# Line 399  sub snap_share { Line 405  sub snap_share {
405                                  } elsif ($item->[0] == main::SMBC_DIR) {                                  } elsif ($item->[0] == main::SMBC_DIR) {
406                                          push @smb_dirs,$pr;                                          push @smb_dirs,$pr;
407                                  } else {                                  } else {
408                                          print STDERR "not file or directory [",$item->[0],"]: $pf\n";                                          xlog($share,"not file or directory [".$item->[0]."]: $pf",0);
409                                  }                                  }
410                          } else {                          } else {
411                                  print STDERR "smb ignored: $pr\n";                                  xlog($share,"smb ignored: $pr");
412                          }                          }
413                  }                  }
414          }          }
# Line 584  psinib - Perl Snapshot Is Not Incrementa Line 590  psinib - Perl Snapshot Is Not Incrementa
590    
591  =head1 SYNOPSIS  =head1 SYNOPSIS
592    
593  ./psinib.pl  ./psinib.pl [OPTION]... [mount script]
594    
595  =head1 DESCRIPTION  =head1 DESCRIPTION
596    
597    Option can be one of more of following:
598    
599    =over 8
600    
601    =item C<--backupdest=dir>
602    
603    Specify backup destination directory (defaults is /data/
604    
605    =item C<--noping>
606    
607    Don't use ping to check if host is up (default is ti use tcp syn to cifs
608    port)
609    
610    =item C<--verbose -v>
611    
612    Increase verbosity level. Defailt is 1 which prints moderate amount of data
613    on STDOUT and STDERR.
614    
615    =item C<--quiet -q>
616    
617    Decrease verbosity level
618    
619    =back
620    
621  This script in current version support just backup of Samba (or Micro$oft  This script in current version support just backup of Samba (or Micro$oft
622  Winblowz) shares to central disk space. Central disk space is organized in  Winblowz) shares to central disk space. Central disk space is organized in
623  multiple directories named after:  multiple directories named after:
# Line 716  If you don't get any output, your samba Line 746  If you don't get any output, your samba
746    
747  Dobrica Pavlinusic <dpavlin@rot13.org>  Dobrica Pavlinusic <dpavlin@rot13.org>
748    
749  L<http://www.rot13.org/~dpavlin/>  L<http:E<sol>E<sol>www.rot13.orgE<sol>~dpavlinE<sol>>
750    
751  =head1 LICENSE  =head1 LICENSE
752    

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.17

  ViewVC Help
Powered by ViewVC 1.1.26