burn.sh
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
burn.sh [2006/11/09 17:42] – 205.252.23.4 | burn.sh [2008/06/11 12:56] (current) – old revision restored 195.35.72.54 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== burn.sh ====== | ||
+ | |||
+ | **Parameters** | ||
+ | |||
+ | | '' | ||
+ | | '' | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | |||
+ | # set up CD writer options | ||
+ | CD_DEVICE=" | ||
+ | CD_SPEED=16 | ||
+ | CD_OPTS=" | ||
+ | |||
+ | # set up DVD writer options | ||
+ | DVD_DEVICE="/ | ||
+ | DVD_SPEED=4 | ||
+ | |||
+ | # do not touch | ||
+ | TOTAL=0 | ||
+ | ERROR=0 | ||
+ | |||
+ | ################# | ||
+ | |||
+ | function showhelp(){ | ||
+ | cat <<EOF | ||
+ | NAME | ||
+ | | ||
+ | |||
+ | SYNOPSIS | ||
+ | | ||
+ | |||
+ | DESCRIPTION | ||
+ | | ||
+ | | ||
+ | to a CD or DVD. burn.sh does some filesystem limitation checks and | ||
+ | | ||
+ | |||
+ | OPTIONS | ||
+ | -s | ||
+ | Call the burning process in simulation mode | ||
+ | -n < | ||
+ | | ||
+ | the current date is used | ||
+ | EOF | ||
+ | } | ||
+ | |||
+ | function checkfiles(){ | ||
+ | for file in " | ||
+ | do | ||
+ | # check filename | ||
+ | length=`basename " | ||
+ | if [ " | ||
+ | then | ||
+ | echo " | ||
+ | ERROR=1 | ||
+ | fi | ||
+ | # check filesize | ||
+ | if [ -f $file ] | ||
+ | then | ||
+ | size=`du -k " | ||
+ | if [ " | ||
+ | then | ||
+ | echo " | ||
+ | ERROR=1 | ||
+ | fi | ||
+ | let "TOTAL = TOTAL + size" | ||
+ | fi | ||
+ | # recurse directories | ||
+ | if [ -d $file ] | ||
+ | then | ||
+ | checkfiles `find " | ||
+ | fi | ||
+ | done | ||
+ | } | ||
+ | |||
+ | function burn_dvd(){ | ||
+ | if [ " | ||
+ | then | ||
+ | SIM=" | ||
+ | fi | ||
+ | growisofs $SIM -dvd-compat -speed=$DVD_SPEED -Z $DVD_DEVICE -r -J -V " | ||
+ | } | ||
+ | |||
+ | function burn_cd(){ | ||
+ | if [ " | ||
+ | then | ||
+ | SIM=" | ||
+ | fi | ||
+ | echo -n " | ||
+ | echo " | ||
+ | mkisofs -V " | ||
+ | | ||
+ | } | ||
+ | |||
+ | ################# | ||
+ | |||
+ | # get parameters | ||
+ | while getopts " | ||
+ | do | ||
+ | case $OPTION in | ||
+ | n ) NAME=$OPTARG;; | ||
+ | s ) SIMULATE=1;; | ||
+ | esac | ||
+ | done | ||
+ | shift $(($OPTIND - 1)) | ||
+ | |||
+ | # set name if not set | ||
+ | if [ -z " | ||
+ | then | ||
+ | NAME=`date ' | ||
+ | fi | ||
+ | |||
+ | # check for at least one argument | ||
+ | if [ -z $1 ] | ||
+ | then | ||
+ | showhelp | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | # check files | ||
+ | echo " | ||
+ | checkfiles " | ||
+ | |||
+ | # abort on error | ||
+ | if [ " | ||
+ | then | ||
+ | echo "An error occured. Please fix and try again" | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | echo | ||
+ | echo "A toal of $TOTAL kilobytes needs to be written" | ||
+ | if [ " | ||
+ | then | ||
+ | echo " | ||
+ | else | ||
+ | echo "Real Write - using name ' | ||
+ | fi | ||
+ | echo | ||
+ | |||
+ | if [ " | ||
+ | then | ||
+ | echo "I think it should fit on a 700MB CD-R" | ||
+ | echo " | ||
+ | read foo | ||
+ | MEDIA=" | ||
+ | else | ||
+ | echo "This does not fit on a CD-R - We'll use a DVD-R" | ||
+ | echo " | ||
+ | read foo | ||
+ | MEDIA=" | ||
+ | fi | ||
+ | |||
+ | if [ " | ||
+ | then | ||
+ | if dvd+rw-mediainfo $DVD_DEVICE >/ | ||
+ | then | ||
+ | echo "CD-R would suffice but DVD Media detected - Using DVD-R" | ||
+ | MEDIA=" | ||
+ | fi | ||
+ | fi | ||
+ | |||
+ | echo " | ||
+ | |||
+ | if [ " | ||
+ | then | ||
+ | burn_cd " | ||
+ | else | ||
+ | burn_dvd " | ||
+ | fi | ||
+ | </ | ||