---
name: "rmt"
section: "8"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["linux", "freebsd", "openbsd"]
url: "https://new.carta.tech/rmt"
---

# rmt(8)

remote magtape protocol module

## NAME

**rmt** – remote magtape protocol module

## SYNOPSIS

**rmt** \[**-r** \| **-w**\] \[**-d** *directory*\]

## DESCRIPTION

**rmt** is a program used by the remote dump and restore programs through an interprocess communication connection. Traditionally it is used for manipulating a magnetic tape drive but it may be used for regular file access as well. **rmt** is normally started up with an [rcmd(3)](/rcmd/3.md) or [rcmdsh(3)](/rcmdsh/3.md) call.

The options are as follows:

- **-d** *directory*

  Confine file access to *directory*. Forward slashes in filenames are disallowed and symlinks are not followed.

- **-r**

  Read-only mode, suitable for use with [rrestore(8)](/rrestore/8.md).

- **-w**

  File write mode, suitable for use with [rdump(8)](/rdump/8.md) for dumping to regular files. Creates missing files and refuses to open existing ones. The file permission bits are set to readonly.

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 two forms. Successful commands have responses of:

**A***number*\\n

*number* is an ASCII representation of a decimal number. Unsuccessful commands are responded to with:

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

*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**

  *offset*\\n *whence*\\n Perform an [lseek(2)](/lseek/2.md) operation using the specified parameters. The response value is that returned from the [lseek(2)](/lseek/2.md) 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 an 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(2)](/ioctl/2.md) call. The return value is the *count* parameter when the operation is successful.

- **S**

  Return the status of the open device, as obtained with an MTIOCGET [ioctl(2)](/ioctl/2.md) 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).

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

## DIAGNOSTICS

All responses are of the form described above.

## SEE ALSO

[rcmd(3)](/rcmd/3.md), [rcmdsh(3)](/rcmdsh/3.md), [mtio(4)](/mtio/4.md), [rdump(8)](/rdump/8.md), [rrestore(8)](/rrestore/8.md)

## HISTORY

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

## BUGS

People tempted to use this for a remote file access protocol are discouraged.
