I once made an ugly script for a similar purpose. It is just a kludge, but when I wrote it I didn't care about execution time or prettiness. I'm sure there are more "productified" versions of the same concept around, but If you wish to get some ideas or something to start hacking on, here goes (did it in 2008, so use at your own risk!) :-)
#!/bin/sh - REPO=/export/foton/PictureStore LINKS=/export/foton/links SPLITTIX=`date '+%y%m%d-%H%M'` # kilobytes DVDSIZE=4400000 PARTPREFIX="DVD-" REPOSIZE=`du -sk ${REPO} | awk '{print $1}'` NUMPARTS=`expr $REPOSIZE / $DVDSIZE` SPLITDIR=${LINKS}/splits/${SPLITTIX} mkdir -p $SPLITDIR PARTNUM=1 PARTSIZ=0 DONESIZ=0 PARTNUM=`echo $PARTNUM | awk '{printf("%03x", $0)}'` mkdir -p ${SPLITDIR}/${PARTPREFIX}${PARTNUM} for D in `ls ${REPO}` do D_SIZ=`du -sk ${REPO}/$D | awk '{print $1}'` if test `expr $D_SIZ + $PARTSIZ` -le $DVDSIZE then # link to D in this part ln -s $REPO/$D ${SPLITDIR}/${PARTPREFIX}${PARTNUM}/$D # adjust counters PARTSIZ=`expr $PARTSIZ + $D_SIZ` DONESIZ=`expr $DONESIZ + $D_SIZ` else # next part and link to D in that echo PART $PARTNUM: $PARTSIZ kb '(target' $DVDSIZE 'kb)' PARTNUM=`expr $PARTNUM + 1` PARTNUM=`echo $PARTNUM | awk '{printf("%03x", $0)}'` PARTSIZ=$D_SIZ DONESIZ=`expr $DONESIZ + $D_SIZ` mkdir -p ${SPLITDIR}/${PARTPREFIX}${PARTNUM} ln -s $REPO/$D ${SPLITDIR}/${PARTPREFIX}${PARTNUM}/$D fi done echo wrote $DONESIZ kb in $PARTNUM parts in $SPLITDIR
I think I had the result shared through samba to a windows host that burned discs from it. If you use the above unaltered, you may wish to use mkisofs or another archiver that resolves symlinks.