I just finished the learning Perl book and thought I would try and
rewrite a bash script that I had written long ago. The purpose of the
app is to mount a samba folder on a winx machine. Copy its contents to a
local folder as a mirror. I just wanted some input on my app and some
things explained if you could.

First off I am using the system "cp" so that I can preserve dates and
permissions as well as dig into subdirectories. I was going to use
File::Copy but it just seem to cumbersome to accomplish the same text.
Am I incorrect is there a "better way to do this."

Secondly I am reading the parameters from a comma delimitated file but
this is going to be changed to a real config file that is setup like
[machine name] Password=; Username=; ...

So just ignore this top portion unless you have some insights or advice.

Thirdly for some reason 80% of the time when I call system "umount ...."
the umount process hangs forever. I can't even kill it with -9.
Sometimes it comes back sometimes it doesn't. Any thoughts?

Last but easiest: 
I know I can condense these into one assignment but I can't figure it
out for the life of me. $path=$5; $path=~s/ /\\ /g;

Thanks in advance,
Paul Kraus

Script
-=-=-=-
#!/usr/bin/perl
chomp ($dt=`date +%r`);
open CONFIG,"<backup.cfg" or die "Can't find configuration file!\n";
open LOG,">>backup.log"; &errors("New"); foreach (<CONFIG>){
    chomp;
    if (/^([^#].*),(.*),(.*),(.*),(.*),(.*)$/){
            $machine=$1;
            $username=$2;
            $password=$3;
            $share=$4;
            $path=$5;
            $path=~s/ /\\ /g;
            $email=$6;
            $backupdir = "/backup/$machine";
            $machine="//$machine";
            mkdir $backupdir unless (-e "/backup/$machine");
            &mountdir;
            next if ($error==1);
            &backupdir($backupdir);
            system "umount /mnt/backup";
       }
}

sub backupdir{
    $test=`cp --preserve --recursive --update /mnt/backup/$path/ $_[0]
2>&1`;
    &errors("cp",$1) if ($test=~/\/(.*)'+/);
}

    
sub mountdir{
    &errors("mount") if (system "mount","-t","smbfs","-o",
                        "username=$username,password=$password",
                        "$machine/$share","/mnt/backup");
}
sub errors{
    $workstation= $1 if ($machine=~/\/\/(.*)/);
    select LOG;
    print "($dt) Machine off : $workstation\n" if ($_[0] eq "mount");
    if ($_[0] eq "cp"){
        print "$_[1]";
        my @path=split /\//,$_[1];
        print "$_\n" foreach (@path);
        my $filename = pop(@path);
        print "($dt) File in use :$workstation :$filename\n" if ($_[0]
eq "cp");
    }
    if ($_[0] eq "New"){
        print "\nBackup log for ";
        print `date +%D`;
        print "------------------------\n"}
    select STDOUT;
}


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to