here is a script that help to burn plenty of data you want to keep all together in respective directories ~like MP3 :-)
basicly it just arrange size of directories to best fit on a CD, trying to fill left space on CDs with smaller directories
I've saved 8 CDs over 72 using this tip
#!/usr/bin/perl
use strict;
use warnings;
my ($k,$nom);
my $maxsize = 690_000;
my $makeiso = 0;
my $pattern = "*";
my @CD = ([0,[]]);
my $i;
my $inserted = 0;
use Data::Dumper;
for (@ARGV) {
$maxsize = $1 if /-ma*x*s*i*z*e*=(\d+)/;
$makeiso = 1 if /-mkisofs/;
$pattern = $1 if /-pattern=(.*)/;
die "usage $0 -max=xxx (maxsize in K)
-mkisofs
-pattern='*.gz'
-help" if (/-he*l*p*/) ;
}
my $pid = open(SOURCE, "du -sk $pattern|sort -nr|") or die "Couldn't g
+et SOURC
while (<SOURCE>) {
chop;
($k ,$nom ) = split /\t/,$_,2;
$inserted = 0;
if ($k > $maxsize) {
print '"' . $nom . '"' . " out of Range $k\n";
next;
}
foreach $i ( 0 .. $#CD ) {
my $rcontent = \@{$CD[$i]} ;
if ($rcontent->[0] <= ($maxsize - $k)) {
$rcontent->[0] = $rcontent->[0] + $k;
push @{$rcontent->[1]},$nom;
$inserted = 1;
}
last if $inserted;
}
if (! $inserted) { push @CD,[$k,[$nom]] };
}
close(SOURCE) or die "Couldn't close: $!\n";
if ($makeiso) {
foreach $i ( 0 .. $#CD ) {
my $rcontent = \@{$CD[$i]} ;
print "mkisofs -o cd$i.iso " . join " ", map {qq/'$_'/}
+@{$rcontent->[1]};
print "\n";
}
} else {
$Data::Dumper::Varname="CD";
print Data::Dumper::Dumper(@CD);
}
it's up to you to grep the output for setting your burn process.
on the advice of b10m I've make a mkisofs output
hope you find it usefull