--- psinib.pl 2003/10/12 16:13:38 1.12 +++ psinib.pl 2003/10/12 18:47:35 1.14 @@ -24,6 +24,7 @@ use Fcntl qw(LOCK_EX LOCK_NB); use Digest::MD5; use File::Basename; +use Getopt::Long; # configuration my $LOG_TIME_FMT = '%Y-%m-%d %H:%M:%S'; # strftime format for logfile @@ -33,8 +34,8 @@ #$LOG = '/tmp/backup.log'; # store backups in which directory -#my $BACKUP_DEST = '/backup/isis_backup'; -my $BACKUP_DEST = '/tmp/backup/'; +my $BACKUP_DEST = '/backup/isis_backup'; +#my $BACKUP_DEST = '/tmp/backup/'; # files to ignore in backup my @ignore = ('.md5sum', '.backupignore', 'backupignore.txt'); @@ -58,6 +59,12 @@ # 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 $result = GetOptions( + "ping!" => \$use_ping, "backupdest!" => \$BACKUP_DEST, +); + my $mounts = shift @ARGV || 'mountscript'; # die "usage: $0 mountscript"; @@ -65,9 +72,12 @@ my @in_backup; # shares which are backeduped this run -my $p = new Net::Ping->new("tcp", 2); -# ping will try tcp connect to netbios-ssn (139) -$p->{port_num} = getservbyname("netbios-ssn", "tcp"); +my $ping; +if ($use_ping) { + $ping = new Net::Ping->new("tcp", 2); + # ping will try tcp connect to netbios-ssn (139) + $ping->{port_num} = getservbyname("netbios-ssn", "tcp"); +} my $backup_ok = 0; @@ -129,7 +139,7 @@ if ($ip) { xlog($share,"IP is $ip"); - if ($p->ping($ip)) { + if (($use_ping && $ping->ping($ip)) || 1) { if (snap_share($share,$user,$passwd,$workgroup)) { $backup_ok++; } @@ -259,6 +269,7 @@ my %file_atime; my %file_mtime; #my %file_md5; + %file_md5 = (); my @smb_files; my %smb_size; @@ -490,6 +501,7 @@ # remove files foreach (sort @files2erase) { unlink "$bc/$_" || warn "unlink $_: $!\n"; + delete $file_md5{$_}; } # remove not needed dirs (after files) @@ -502,6 +514,14 @@ unlink "$bc/$_/.md5sum" if (-e "$bc/$_/.md5sum"); } + # erase stale entries in .md5sum + my @md5_files = keys %file_md5; + $lc = List::Compare->new(\@md5_files, \@smb_files); + foreach my $file ($lc->get_Lonly) { + xlog("NOTICE","removing stale '$file' from .md5sum"); + delete $file_md5{$file}; + } + # create .md5sum my $last_dir = ''; my $md5;