diff -ruN e-smith-backup-2.4.0.old/root/etc/e-smith/events/actions/workstation-backup-dar e-smith-backup-2.4.0/root/etc/e-smith/events/actions/workstation-backup-dar --- e-smith-backup-2.4.0.old/root/etc/e-smith/events/actions/workstation-backup-dar 2013-07-14 15:16:30.000000000 -0700 +++ e-smith-backup-2.4.0/root/etc/e-smith/events/actions/workstation-backup-dar 2013-07-14 15:14:05.000000000 -0700 @@ -26,7 +26,7 @@ use esmith::templates; use Time::localtime; use File::Copy; -use File::Path qw(make_path remove_tree mkpath rmtree); +use File::Path qw(make_path remove_tree); use File::Find; use POSIX ":sys_wait_h"; use File::Glob qw(bsd_glob); @@ -114,7 +114,7 @@ } # create the directory mount point if it does not exist -make_path ($mntdir) unless (-d $mntdir); +createTree ($mntdir); # mount the backup directory $err = &dmount($smbhost,$smbshare,$mntdir,$login,$password,$VFSType); @@ -128,14 +128,9 @@ } $tmpdir = $mntdir . '/tmp_dir'; -if (-d "$tmpdir/$id") -{ - eval {rmtree("$tmpdir/$id")}; - ldie("Error while deleting $tmpdir/$id : $@.\n") if $@; -} -eval {mkpath("$tmpdir/$id")}; -ldie("Error while creating $tmpdir/$id : $@. Maybe insufficient rights on backup directory.\n") - if $@; + +&removeTree ("$tmpdir/$id"); +&createTree ("$tmpdir/$id"); # we know right backup directory is in line and we can write on it. $report .= "Backup temp directory $tmpdir/$id is mounted and is writable \n"; @@ -164,13 +159,7 @@ # if no set directory, make it my $setname = "set" . $setnum; my $setdirname = $mntdir . "/$id/" . $setname; - -unless ( -d $setdirname ) -{ - eval {mkpath($setdirname)}; - ldie("Can't create $setdirname : $@.\n") if $@; - $report .= "Backup directory $id/$setname created \n"; -} +&createTree ($setdirname); if ( $incnum == 0 ) { @@ -213,7 +202,7 @@ ldie("Not a permitted day for full backup. Aborting...\nNext full backup in $delay days.\n"); } -$report .= "Backup base file name is $bkname \n"; +$report .= "Backup to $bkname in $id/$setname\n"; $report .= "Making backup in temp directory\n"; # calculate real timeout if we timeout incrementals only. @@ -242,10 +231,8 @@ if ($incnum == 0) { $report .= "Rotating backups in a new set $setdirname. \n"; - eval {rmtree($setdirname)}; - ldie("Error while deleting $setdirname : $@.\n") if $@; - eval {mkpath("$setdirname")}; - ldie("Error while creating $setdirname : $@.\n") if $@; + &removeTree ($setdirname); + &createTree ($setdirname); } $report .= "Moving backup files to target directory $setdirname \n"; @@ -256,8 +243,10 @@ unless move($_, $setdirname); } -# update dar_manager catalog +# Remove temporary directory as no longer needed +&removeTree ("$tmpdir/$id"); +# update dar_manager catalog $report .= "Updating catalog\n"; my %backupfiles = (); @@ -523,3 +512,24 @@ return ("Mount of type $VFSType not supported.\n"); } } + + +sub removeTree +{ + my $tree = shift; + if (-d "$tree") + { + eval {remove_tree("$tree")}; + ldie("Error while deleting $tree : $@.\n") if $@; + } +} + +sub createTree +{ + my $tree = shift; + if (! -d "$tree") + { + eval {make_path("$tree")}; + ldie("Error while creating $tree : $@. Maybe insufficient rights directory.\n") if $@; + } +}