1 |
wellsi |
1.1 |
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 |
2 |
|
|
--- e-smith-backup-2.4.0.old/root/etc/e-smith/events/actions/workstation-backup-dar 2013-07-07 21:03:58.000000000 -0700 |
3 |
|
|
+++ e-smith-backup-2.4.0/root/etc/e-smith/events/actions/workstation-backup-dar 2013-07-07 21:52:12.000000000 -0700 |
4 |
|
|
@@ -29,6 +29,7 @@ |
5 |
|
|
use File::Path; |
6 |
|
|
use File::Find; |
7 |
|
|
use POSIX ":sys_wait_h"; |
8 |
|
|
+use File::Glob qw(bsd_glob); |
9 |
|
|
use esmith::ConfigDB; |
10 |
|
|
|
11 |
|
|
sub ldie; |
12 |
|
|
@@ -175,7 +176,7 @@ |
13 |
|
|
} |
14 |
|
|
} |
15 |
|
|
|
16 |
|
|
- system("/bin/mkdir -p /$smbshare"); |
17 |
|
|
+ system("/bin/mkdir", "-p", "/$smbshare"); |
18 |
|
|
|
19 |
|
|
$err = qx(/bin/mount $device "/$smbshare" 2>&1); |
20 |
|
|
if ($err) {ldie("Error while mounting $device /$smbshare : \n" . $err)}; |
21 |
|
|
@@ -193,6 +193,7 @@ |
22 |
|
|
open FD, '/proc/mounts'; |
23 |
|
|
while (<FD>) |
24 |
|
|
{ |
25 |
|
|
+ s/\\040/ /g; # /proc/mount returns spaces as \040 which causes problems in matching |
26 |
|
|
next unless /\s$mntdir\s/; |
27 |
|
|
$err++; |
28 |
|
|
} |
29 |
|
|
@@ -279,6 +281,8 @@ |
30 |
|
|
# removing .dar extension |
31 |
|
|
$ref =~ s/\..*\.dar$//; |
32 |
|
|
$ref = "--ref " . $setdirname . "/" . $ref; |
33 |
|
|
+ $ref = "--ref|" . $setdirname . "/" . $ref; # | will be used to split this string in run_backup() |
34 |
|
|
+ |
35 |
|
|
$bkname = "inc-" . sprintf("%03d", $incnum) . "-". $bkname; |
36 |
|
|
} |
37 |
|
|
} |
38 |
|
|
@@ -326,7 +330,7 @@ |
39 |
|
|
|
40 |
|
|
$report .= "Moving backup files to target directory $setdirname \n"; |
41 |
|
|
|
42 |
|
|
-foreach (<$tmpdir/$id/$bkname*>) |
43 |
|
|
+foreach (bsd_glob("$tmpdir/$id/$bkname*")) |
44 |
|
|
{ |
45 |
|
|
ldie("Error while moving backup file $_ from temporary dir $tmpdir/$id to $setdirname : $!") |
46 |
|
|
unless move($_, $setdirname); |
47 |
|
|
@@ -374,7 +296,8 @@ |
48 |
|
|
my @bknum; |
49 |
|
|
my @setd; |
50 |
|
|
my @bkname; |
51 |
|
|
-open(DAR_LIST, "/usr/bin/dar_manager -Q -B $catalog -l |"); |
52 |
|
|
+open(DAR_LIST, "/usr/bin/dar_manager -Q -B \"$catalog\" -l |"); |
53 |
|
|
+ |
54 |
|
|
while (<DAR_LIST>) |
55 |
|
|
{ |
56 |
|
|
next unless ($_ =~ /set/); |
57 |
|
|
@@ -426,8 +426,8 @@ |
58 |
|
|
} |
59 |
|
|
|
60 |
|
|
# Check free disk space |
61 |
|
|
-my $df = qx(/bin/df -Ph $mntdir); |
62 |
|
|
-if ($df =~ /^\S+\s+(\S+)\s+(\S+)\s+(\S+)\s+(\d*%)/mi) |
63 |
|
|
+my $df = qx(/bin/df -Ph \"$mntdir\"); |
64 |
|
|
+if ($df =~ /(\S+)\s+(\S+)\s+(\S+)\s+(\d*%)/) |
65 |
|
|
{ |
66 |
|
|
$report .= "Disk usage $2, $4 full, $3 available\n"; |
67 |
|
|
} |
68 |
|
|
@@ -513,7 +517,7 @@ |
69 |
|
|
my $killerpid = undef; |
70 |
|
|
|
71 |
|
|
eval { |
72 |
|
|
- ($pid = open INPUT, "-|", "/usr/bin/dar", "-Q", "--create", "$tmpdir/$id/$bkname", split(/\s+/,$ref), "-B", "/etc/dar/$job.dcf") or ldie("cannot start : $!" ); |
73 |
|
|
+ ($pid = open INPUT, "-|", "/usr/bin/dar", "-Q", "--create", "$tmpdir/$id/$bkname", split(/\|/,$ref), "-B", "/etc/dar/$job.dcf") or ldie("cannot start : $!" ); |
74 |
|
|
|
75 |
|
|
if ($pid) { |
76 |
|
|
$killerpid = start_dar_killer($pid, $timeout); } |
77 |
|
|
diff -ruN e-smith-backup-2.2.0.old/root/etc/e-smith/web/functions/backup e-smith-backup-2.2.0/root/etc/e-smith/web/functions/backup |
78 |
|
|
--- e-smith-backup-2.2.0.old/root/etc/e-smith/web/functions/backup 2013-07-06 08:13:49.000000000 -0700 |
79 |
|
|
+++ e-smith-backup-2.2.0/root/etc/e-smith/web/functions/backup 2013-07-06 11:57:19.000000000 -0700 |
80 |
|
|
@@ -1783,7 +1783,7 @@ |
81 |
|
|
|
82 |
|
|
# Finding existing backups |
83 |
|
|
|
84 |
|
|
- find { wanted => \&$setbackuplist, untaint => 1 }, $mntbkdir ; |
85 |
|
|
+ find { wanted => \&$setbackuplist, untaint => 1, untaint_pattern => qr|^([-+@\w\s./]+)$|}, $mntbkdir ; |
86 |
|
|
|
87 |
|
|
my %blabels = (); |
88 |
|
|
my @blabels; |
89 |
|
|
@@ -1936,7 +1936,7 @@ |
90 |
|
|
# find list of available backups and verify |
91 |
|
|
# it contains all backups needed for full restore |
92 |
|
|
|
93 |
|
|
- find { wanted => \&$backupsetlist, untaint => 1 }, $set ; |
94 |
|
|
+ find { wanted => \&$backupsetlist, untaint => 1, untaint_pattern => qr|^([-+@\w\s./]+)$| }, $set ; |
95 |
|
|
|
96 |
|
|
my $key; |
97 |
|
|
my $num = 0; |
98 |
|
|
@@ -2185,7 +2185,7 @@ |
99 |
|
|
|
100 |
|
|
# Finding existing backups |
101 |
|
|
|
102 |
|
|
- find { wanted => \&$setbackupflist, untaint => 1 }, $mntbkdir ; |
103 |
|
|
+ find { wanted => \&$setbackupflist, untaint => 1, untaint_pattern => qr|^([-+@\w\s./]+)$| }, $mntbkdir ; |
104 |
|
|
|
105 |
|
|
my %blabels = (); |
106 |
|
|
my @blabels; |
107 |
|
|
@@ -2343,7 +2343,7 @@ |
108 |
|
|
# finding list of available backups |
109 |
|
|
# and verifying all needed backup files are available |
110 |
|
|
|
111 |
|
|
- find { wanted => \&$backupsetlist, untaint => 1 }, $set ; |
112 |
|
|
+ find { wanted => \&$backupsetlist, untaint => 1, untaint_pattern => qr|^([-+@\w\s./]+)$| }, $set ; |
113 |
|
|
|
114 |
|
|
my $key; |
115 |
|
|
my $num = 0; |
116 |
|
|
@@ -2985,11 +2985,11 @@ |
117 |
|
|
|
118 |
|
|
if ($when) |
119 |
|
|
{ |
120 |
|
|
- $restorerr = system ("/usr/bin/dar_manager -B $mntbkdir/dar-catalog -w $when -e '-N -R / -w' -r @restorelist"); |
121 |
|
|
+ $restorerr = system ("/usr/bin/dar_manager -B \"$mntbkdir/dar-catalog\" -w $when -e '-N -R / -w' -r @restorelist"); |
122 |
|
|
} |
123 |
|
|
else |
124 |
|
|
{ |
125 |
|
|
- $restorerr = system ("/usr/bin/dar_manager -B $mntbkdir/dar-catalog -e '-N -R / -w' -r @restorelist"); |
126 |
|
|
+ $restorerr = system ("/usr/bin/dar_manager -B \"$mntbkdir/dar-catalog\" -e '-N -R / -w' -r @restorelist"); |
127 |
|
|
} |
128 |
|
|
|
129 |
|
|
if ($mounted) |