scsitape - control SCSI tape devices


SYNOPSIS

       scsitape [-f <scsi-generic-device>] commands


DESCRIPTION

       The  scsitape command controls SCSI tape drives in a plat­
       form-independent manner. As long as  'mtx'  works  on  the
       platform, so does 'scsitape'.

       Note  that 'scsitape' and your OS's native tape driver may
       stomp on each other. In particular, if  you  use  'setblk'
       and your OS's native tape driver has a different notion of
       the block size, you may get evil results.   It  is  recom­
       mended  to  use  'scsitape' only for software where you've
       written your own low-level READ and  WRITE  routines  that
       use  the  SCSI command set to directly talk to tape drives
       (i.e., you do not use the OS's native tape driver at all).


OPTIONS

       The  first  argument,  given  following  -f  , is the SCSI
       generic device corresponding to your tape drive.   Consult
       your operating system's documentation for more information
       (for example, under Linux  these  are  generally  /dev/sg0
       through  /dev/sg15,  under  FreeBSD  these  are /dev/pass0
       through /dev/passX. Under Solaris this is usually the same
       as your tape drive (Solaris has a SCSI passthrough ioctl).
       You can set the STAPE or TAPE environment variable  rather
       than use -f.


COMMANDS

       setblk <n>
                 Set  the  tape  drive's  SCSI  block size to <n>
                 bytes. (NOTE: if you are using your OS's  native
                 tape driver, THIS IS EVIL!).

       fsf <n>   Go forward by <n> tapemarks.

       bsf <n>   Go  to  immediately  previous the <n>th previous
                 tapemark. (WARNING:  This  probably  doesn't  do
                 what  you  expect -- e.g. if you are immediately
                 after a tapemark and type 'bfs 1', it  moves  to
                 immediately  *before*  that tape mark, for a sum
                 total of zero effective movement!).

       eod       Go to end of data.

       rewind    Rewind the tape drive.

       eject     Eject the tape currently in the drive.

                 all drives!).

       mark <n>    write  <n>  filemarks  (  'mark 0' flushes the
                 drive's buffers ).

       seek <n>  Seek to a logical position <n> that was reported
                 by a previous 'tapeinfo' command.

       write <blocksize>
                 write  blocks  from stdin to the tape. Chunk the
                 data into <blocksize>-sized  chunks.  *DOES  NOT
                 WRITE  OUT  A TAPEMARK!* (you will need to use a
                 subsequent mark 1 command to write  out  a  tape
                 mark).

       read [<blocksize>] [ <#blocks/#bytes> ]
                 read blocks from the tape, write them to stdout.
                 If we are in variable  block  mode,  <blocksize>
                 should  be zero (note: The maximum block size we
                 currently support  in  variable  block  mode  is
                 128K,  MAX_READ_SIZE will need to be turned into
                 a settable variable to allow bigger  reads).  If
                 <blocksize> is ommitted, we assume that we're in
                 variable block mode, and that we  are  going  to
                 read from tape until we hit a tapemark or end of
                 partition or end of tape.


AUTHORS

       This   program   was   written   by   Eric    Lee    Green
       <eric@estinc.com>.  Major portions of the 'mtxl.c' library
       used herein were written by Leonard Zubkoff.

       The SCSI read and write routines are based upon those that
       Richard  Fish wrote for Enhanced Software Technology's BRU
       16.1 product, substantially modified to work in  our  par­
       ticular environment (in particular, all the variable block
       stuff is new since BRU only does  fixed  block  reads  and
       writes,  and  the  BRU code uses bitmasks rather than bit­
       fields for the various flags and such in return values, as
       well  as the BRU code having a different SCSI API and hav­
       ing variable names considerably shorter  than  the  rather
       sesquipedalian   'mtx'   identifiers).   As   required  by
       'mtxl.c', these routines are licensed under the  GNU  Gen­
       eral Public License.


HINTS

       Under  Linux,  cat /proc/scsi/scsi will tell you what SCSI
       devices you have.  You can then refer to them as /dev/sga,


       Under  FreeBSD, camcontrol devlist will tell you what SCSI
       devices you have, along with which  pass  device  controls
       them.

       Under Solaris 7 and 8, /usr/sbin/devfsadm -C will clean up
       your /devices directory. Then find /devices  -name  'st@*'
       -print  will  return  a  list  of all tape drives. /dev on
       Solaris is apparently only of historical interest.


BUGS AND LIMITATIONS

       for scsitape read 0 <n> where   you  are  doing  variable-
       block-size  reads and wish for <n> bytes, it instead reads
       one and exactly one block from tape and  prints  that  (no
       matter  what its size). Use 'dd' on the output of scsitape
       if you want finer control.

       scsitape read 0 attempts reads of MAX_READ_SIZE, which  is
       currently  128K.  If  blocks on tape are larger than 128K,
       only the first 128K will be read -- the remainder will  be
       silently dumped in the toilet.

       This  program  does  not interact well (or at all :-) with
       your OS's native tape driver.  You will likely  see  weird
       things  happen if you attempt to intermingle scsitape com­
       mands with native tape driver operations.  Note  that  BRU
       16.1  for Solaris (and possibly others, but Solaris I know
       about) will have a 'scsi' keyword  to  bypass  the  native
       tape driver and write via direct uscsi commands, so if you
       use BRU 16.1 to write your actual tape archives. (Assuming
       that  BRU 16.1 has been released at the time that you read
       this).


AVAILABILITY

       This version of scsitape is currently being maintained  by
       Eric  Lee  Green  <eric@badtux.org>  formerly  of Enhanced
       Software Technologies Inc. as part of the 'mtx'  suite  of
       programs.   The  'mtx'  home  page  is  http://mtx.source­
       forge.net and the actual code is currently available there
       and via CVS from http://sourceforge.net/projects/mtx .


SEE ALSO

       tapeinfo(1),mtx(1)


Man(1) output converted with man2html