---
name: "rmt-dump"
section: "8"
platform: "linux"
package: "dump"
version: "0.4b49-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/rmt-dump"
---

# rmt-dump(8)

remote magtape protocol module

## NAME

rmt - remote magtape protocol module

## SYNOPSIS

**rmt**

## DESCRIPTION

**Rmt** is a program used by the remote  [**dump**(8)](/dump/8.md), [**restore**(8)](/restore/8.md) or [**tar**(1)](/tar/1.md) programs in manipulating a magnetic tape drive through an interprocess communication connection. **Rmt** is normally started up with an [**rexec**(3)](/rexec/3.md) or [**rcmd**(3)](/rcmd/3.md) call.

The  **rmt** program accepts requests specific to the manipulation of magnetic tapes,  performs the commands, then responds with a status indication.  All responses  are in **ASCII** and in one of the following two forms.

Successful commands have responses of:

**A*number*\\n**

where *number* is an **ASCII** representation of a decimal number.

Unsuccessful commands are responded to with:

**E*error-number*\\n*error-message*\\n**

where  *error-number* is one of the possible error numbers described in [**intro**(2)](/intro/2.md) and *error-message* is the corresponding error string as printed from a call to [**perror**(3)](/perror/3.md).

The protocol is comprised of the following commands, which are sent as  indicated - no spaces are supplied between the command and its arguments, or between its arguments, and \\n indicates that a newline should be supplied:

- **O*device*\\n*mode*\\n**

  Open the specified  *device* using the indicated *mode*. *Device* is a full pathname and *mode* is an **ASCII** representation of a decimal number suitable for passing to [**open**(2)](/open/2.md). If a device had already been opened, it is closed before a new open is performed.

- **C*device*\\n**

  Close the currently open device.  The *device* specified is ignored.

- **L*whence*\\n*offset*\\n**

  Perform an [**lseek**(2)](/lseek/2.md) operation using the specified parameters. The response value is that returned from the **lseek** call.

- **W*count*\\n**

  Write data onto the open device. **Rmt** reads *count* bytes from the connection, aborting if a premature end-of-file is encountered. The response value is that returned from the [**write**(2)](/write/2.md) call.

- **R*count*\\n**

  Read *count* bytes of data from the open device. If *count* exceeds the size of the data buffer (10 kilobytes), it is truncated to the  data buffer size. **Rmt** then performs the requested  [**read**(2)](/read/2.md) and responds with  **A*count-read*\\n** if the read was successful; otherwise an error in the standard format is  returned. If the read was successful, the data read is then sent.

- **I*operation*\\n*count*\\n**

  Perform a **MTIOCOP** [**ioctl**(2)](/ioctl/2.md) command using the specified parameters.  The parameters are interpreted as the **ASCII** representations of the decimal values to place in the  **mt\_op** and **mt\_count** fields of the structure used in the **ioctl** call.  The return value is the *count* parameter when the operation is successful.

-

  By issuing the **I-1\\n0\\n** command, a client will specify that he is using the VERSION 1 protocol.

-

  For a VERSION 0 client, the *operation* parameter is the platform  **mt\_op** value (could be different if the client and the **rmt** server are on two different platforms). For a VERSION 1 client, the  *operation* parameter is standardized as below:

  - **0**

    Issue a  **MTWEOF** command (write *count* end-of-file records).

  - **1**

    Issue a  **MTFSF** command (forward space over *count* file marks).

  - **2**

    Issue a  **MTBSF** command (backward space over *count* file marks).

  - **3**

    Issue a  **MTFSR** command (forward space *count* inter-record gaps).

  - **4**

    Issue a  **MTBSR** command (backward space *count* inter-record gaps).

  - **5**

    Issue a  **MTREW** command (rewind).

  - **6**

    Issue a  **MTOFFL** command (rewind and put the drive offline).

  - **7**

    Issue a **MTNOP** command (no operation, set status only).

- **i*operation*\\n*count*\\n**

  Perform an extended **MTIOCOP** [**ioctl**(2)](/ioctl/2.md) command using the specified parameters. The parameters are interpreted as the **ASCII** representations of the decimal values to place in the  **mt\_op** and **mt\_count** fields of the structure used in the **ioctl** call.  The return value is the *count* parameter when the operation is successful. The possible operations are:

  - **0**

    Issue a  **MTCACHE** command (switch cache on).

  - **1**

    Issue a  **MTNOCACHE** command (switch cache off).

  - **2**

    Issue a  **MTRETEN** command (retension the tape).

  - **3**

    Issue a  **MTERASE** command (erase the entire tape).

  - **4**

    Issue a  **MTEOM** command (position to end of media).

  - **5**

    Issue a  **MTNBSF** command (backward space count files to BOF).

- **S**

  Return the status of the open device, as obtained with a **MTIOCGET** **ioctl** call.  If the operation was successful, an “ack” is sent with the size of the status buffer, then the status buffer is sent (in binary, which is non-portable between different platforms).

- **s***sub-command*

  This is a replacement for the previous  **S** command, portable across different platforms. If the open device is a magnetic tape, return members of the magnetic tape status structure, as obtained with a **MTIOCGET** ioctl call. If the open device is not a magnetic tape, an error is returned. If the  **MTIOCGET** operation was successful, the numerical value of the structure member is  returned in decimal. The following sub commands are supported:

  - **T**

    return the content of the structure member **mt\_type** which contains the type of the magnetic tape device.

  - **D**

    return the content of the structure member **mt\_dsreg** which contains the "drive status register".

  - **E**

    return the content of the structure member **mt\_erreg** which contains the "error register". This structure member must be retrieved first because it is cleared after each **MTIOCGET** ioctl call.

  - **R**

    return the content of the structure member **mt\_resid** which contains the residual count of the last I/O.

  - **F**

    return the content of the structure member **mt\_fileno** which contains the file number of the current tape position.

  - **B**

    return the content of the structure member **mt\_blkno** which contains the block number of the current tape position.

  - **f**

    return the content of the structure member **mt\_flags** which contains MTF\_ flags from the driver.

  - **b**

    return the content of the structure member **mt\_bf** which contains the optimum blocking factor.

Any other command causes  **rmt** to exit.

## DIAGNOSTICS

All responses are of the form described above.

## SEE ALSO

[**rcmd**(3)](/rcmd/3.md), [**rexec**(3)](/rexec/3.md), */usr/include/sys/mtio.h,* [**rdump**(8)](/rdump/8.md), [**rrestore**(8)](/rrestore/8.md)

## BUGS

People should be discouraged from using this for a remote file access protocol.

## AUTHOR

The **dump/restore** backup suit was ported to Linux's Second Extended File System by Remy Card \<card@Linux.EU.Org\>. He maintained the initial versions of  **dump** (up and including 0.4b4, released in january 1997).

Starting with 0.4b5, the new maintainer is Stelian Pop \<stelian@popies.net\>.

## AVAILABILITY

The **dump/restore** backup suit is available from \<https://dump.sourceforge.io\>

## HISTORY

The **rmt** command appeared in 4.2BSD.
