34 |
my $tar_dir = $Conf{InstallDir}.'/'; |
my $tar_dir = $Conf{InstallDir}.'/'; |
35 |
$tar_dir .= $Conf{GzipTempDir} || die "GzipTempDir isn't defined in configuration"; |
$tar_dir .= $Conf{GzipTempDir} || die "GzipTempDir isn't defined in configuration"; |
36 |
|
|
37 |
die "problem with $tar_dir, check GzipTempDir in configuration\n" unless (-d $tar_dir && -w $tar_dir); |
die "problem with $tar_dir, check GzipTempDir in configuration\n" unless (-d $tar_dir); |
38 |
|
|
39 |
my $iso_dir = $Conf{InstallDir}.'/'; |
my $iso_dir = $Conf{InstallDir}.'/'; |
40 |
$iso_dir .= $Conf{ISOTempDir} || die "ISOTempDir isn't defined in configuration"; |
$iso_dir .= $Conf{ISOTempDir} || die "ISOTempDir isn't defined in configuration"; |
123 |
|
|
124 |
print "\n"; |
print "\n"; |
125 |
|
|
126 |
|
sub skip($) { |
127 |
|
my $msg = shift; |
128 |
|
print "WARNING: $msg, skipping...\n"; |
129 |
|
goto SKIP; |
130 |
|
} |
131 |
|
|
132 |
|
my $sth_archive_backup = $dbh->prepare( qq{ |
133 |
|
select |
134 |
|
backup_id, |
135 |
|
archive_id, |
136 |
|
hosts.name as host, |
137 |
|
shares.name as share, |
138 |
|
backups.num as num, |
139 |
|
from archive_backup |
140 |
|
join archive on archive_id = archive.id |
141 |
|
join backups on backup_id = backups.id |
142 |
|
join hosts on hostid = hosts.id |
143 |
|
join shares on shareid = shares.id |
144 |
|
where archive.dvd_nr = ? |
145 |
|
}); |
146 |
|
|
147 |
|
my $sth_archive_burned = $dbh->prepare( qq{ |
148 |
|
insert into archive_burned |
149 |
|
(archive_id, iso_size) |
150 |
|
values ( (select id from archive where dvd_nr =?), ?) |
151 |
|
}); |
152 |
|
|
153 |
foreach my $arc (@archives_to_burn) { |
foreach my $arc (@archives_to_burn) { |
154 |
exit if ($arc eq ']quit['); |
exit if ($arc eq ']quit['); |
155 |
|
|
156 |
my $dvd_nr = $1 if ($arc =~ m/DVD #(\d+)/); |
my $dvd_nr = $1 if ($arc =~ m/DVD #(\d+)/); |
157 |
die "BUG: can't find dvd_nr in $arc\n" unless ($dvd_nr); |
die "BUG: can't find dvd_nr in $arc\n" unless ($dvd_nr); |
158 |
|
|
159 |
print "Working on DVD #$dvd_nr\n"; |
my $tmp_dir = "/$iso_dir/$dvd_nr"; |
160 |
|
|
161 |
|
my $t = time(); |
162 |
|
|
163 |
|
print "Working on DVD #$dvd_nr in $tmp_dir\n"; |
164 |
|
|
165 |
|
my $list_file = my $iso_file = "${iso_dir}/${dvd_nr}"; |
166 |
|
$list_file .= '.list'; |
167 |
|
$iso_file .= '.iso'; |
168 |
|
|
169 |
|
if (-e $iso_file) { |
170 |
|
print "ISO $iso_file allready exists\n"; |
171 |
|
goto BURN; |
172 |
|
} |
173 |
|
|
174 |
|
$sth_archive_backup->execute($dvd_nr); |
175 |
|
|
176 |
|
open(my $list, "> $list_file") || skip "can't open $list_file: $!"; |
177 |
|
|
178 |
|
my $inc = 0; |
179 |
|
|
180 |
|
while (my $row = $sth_archive_backup->fetchrow_hashref) { |
181 |
|
my $tar_file = BackupPC::SearchLib::getGzipName($row->{'host'}, $row->{'share'}, $row->{'num'}); |
182 |
|
skip "can't find increment $tar_file: $!" unless (-r "$tar_dir/$tar_file"); |
183 |
|
print $list "$tar_dir/$tar_file\n"; |
184 |
|
$inc++; |
185 |
|
|
186 |
|
} |
187 |
|
|
188 |
|
print "Running mkisofs now for $inc increments...\n"; |
189 |
|
|
190 |
|
my $cmd = qq{ mkisofs -A BackupPC -gui -J -r -T --input-charset ISO-8859-2 -V $dvd_nr -o $iso_file -path-list $list_file }; |
191 |
|
|
192 |
|
system($cmd) == 0 or skip "can't run $cmd: $?"; |
193 |
|
|
194 |
|
my $size = (stat($iso_file))[7]; |
195 |
|
|
196 |
|
print "Created $iso_file [$size bytes] in ", fmt_time(time() - $t), "\n"; |
197 |
|
|
198 |
|
BURN: |
199 |
|
# FIXME add call to cdrecord here! |
200 |
|
$sth_archive_burned->execute($dvd_nr, $size); |
201 |
|
print "Media burn for $dvd_nr recorded\n"; |
202 |
|
|
203 |
|
SKIP: |
204 |
|
|
205 |
} |
} |
206 |
|
|