/[smeserver]/rpms/e-smith-backup/sme9/e-smith-backup-2.4.0-workstation-updateDarCatalog.patch
ViewVC logotype

Contents of /rpms/e-smith-backup/sme9/e-smith-backup-2.4.0-workstation-updateDarCatalog.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download)
Mon Feb 3 04:48:43 2014 UTC (10 years, 3 months ago) by wellsi
Branch: MAIN
CVS Tags: e-smith-backup-2_4_0-25_el6_sme, e-smith-backup-2_4_0-46_el6_sme, e-smith-backup-2_4_0-23_el6_sme, e-smith-backup-2_4_0-28_el6_sme, e-smith-backup-2_4_0-35_el6_sme, e-smith-backup-2_4_0-44_el6_sme, e-smith-backup-2_4_0-37_el6_sme, e-smith-backup-2_4_0-24_el6_sme, e-smith-backup-2_4_0-45_el6_sme, e-smith-backup-2_4_0-31_el6_sme, e-smith-backup-2_4_0-30_el6_sme, e-smith-backup-2_4_0-39_el6_sme, e-smith-backup-2_4_0-40_el6_sme, e-smith-backup-2_4_0-43_el6_sme, e-smith-backup-2_4_0-32_el6_sme, e-smith-backup-2_4_0-42_el6_sme, e-smith-backup-2_4_0-34_el6_sme, e-smith-backup-2_4_0-22_el6_sme, e-smith-backup-2_4_0-36_el6_sme, e-smith-backup-2_4_0-33_el6_sme, e-smith-backup-2_4_0-26_el6_sme, e-smith-backup-2_4_0-38_el6_sme, e-smith-backup-2_4_0-29_el6_sme, e-smith-backup-2_4_0-27_el6_sme, e-smith-backup-2_4_0-41_el6_sme, HEAD
* Sun Feb 2 2014 Ian Wells <esmith@wellsi.com> 2.4.0-22.sme
- Create simplified function for updating the DarCatalog [SME: 8129]

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 2014-02-02 16:18:57.000000000 -0800
3 +++ e-smith-backup-2.4.0/root/etc/e-smith/events/actions/workstation-backup-dar 2014-02-02 20:28:48.000000000 -0800
4 @@ -248,98 +248,7 @@
5 }
6
7 # update dar_manager catalog
8 -my %backupfiles = ();
9 -my $mntbkdir;
10 -my $mounted;
11 -my $key;
12 -
13 -my $setbackuplist = sub {
14 - if ( $_ =~ /\.dar/ )
15 - {
16 - my $dir = $File::Find::dir;
17 - my $backupref;
18 - $dir =~ s/$mntbkdir\///;
19 - $_ =~ s/\..*\.dar//;
20 - $backupref = $_;
21 - $_ =~ s/.*-//;
22 - @{$backupfiles{$_}}[0] = $dir;
23 - @{$backupfiles{$_}}[1] = $backupref;
24 - }
25 -};
26 -
27 -$mntbkdir = $mntdir . '/' . $id;
28 -
29 -my $catalog = "$mntbkdir/dar-catalog";
30 -unless ( -e $catalog) # Create an empty catalog if none found
31 -{
32 - system("/usr/bin/dar_manager", "-Q", "-C", "$catalog") == 0
33 - or ldie("Unable to create dar_manager catalog.\n");
34 -}
35 -
36 -# sleep added to ensure the creation of a valid catalog
37 -sleep 1;
38 -
39 -# find available backups for the server
40 -
41 -find { wanted => \&$setbackuplist, untaint => 1 }, $mntbkdir ;
42 -
43 -# find backups in current catalog
44 -
45 -my $i = 0;
46 -my @bknum;
47 -my @setd;
48 -my @bkname;
49 -open(DAR_LIST, "/usr/bin/dar_manager -Q -B \"$catalog\" -l |");
50 -
51 -while (<DAR_LIST>)
52 -{
53 - next unless ($_ =~ /set/);
54 - chomp;
55 - ($bknum[$i], $setd[$i], $bkname[$i]) = split(' ', $_, 3);
56 - $i++;
57 -}
58 -close (DAR_LIST);
59 -
60 -# delete from catalog old removed backups
61 -
62 -my $j = $i;
63 -while ($j)
64 -{
65 - unless (-e "$setd[$j-1]/$bkname[$j-1]\.1\.dar")
66 - {
67 - my $del = $bknum[$j-1];
68 - if ($del =~ /^(.*)$/)
69 - {
70 - $del = $1;
71 - }
72 - system("/usr/bin/dar_manager", "-Q", "-B", "$catalog", "-D", "$del") == 0
73 - or ldie("Failed to delete set $del from catalog.\n");
74 - }
75 - $j--;
76 -}
77 -
78 -# add to catalog new backups
79 -
80 -foreach $key (sort keys %backupfiles)
81 -{
82 - my $exists = 0;
83 - my $rf;
84 - foreach $rf (@bkname)
85 - {
86 - $exists = 1 if ($rf eq $backupfiles{$key}[1]);
87 - last if $exists;
88 - }
89 - do
90 - {
91 - my $add = "$mntbkdir/$backupfiles{$key}[0]/$backupfiles{$key}[1]";
92 - if ($add =~ /^(.*)$/)
93 - {
94 - $add = $1;
95 - }
96 - system("/usr/bin/dar_manager", "-Q", "-B", "$catalog", "-A", "$add") == 0
97 - or ldie("Failed to add set $add to catalog.\n");
98 - } unless $exists;
99 -}
100 +&updateDarCatalog ("$mntdir/$id");
101
102 # Check free disk space
103 my $df = qx(/bin/df -Ph \"$mntdir\");
104 @@ -539,3 +448,59 @@
105 ldie("Error while creating $tree : $@. Maybe insufficient rights directory.\n") if $@;
106 }
107 }
108 +
109 +sub updateDarCatalog ()
110 +{
111 + # update dar_manager catalog
112 + my $mntbkdir = shift;
113 + my $catalog = "$mntbkdir/dar-catalog";
114 + my %backupfiles = (); # hash of backup files found on the disk.
115 +
116 + unless ( -e $catalog) # Create an empty catalog if none found
117 + {
118 + system("/usr/bin/dar_manager", "-Q", "-C", "$catalog") == 0
119 + or ldie("Unable to create dar_manager catalog.\n");
120 + }
121 +
122 + # sleep added to ensure the creation of a valid catalog
123 + sleep 1;
124 +
125 + # find available backups for the server
126 + my $setbackuplist = sub {if($_ =~ /([\w|-]+)-(\d+)\..*\.dar/){$backupfiles{$2} = $File::Find::dir."/$1-$2";}};
127 + find { wanted => \&$setbackuplist, untaint => 1 }, $mntbkdir ;
128 +
129 + my $pid = open (DAR_LIST, "-|", "/usr/bin/dar_manager", "-Q", "-B", "$catalog", "-l") or ldie ("Cannot start : $!");
130 + my $catalogIndex; # Dar refers to each backup by an index
131 + my $oldkey=0; # The key for %backupfiles is the timestamp
132 +
133 + while (<DAR_LIST>)
134 + {
135 + next unless ($_ =~ /set/);
136 + chomp;
137 + $_ =~ /(\d+).*\s[\w|-]+-(\d+)/;
138 + ($catalogIndex, $oldkey) = ($1,$2);
139 +
140 + if (defined($backupfiles{$oldkey})) # found on disk and in catalog
141 + {
142 + delete $backupfiles{$oldkey}; # so that it will not be added in the next step.
143 + }
144 + else
145 + {
146 + system("/usr/bin/dar_manager", "-Q", "-B", "$catalog", "-D", "$catalogIndex") == 0
147 + or ldie("Failed to delete set $catalogIndex from catalog.\n");
148 + }
149 + }
150 + waitpid ($pid, 0);
151 + $err = WEXITSTATUS($?);
152 + close (DAR_LIST);
153 + ldie ("Catalog error : $err") if $err;
154 +
155 + # Now add backups that were missing from the catalog in chronological order
156 + foreach my $key (sort keys %backupfiles)
157 + {
158 + next unless ($key > $oldkey); # prevent adding old backups to the catalog
159 + system("/usr/bin/dar_manager", "-Q", "-B", "$catalog", "-A", "$backupfiles{$key}") == 0
160 + or ldie("Failed to add set $backupfiles{$key} to catalog.\n");
161 + }
162 +}
163 +

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed