3 # Amanda, The Advanced Maryland Automatic Network Disk Archiver
4 # Copyright (c) 1991-1999 University of Maryland at College Park
7 # Permission to use, copy, modify, distribute, and sell this software and its
8 # documentation for any purpose is hereby granted without fee, provided that
9 # the above copyright notice appear in all copies and that both that
10 # copyright notice and this permission notice appear in supporting
11 # documentation, and that the name of U.M. not be used in advertising or
12 # publicity pertaining to distribution of the software without specific,
13 # written prior permission. U.M. makes no representations about the
14 # suitability of this software for any purpose. It is provided "as is"
15 # without express or implied warranty.
17 # U.M. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
18 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL U.M.
19 # BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
21 # OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
22 # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
24 # Author: Jean-Christian SIMONETTI, System and Network Engineer
26 # Sophia Antipolis, France
28 # This changer script is based on a directory structure like:
36 # where 'slot_root_dir' is the tapedev 'file:xxx' parameter and 'n'
37 # is the tapecycle parameter.
39 # To use this driver, just put the line 'tpchanger "chg-disk"' in your
44 # tapedev "file:/BACKUP2/slots/"
45 # rawtapedev "file:/BACKUP2/slots/"
46 # changerdev "/dev/null"
47 # tpchanger "chg-disk"
48 # changerfile "/usr/local/amanda/etc/changer"
50 # define tapetype HARD-DISK {
55 # The number of slot is equal to your tapecyle.
56 # You must create the slots and data directory.
61 exec_prefix=@exec_prefix@
63 libexecdir=@libexecdir@
65 PATH=$sbindir:$libexecdir:/usr/bin:/bin:/usr/sbin:/sbin:/usr/ucb:/usr/local/bin
68 USE_VERSION_SUFFIXES="@USE_VERSION_SUFFIXES@"
69 if test "$USE_VERSION_SUFFIXES" = "yes"; then
77 TAPE=`amgetconf$SUF tapedev`
78 SLOTDIR=`echo $TAPE | sed 's/^file://'`
80 CHANGERFILE=`amgetconf$SUF changerfile`
81 ACCESSFILE=$CHANGERFILE-access
82 CLEANFILE=$CHANGERFILE-clean
83 SLOTFILE=$CHANGERFILE-slot
84 [ ! -f $ACCESSFILE ] && echo 0 > $ACCESSFILE
85 [ ! -f $CLEANFILE ] && echo 0 > $CLEANFILE
86 [ ! -f $SLOTFILE ] && echo 0 > $SLOTFILE
87 ACCESSCOUNT=`cat $ACCESSFILE`
88 CLEANCOUNT=`cat $CLEANFILE`
91 LASTSLOT=`amgetconf$SUF tapecycle`
97 ln -s $SLOTDIR/slot$WHICHSLOT $SLOTDIR/data
98 echo $WHICHSLOT > $SLOTFILE
107 CURSLOT=`cat $SLOTFILE`
114 [0-9]*) TYPE="digit";;
120 if [ $WHICHSLOT = "current" ]; then
121 if [ $CURSLOT -le 0 ]; then
123 echo "$FIRSTSLOT $TAPE"
126 echo "$CURSLOT $TAPE"
129 elif [ $WHICHSLOT = "next" -o $WHICHSLOT = "advance" ]; then
130 NEWSLOT=`expr $CURSLOT + 1`
131 [ $NEWSLOT -gt $LASTSLOT ] && NEWSLOT=$FIRSTSLOT
132 elif [ $WHICHSLOT = "prev" ]; then
133 NEWSLOT=`expr $CURSLOT - 1`
134 [ $NEWSLOT -lt $FIRSTSLOT ] && NEWSLOT=$LASTSLOT
135 elif [ $WHICHSLOT = "first" ]; then
137 elif [ $WHICHSLOT = "last" ]; then
139 elif [ $TYPE = "digit" ]; then
140 if [ $WHICHSLOT -ge $FIRSTSLOT -a $WHICHSLOT -le $LASTSLOT ]; then
143 echo "0 illegal request"
146 elif [ $WHICHSLOT = "clean" ]; then
149 echo "0 illegal request"
152 if [ $NEWSLOT = $CURSLOT ]; then
153 echo "$CURSLOT $TAPE"
156 if [ $NEWSLOT = $CLEANSLOT ]; then
157 expr $CLEANCOUNT + 1 > $CLEANFILE
160 expr $ACCESSCOUNT + 1 > $ACCESSFILE
161 if [ $ACCESSCOUNT -gt $LASTSLOT ]; then
162 $MYNAME -slot clean >/dev/null
167 if [ $CURSLOT -ne 0 ]; then
171 if [ $WHICHSLOT = "advance" ]; then
172 echo "$NEWSLOT /dev/null"
176 echo "$NEWSLOT $TAPE"
182 echo "$CURSLOT $LASTSLOT $FIRSTSLOT"
188 [ $CURSLOT -gt 0 ] && unload
190 echo "$FIRSTSLOT $tape"
196 if [ $CURSLOT -le 0 ]; then
197 echo "0 Drive was not loaded"
207 while [ $# -ge 1 ];do
254 echo "Unknown option $1"