Tuesday, March 25, 2008

Using mt commands to reading and writing tapes in linux

Using mt commands to reading and writing tapes in linux
  





Working with "mt" Commands: reading and writing to tape.

The following assumes the tape device is "/dev/st0"

STEP 1 ( rewind the tape)

# mt -f /dev/nst0 rewind

STEP 2 (check to see if you are at block 0)

# mt -f /dev/nst0 tell
At block 0.

STEP 3 (Backup "tar compress" directories "one" and "two")

# tar -czf /dev/nst0 one two

STEP 4 (Check to see what block you are at)

# mt -f /dev/nst0 tell

You should get something like block 2 at this point.

STEP 5 (Rewind the tape)

# mt -f /dev/nst0 rewind

STEP 6 (List the files)

# tar -tzf /dev/nst0
one/
one/test
two/

STEP 7 (Restore directory "one" into directory "junk"). Note, you
have to first rewind the tape, since the last operation moved
ahead 2 blocks. Check this with "mt -f /dev/nst0".

# cd junk
# mt -f /dev/nst0 rewind
# mt -f /dev/nst0 tell
At block 0.
# tar -xzf /dev/nst0 one

STEP 8 (Next, take a look to see what block the tape is at)

# mt -f /dev/nst0 tell
At block 2.

STEP 9 (Now backup directories three and four)

# tar -czf /dev/nst0 three four

After backing up the files, the tape should be past block 2.
Check this.

# mt -f /dev/nst0 tell
At block 4.

Currently the following exist:

At block 1:
one/
one/test
two/

At block 2:
three/
three/samplehere
four/

At block 4:
(* This is empty *)

A few notes. You can set the blocking factor and a label
with tar. For example:

$ tar --label="temp label" --create --blocking-factor=128 --file=/dev/nst0 Notes

But note if you try to read it with the default, incorrect blocking
factor, then, you will get the following error:

$ tar -t --file=/dev/nst0
tar: /dev/nst0: Cannot read: Cannot allocate memory
tar: At beginning of tape, quitting now
tar: Error is not recoverable: exiting now

However this is easily fixed with the correct blocking factor

$ mt -f /dev/nst0 rewind
$ tar -t --blocking-factor=128 --file=/dev/nst0
temp label
Notes

Take advantage of the label command.

$ MYCOMMENTS="Big_important_tape"
$ tar --label="$(date +%F)"+"${MYCOMMENTS}"

Writing to tape on a remote 192.168.1.155 computer

$ tar cvzf - ./tmp | ssh -l chirico 192.168.1.155 '(mt -f /dev/nst0 rewind; dd of=/dev/st0 )'

Restoring the contents from tape on a remote computer

$ ssh -l chirico 192.168.1.155 '(mt -f /dev/nst0 rewind; dd if=/dev/st0 )'|tar xzf -

Getting data off of tape with dd command with odd blocking factor. Just set ibs very high

$ mt -f /dev/nst0 rewind
$ tar --label="Contenets of Notes" --create --blocking-factor=128 --file=/dev/nst0 Notes
$ mt -f /dev/nst0 rewind
$ dd ibs=1048576 if=/dev/st0 of=notes.tar

The above will probably work with ibs=64k as well

No comments: