rmt - リモートの磁気テープサーバー
rmt
Rmt は、tar(1), cpio(1) などのバックアップユーティリティーを利用したファイルやデバイスの処理を、リモートからアクセスする機能を提供します。 普通リモートマシンに対しては rsh(1) または ssh(1) を利用して実現します。 ログイン名を指定して別ユーザーを用いることもできます。
呼び出しを行うプログラムが rmt とやり取りをする際には、標準入力に対してリクエストを送信し、その結果を標準出力から読み取ります。 送信する要求は、要求を表す英字の次に (必要があれば) 引数が続き、最後に改行文字により構成されます。 追加データがある場合は、その改行文字の次に送信されます。 処理が成功すると rmt は以下を返します。
Anumber\n
上の number は 10 進数のリターンコードを ASCII 表現したものです。 追加の情報はこの行の次に返されます。 エラー発生時には、以下のレスポンスが返されます。
Eerrno\nerror-message\n
ここで errno はシステムエラーコードを表すもので、 errno(3) に説明されています。 error-message はエラー内容を 1 行にわかりやすく示したもので、 perror(3) を用いて出力されています。
利用できるコマンドとレスポンスの種類については、後述するセクションにおいて説明しています。
指定された flags を使って device をオープンします。デバイスがすでにオープンされていた場合は、一度クローズしてから新たにオープンされます。
引数
- device
オープンするデバイス名。
- flags
open(2) に対するフラグ。 10 進数値、または fcntl.h に定義された O_* 定数 (先頭の O_ は省略される場合があります)。 またビット表現や (| を利用して) 以下のようにこれらを合わせた数値指定もできます。
576 64|512 CREAT|TRUNC
さらに指定を組み合わせることもできます。 たとえば 10 進数によるモードに、そのシンボリックな表現を付け加えるような場合です。 その場合は、シンボリック表現が優先されます。
返信 (reply)
成功時には A0\n を返します。
拡張
BSD バージョンでは flags に 10 進数のみ指定可能です。
- C[device]\n
現在オープンしているデバイスをクロースします。
- 引数
引数はすべて無視されます。- 返信 (reply)
成功時には A0\n を返します。- Lwhence\noffset\n
指定されたパラメーターを使って、現在オープンしているデバイスに対して lseek(2) を実行します。
- 引数
- whence
オフセットをどこからにするか。 指定可能な値は以下です:
0, SET, SEEK_SET ファイル先頭からシーク 1, CUR, SEEK_CUR 現在位置からシーク 2, END, SEEK_END ファイル終端からシーク
- 返信 (reply)
成功時には Aoffset\n を返します。 offset は新たなオフセット値になります。- 拡張
BSD バージョンは whence に対して 0,1,2 のみ指定可能です。
- Rcount\n
現在のデバイスから count バイト分のデータを読み込みます。
- 引数
- count
読み込みを行うバイト数。
- 返信 (reply)
成功時には以下を返します。Ardcount\n
この後ろに、デバイスから読み取った rdcount バイト分のデータが続きます。
- Wcount\n
現在のデバイスにデータを書き込みます。 このコマンドの後ろに、count バイト分の入力データを続けます。
- 引数
- count
書き込みを行うバイト数。
- 返信 (reply)
成功時には Awrcount\n を返します。 ここで wrcount は、実際に書き込みを行ったバイト数です。- Iopcode\ncount\n
指定されたパラメーターを用いて MTIOCOP ioctl(2) コマンドを実行します。
- 引数
- opcode
MTIOCOP オペレーションコード。
- count
mt_count
- 返信 (reply)
成功時には A0\n を返します。- S\n
現在オープンしているデバイスのステータスを返します。 これは MTIOCGET ioctl(2) を呼び出して得ています。
- 引数
なし。- 返信 (reply)
成功時は Acount\n と、その後に count バイト分のデータが続きます。
tar(1)
このユーティリティーを汎用目的のリモートファイルアクセスツールとして利用することはお勧めしません。
バグ報告は <bug-tar@gnu.org> までお願いします。
rmt コマンドは 4.2BSD において登場しました。 GNU rmt は BSD の仕様に基づいて一から書き起こされました。
Copyright © 2013, 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.