[XCSSA] Copying LOTS of files to DVD's
xcssa@xcssa.org
xcssa@xcssa.org
Tue, 11 Jul 2006 19:12:58 -0500
------=_Part_492_33373001.1152663178417
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
On 7/11/06, xcssa-admin@xcssa.org <xcssa-admin@xcssa.org> wrote:
> Anyone have a suggestion for a completely free utility that will just
> take a bunch of files (like 40gigs) and automatically burn them across
> several DVD's without having to group them in 4.5gig sets manually?
This is actually a difficult problem, technically NP-hard, it's the
bin-packing knapsack problem. I have attached a small Perl script
that I used to use to fit filesystems onto backup tapes. It uses a
greedy first-fit approximation rather than computing an optimal fit,
but it works well enough in practice (is provably within 17/10 OPT + 2
volumes).
--
Resolve is what distinguishes a person who has failed from a failure.
Unix "guru" for sale or rent - http://www.lightconsulting.com/~travis/ -><-
GPG fingerprint: 9D3F 395A DAC5 5CCC 9066 151D 0A6B 4098 0C55 1484
------=_Part_492_33373001.1152663178417
Content-Type: application/octet-stream; name=fit_volume
Content-Transfer-Encoding: base64
X-Attachment-Id: f_epixq73l
Content-Disposition: attachment; filename="fit_volume"
IyEgL3Vzci9sb2NhbC9iaW4vcGVybCAtdwojICRJZDogZml0X3ZvbHVtZS5wbCA5NzI2IDIwMDQt
MDYtMjYgMTc6MjI6NDNaIHVzZXIgJAojIENvcHlyaWdodCAoYykgMjAwNiBzb2xpbnltQGdtYWls
LmNvbQoKdXNlIHN0cmljdDsKdXNlIGludGVnZXI7IAoKZGllIDw8RU9NClVzYWdlOiAkMCB2b2x1
bWVfc2l6ZSA8IGlucHV0X2ZpbGUKV2hlcmUgaW5wdXRfZmlsZSBpcyBvZiB0aGUgZm9sbG93aW5n
IGZvcm1hdDoKbGFiZWxfMSBzaXplXzEKbGFiZWxfMiBzaXplXzIKLi4uCkVPTQppZiAkI0FSR1Yg
IT0gMDsKCiMgTk9URTogY3VycmVudGx5IGFzc3VtZXMgZml4ZWQtc2l6ZSB2b2x1bWVzCm15ICR2
b2x1bWVfc2l6ZSA9ICRBUkdWWzBdOwoKIyBQcmVwYXJlIGZvciByZWFkaW5nIGluIHRoZSBmaWxl
cyBhbmQgc2l6ZXMuCm15IEBpbnB1dF9maWxlcyA9ICgpOwpteSBAbGluZTsKCiMgUHJvY2VzcyB0
aGUgbGlzdCBvZiBmaWxlcyBhbmQgc2l6ZXMsIHB1dHRpbmcgdGhlbSBpbiBAaW5wdXRfZmlsZXMu
CkxJTkU6CndoaWxlICg8U1RESU4+KSB7CiAgICBuZXh0IExJTkUgaWYgL15ccyojLzsgIyBJZ25v
cmUgY29tbWVudHMuCiAgICBjaG9tcDsKICAgIEBsaW5lID0gc3BsaXQ7CiAgICAjIFNhbml0eSBj
aGVjayBvbiBpbnB1dCBsaW5lLgogICAgaWYgKCQjbGluZSAhPSAxKSB7IHdhcm4gIm1hbGZvcm1l
ZCBlbnRyeSwgaWdub3Jpbmc6ICRfXG4iOyBuZXh0IExJTkU7IH0KICAgICMgQnJlYWsgaW50byBp
bmRpdmlkdWFsIGZpZWxkcy4KICAgIG15ICgkbmFtZSwgJHNpemUpID0gQGxpbmU7CiAgICBwdXNo
IEBpbnB1dF9maWxlcywgeyAnbmFtZScgPT4gJG5hbWUsICdzaXplJyA9PiAkc2l6ZSB9Owp9Cgpt
eSAkbGF5b3V0ID0gZml4ZWRfZml0KCR2b2x1bWVfc2l6ZSwgXEBpbnB1dF9maWxlcyk7CgojIFRo
ZSBhbnN3ZXIgaXMgaW4gdGhlIGZvcm0gb2YgYW4gYXJyYXkgb2Ygdm9sdW1lcy4KZm9yZWFjaCBt
eSAkdm9sdW1lIChAJGxheW91dCkgewogICAgIyBFYWNoIHZvbHVtZSBpcyBhbiBhcnJheSBvZiBm
aWxlcy4KICAgIGZvcmVhY2ggbXkgJGlucHV0X2ZpbGUgKEAkdm9sdW1lKSB7CglwcmludCAiJGlu
cHV0X2ZpbGUtPnsnbmFtZSd9ICRpbnB1dF9maWxlLT57J3NpemUnfVxuIjsKICAgIH0KICAgICMg
U2VwZXJhdGUgZWFjaCB2b2x1bWUgYnkgYSBibGFuayBsaW5lLgogICAgcHJpbnQgIlxuIjsKfQoK
IyBEbyBhIGdyZWVkeSBhcHByb3hpbWF0aW9uOyB0YWtlIHRoZSBsYXJnZXN0IGZpbGUgdGhhdCB3
aWxsIGZpdCBvbiB0aGUKIyB0YXBlLCBhZGp1c3QgdGhlIHJlbWFpbmluZyBzaXplLCBhbmQgcmVw
ZWF0LgpzdWIgZml4ZWRfZml0IHsKICAgIG15KCR2b2x1bWVfc2l6ZSwgJGlucHV0X2ZpbGVzKSA9
IEBfOwogICAgbXkgQGxheW91dCA9ICgpOwogICAgIyBHZXQgdGhlIGxpc3Qgb2YgaW5wdXQgZmls
ZXMgaW4gb3JkZXIgb2YgZGVzY2VuZGluZyBzaXplcy4KICAgIG15KEBkZXNjZW5kaW5nX3NpemVz
KQoJPSBzb3J0IHsgJGItPnsnc2l6ZSd9IDw9PiAkYS0+eydzaXplJ30gfSBAJGlucHV0X2ZpbGVz
OwogICAgIyBUcmVhdCBvdmVyc2l6ZSBmaWxlcyBhcyB0aGUgc2FtZSBzaXplIGFzIHRoZSB2b2x1
bWUsIHJldGFpbmluZyBvcmRlcmluZy4KICAgIGZvcmVhY2ggKEBkZXNjZW5kaW5nX3NpemVzKSB7
CglpZiAoJF8tPnsnc2l6ZSd9ID4gJHZvbHVtZV9zaXplKSB7CgkgICAgd2FybiAiJDA6ICRfLT57
J25hbWUnfSB3aWxsIG5vdCBjb21wbGV0ZWx5IGZpdC5cbiI7CgkgICAgJF8tPnsnc2l6ZSd9ID0g
JHZvbHVtZV9zaXplOwoJfQogICAgfQogICAgIyBXaGlsZSB3ZSd2ZSBzdGlsbCBnb3QgZmlsZXMg
dG8gYWxsb2NhdGUuLi4KICAgIHdoaWxlIChAZGVzY2VuZGluZ19zaXplcykgewoJIyBTZXQgaG93
IG11Y2ggc3BhY2Ugd2UgaGF2ZSByZW1haW5pbmcuCglteSAkcmVtYWluaW5nID0gJHZvbHVtZV9z
aXplOwoJIyB3aGF0J3Mgb24gdGhpcyB2b2x1bWUgc28gZmFyLCB3aGF0IHdpbGwgZml0LCB0aGUg
YmVzdCBmaXQgcmVtYWluaW5nCglteSAoQHRoaXNfdm9sdW1lLCBAd2lsbF9maXQsICRiZXN0X2Zp
dCkgPSAoKTsKICAgICAgRklMRVM6Cgl3aGlsZSAoMSkgewoJICAgICMgRGV0ZXJtaW5lIHdoaWNo
IGZpbGVzIHdpbGwgZml0IG9uIHRoaXMgdm9sdW1lLgoJICAgIEB3aWxsX2ZpdCA9IGdyZXAgeyAk
Xy0+eydzaXplJ30gPD0gJHJlbWFpbmluZyB9IEBkZXNjZW5kaW5nX3NpemVzOwoJICAgICMgSWYg
bm9uZSB3aWxsIGZpdCwgZ28gdG8gdGhlIG5leHQgdm9sdW1lLgoJICAgIGxhc3QgRklMRVMgaWYg
JCN3aWxsX2ZpdCA9PSAtMTsKCSAgICAjIFBpY2sgdGhlIGZpbGUgdGhhdCBiZXN0IGZpdHMgKHRo
ZSBiaWdnZXN0IHRoYXQgd2lsbCBzdGlsbCBmaXQpLgoJICAgICRiZXN0X2ZpdCA9ICR3aWxsX2Zp
dFswXTsKCSAgICAjIFB1dCBpdCBhdCB0aGUgZnJvbnQgb2YgdGhlIGZpbGVzIG9uIHRoaXMgdm9s
dW1lLgoJICAgICMgTk9URTogVGhpcyBtYWtlcyBsaXR0bGUgZmlsZXMgZ28gZmlyc3QsIGZvciBs
ZXNzIHNlZWtpbmcuCgkgICAgdW5zaGlmdChAdGhpc192b2x1bWUsICRiZXN0X2ZpdCk7CgkgICAg
IyBSZW1vdmUgdGhlIGJlc3QgZml0IGZyb20gdGhlIGxpc3Qgb2YgZmlsZXMgcmVtYWluaW5nLgoJ
ICAgIEBkZXNjZW5kaW5nX3NpemVzID0gZ3JlcCB7ICRfICE9ICRiZXN0X2ZpdCB9IEBkZXNjZW5k
aW5nX3NpemVzOwoJICAgICMgVXBkYXRlIHRoZSBhbW91bnQgb2Ygc3BhY2UgcmVtYWluaW5nIG9u
IHRoaXMgdGFwZS4KCSAgICAkcmVtYWluaW5nIC09ICRiZXN0X2ZpdC0+eydzaXplJ307Cgl9Cgkj
IEFkZCB0aGlzIFtmaW5pc2hlZF0gdm9sdW1lIHRvIHRoZSBvdmVyYWxsIGZpbGUgbGF5b3V0LgoJ
cHVzaCBAbGF5b3V0LCBbIEB0aGlzX3ZvbHVtZSBdOwogICAgfQogICAgIyBSZXR1cm4gdGhlIG92
ZXJhbGwgZmlsZSBsYXlvdXQuCiAgICByZXR1cm4gXEBsYXlvdXQ7Cn0KCmV4aXQgMDsK
------=_Part_492_33373001.1152663178417--