#!/bin/sh

# jdbkdir DVD_TITLE DIR
# Author: John D. Rowell <me@jdrowell.com>
# License: GPL
# (C) 2005

TEMPFILE=`tempfile`
#BATCH_SIZE=4700000000
# need some space for structures
BATCH_SIZE=4690000000

DVD_TITLE=$1
DVD_COUNT=1
DIR=$2

write_dvd() {
	FILES=`wc -l $TEMPFILE`
	echo "   *** Writing DVD! $FILES files"
	growisofs -Z /dev/dvd -D -R -J -joliet-long -graft-points -path-list $TEMPFILE -V ${DVD_TITLE}_${DVD_COUNT} || exit 1
	let DVD_COUNT++
	eject /dev/dvd
	echo "   *** Insert next DVD and press ENTER"
	read -u 3 
}

backup() {

	REMAINING=$BATCH_SIZE

	exec 3>&1
	find "$1" -type f | sort | 
	for ((;;)); 
	do
		read FILE
		echo -n "."
		test -z "$FILE" && break

		SIZE=`stat -c "%s" "$FILE"`
		REMAINING=$(($REMAINING-$SIZE))
		if [ $REMAINING -lt 0 ];
		then
			write_dvd
			>$TEMPFILE
			REMAINING=$BATCH_SIZE
		fi
		#echo $FILE
		echo "$FILE=$FILE" >> $TEMPFILE
		#echo "Size: $SIZE -- Total: $TOTAL"
	done

	echo ""
	write_dvd 

	return 0
}

backup "$DIR"

rm $TEMPFILE




