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

Annotation 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 - (hide annotations) (download)
Mon Feb 3 04:48:43 2014 UTC (10 years, 4 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 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 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