-#! /bin/sh
+#! @SHELL@
#
# Amanda, The Advanced Maryland Automatic Network Disk Archiver
# Copyright (c) 1991-1999 University of Maryland at College Park
# |- ...
# |- slotn
# where 'slot_root_dir' is the tapedev 'file:xxx' parameter and 'n'
-# is the tapecycle parameter.
-#
+# is the LASTSLOT value of your changerfile config file. If LASTSLOT is
+# not defined, the value of the tapecycle parameter is used.
+#
# To use this driver, just put the line 'tpchanger "chg-disk"' in your
# amanda.conf.
#
-# Example of use:
+# Example of use (amanda.conf):
# --- cut here ---
# tapedev "file:/BACKUP2/slots/"
# rawtapedev "file:/BACKUP2/slots/"
# changerdev "/dev/null"
+# changerfile "chg-disk"
# tpchanger "chg-disk"
# changerfile "/usr/local/amanda/etc/changer"
# tapetype HARD-DISK
# }
# --- cut here ---
#
-# The number of slot is equal to your tapecyle.
+# Example changerfile (chg-disk.conf):
+# --- cut here ---
+# LASTSLOT=12
+# --- cut here ---
+#
+# The number of slot is equal to your LASTSLOT or tapecycle.
# You must create the slots and data directory.
#
MYNAME=$0
TAPE=`amgetconf$SUF tapedev`
+if test X"$TAPE" == X""; then
+ echo "<none> tapedev not specified in amanda.conf."
+ exit 2
+fi
SLOTDIR=`echo $TAPE | sed 's/^file://'`
isinteger() {
expr "$1" : '[0-9][0-9]*$' > /dev/null 2>&1
}
+# Need rwx access to the virtual tape itself.
+if ! test -d $SLOTDIR; then
+ echo "<none> Virtual-tape directory $SLOTDIR does not exist."
+ exit 2
+fi
+if ! test -w $SLOTDIR; then
+ echo "<none> Virtual-tape directory $SLOTDIR is not writable."
+ exit 2
+fi
+
+
# need rwx access to directory of changer file
CHANGERFILE=`amgetconf$SUF changerfile`
+conf_match=`expr "$CHANGERFILE" : .\*\.conf\$`
+if [ $conf_match -ge 6 ]; then
+ CONFIGFILE=$CHANGERFILE
+ CHANGERFILE=`echo $CHANGERFILE | sed 's/.conf$//g'`
+else
+ CONFIGFILE=$CHANGERFILE.conf
+fi
+
CFDir=`dirname ${CHANGERFILE}`
[ -d ${CFDir} -a -r ${CFDir} -a -w ${CFDir} -a -x ${CFDir} ] ||
- { echo "$MYNAME: need 'rwx' access to '$CFDir'" ; exit 2 ; }
+ { echo "<none> $MYNAME: need 'rwx' access to '$CFDir'"; exit 2 ; }
# check or create changer metadata files
ACCESSFILE=$CHANGERFILE-access
[ -f $ACCESSFILE -a -r $ACCESSFILE -a -w $ACCESSFILE ] ||
echo 0 > $ACCESSFILE ||
- { echo "$MYNAME: could not access or create '$ACCESSFILE'" ; exit 2 ; }
+ { echo "<none> $MYNAME: could not access or create '$ACCESSFILE'" ; exit 2 ; }
CLEANFILE=$CHANGERFILE-clean
[ -f $CLEANFILE -a -r $CLEANFILE -a -w $CLEANFILE ] ||
echo 0 > $CLEANFILE ||
- { echo "$MYNAME: could not access or create '$CLEANFILE'" ; exit 2 ; }
+ { echo "<none> $MYNAME: could not access or create '$CLEANFILE'" ; exit 2 ; }
SLOTFILE=$CHANGERFILE-slot
[ -f $SLOTFILE -a -r $SLOTFILE -a -w $SLOTFILE ] ||
echo 0 > $SLOTFILE ||
- { echo "$MYNAME: could not access or create '$SLOTFILE'" ; exit 2 ; }
+ { echo "<none> $MYNAME: could not access or create '$SLOTFILE'" ; exit 2 ; }
# read and check metadata
ACCESSCOUNT=`cat $ACCESSFILE`
FIRSTSLOT=1
LASTSLOT=`amgetconf$SUF tapecycle`
+if test -r $CONFIGFILE; then
+ . $CONFIGFILE
+fi
CURSLOT=0
CLEANSLOT=$LASTSLOT
+NSLOT=`expr $LASTSLOT - $FIRSTSLOT + 1`
load() {
WHICHSLOT=$1;
if [ $WHICHSLOT -ge $FIRSTSLOT -a $WHICHSLOT -le $LASTSLOT ]; then
NEWSLOT=$WHICHSLOT
else
- echo "0 illegal request"
+ echo "$WHICHSLOT illegal slot"
exit 1
fi
elif [ $WHICHSLOT = "clean" ]; then
NEWSLOT=$CLEANSLOT
else
- echo "0 illegal request"
+ echo "$WHICHSLOT illegal request"
exit 1
fi
if [ $NEWSLOT = $CURSLOT ]; then
info() {
readstatus
- echo "$CURSLOT $LASTSLOT $FIRSTSLOT"
+ echo "$CURSLOT $NSLOT 1"
exit 0
}
eject
;;
*)
- echo "Unknown option $1"
+ echo "<none> Unknown option $1"
exit 2
;;
esac