FTP(1)

名称
ftp - ARPANET ファイル転送プログラム

書式
ftp [-t] [-v] [-d] [-i] [-n] [-g] [host]

解説
ftp は、 ARPANET 標準のファイル転送プロトコルを用いてファイル転送を実現するためのコマンドです。 本コマンドは、ネットワークを介して接続されているコンピュータ間 でファイルを転送する手段をユーザに提供します。

オプションは、コマンドライン上か、コマンドインタプリタで指定できます。

-t  パケットのトレース機能を有効にします。

-v  リモートサーバからのすべてのレスポンスを表示するように指定します。

-n  相手サーバへ ftp が接続する際、auto-login を抑止します。 auto-loginが許可された場合は、 ftp は、ftpを起動したユーザのホームディレクトリに .netrc ファイルがあるかどうかをチェックします。.netrc の内容については、 英語版のマニュアルを参照して下さい。.netrc がない場合、もしくは .netrc にlogin エントリがないなどの不備がある場合には、 ftp はログインプロンプトを出力して、ログインを促します。

-i  複数のファイルの転送中に、プロンプトを出さないようにします。

-d  デバッグモードを有効にします。

-g  ファイル名の正規表現の解釈を無効にします。

ftp は、通信相手をコマンドラインで指定することが出来ます。通信相手を コマンドラインで指定した場合、 ftp は指定したリモートマシンのftpサーバプログラムとの接続を行います。 それ以外の場合、 ftp はコマンドインタプリタとして動作し、ユーザからのコマンド入力待ち 状態になります。このとき ftp は、 ‘ftp>’ というプロンプトを出力します。 本状態の時には、 ftp は以下のコマンドを受け付けます。

! [command [args]]
    ローカルマシン上でシェルを起動します。 第2文字列以降が指定された場合、第2文字列をコマンドとして実行し、それ 以降で指定された文字列は、そのコマンドに対する指定として解釈されます。

$ macro-name [args]
    macro-name で定義されたマクロを実行します。マクロは、 macdef コマンドで定義出来ます。 macro-name 以降に指定された文字列は、展開されずにマクロに対して引 き渡されます。

account [passwd]
    一旦ftpユーザとしてログインに成功したユーザが、リモートマシン上の資源 を扱うためのパスワードを入力します。 引数が指定されない場合、、ユーザに対してパスワード入力を促す表示が されます。パスワードはエコーバックされません。なお、NetBSDのftpサーバ では、本コマンドはサポートされておりません。

append local-file [remote-file]
    リモートマシン上のファイルを、ローカルファイルに追加書き込みします。

ascii
    転送ファイル 形式 を ASCII 形式にします。 これは、デフォルト時の設定です。

bell
    ファイル転送終了時にベルを鳴らすかどうかを指定します。

binary
    転送ファイル 形式 を BINARY 形式にします。イメージファイルなど、バイナリファイルを転送する時には 本指定は必須です。

bye FTP セッションを終了し、 ftp を終了します EOFを入力した場合も同様です。

case
    mget コマンドで連続してファイルを取得する場合、リモートマシン上のファイル 名のケーシングを指定します。 デフォルトでは case はoffですが、 on の場合には、リモートマシンファイル名は、すべて大文字に 変換されます。そして、ローカル マシンのディレクトリ上では、小文字に変換 されます。

cd remote-directory
    リモートマシン上での作業ディレクトリを remote-directory へ変更します。

cdup
    リモートマシン上での作業ディレクトリを一つ上に変更させます。

chmod mode file-name
    file-name で指定したリモートマシン上のファイルの属性を、 mode で指定したものに変更します。

close
    FTP セッションを終了します。そしてコマンド入力待ちのプロンプトを表示します。 すでに定義されたマクロはすべて無効になります。

cr  ASCII形式ファイルの転送を行う場合に、改行コードのストリップを行うか どうかを指定します。詳細は、英語版マニュアルを参照して下さい。

delete remote-file
    リモートマシン上のファイル remote-file を削除します。

debug [debug-value]
    デバッグモードを有効にします。 debug-value が指定されると、デバッグレベルが設定されます。 デバッグモードが有効になると、 ftp はリモートマシンに送信されたコマンドを ‘-->’ に続けて表示します。

    dir [remote-directory] [local-file] remote-directory で指定されたディレクトリの内容を表示します。 そして、 local-file にその内容を格納します。 もしpromptがonだったら、 ftp は、指定したファイルにディレクトリ内容を書き出すかどうかを 問い合わせます。 何のディレクトリ指定もない場合には、リモートマシン上のカレント ディレクトリの内容が表示されます。 local-file の指定がない場合、もしくは - と指定された場合には、実行結果は画面に表示されます。

disconnect
    close と同様です。

form format
    ファイル転送様式を format と指定します。 デフォルトでは、様式はfileとなります。

get remote-file [local-file]
    リモートマシン上のファイル remote-file を取得し、ローカルマシン上に格納します。ローカルファイル名 local file が指定されない場合、ローカルファイル名は、取得したファイルの リモートマシン上の名前と同様になります。 本コマンドの詳細は、英語版のマニュアルを参照して下さい。

glob
    mdelete, mget, mput を行う場合のファイル名の展開の許可/禁止を切り替えます。 globが許可されている場合のファイル名展開の規則は、cshの ファイル名展開規則に準じます。

hash
    1データブロック受信するごとに、ハッシュサイン(``#'')を出力するかどうか を切り替えます。デフォルトでは、1データブロックは1024byteです。

help [command]
    引数 command で指定したコマンドの ヘルプメッセージを出力します。 引数が与えられない場合、 ftp は、使用可能なコマンドの一覧を出力します。

idle [seconds]
    リモートサーバ上のタイマを seconds 秒に設定します。 seconds が与えられない場合、現在のタイマ値を表示します。

lcd [directory]
    ローカルマシン上の作業ディレクトリを変更します。 directory 名が与えられない場合、ユーザのホームディレクトリに移動します。

    ls [remote-directory] [local-file] remote-directory で指定した、リモートマシンのディレクトリ上の内容一覧を、 local-file で指定したファイルに出力します。 remote-directory にてディレクトリ名および local-file にてファイル名の指定がない場合には、リモート マシン上の作業ディレクトリの内容一覧を画面表示し、 local-file の指定がない場合には、 remote-directory にて指定したディレクトリの内容を画面表示します。 詳細は、英語版のマニュアルを参照して下さい。

macdef macro-name
    マクロ定義を行います。 マクロ定義については、英語版のマニュアルを参照して下さい。

mdir remote-files local-file
    複数のリモートファイルを指定出来る点を除くと dir と同様です。

mget remote-files
    remote-files の指定を展開し、展開後の各ファイル名のファイルに対して get を実行します。 詳細は、英語版のマニュアルを参照して下さい。

mls remote-files local-file
    複数のリモートファイル名を指定できる点を除くと nlist と同様です。 詳細は、英語版のマニュアルを参照して下さい。

mode [mode-name]
    ファイル転送モードを mode mode-name で指定したものに変更します。 デフォルトはstreamです。

modtime file-name
    リモートマシン上の指定ファイルの最終更新日付を参照します。

mput local-files
    local-files の指定を展開し、展開後の各ファイル名のファイルに対して put を実行します。 詳細は、英語版のマニュアルを参照して下さい。

newer file-name
    リモートマシンのファイルとローカルマシンのファイルを比較して、リモート マシンのファイルの方が新しい場合にのみ取得します。

    nlist [remote-directory] [local-file] リモートマシン上の、指定したディレクトリ上にあるファイルの一覧を表示します。 もし remote-directory が指定されない場合、現在の作業ディレクトリのファイル一覧が表示されます。 インタラクティブプロンプティングが on になっており、 local_file が指定されている場合、 ftp は、nlist コマンドの結果を指定したファイルに格納するかを問い合わせます。 ローカルファイルが指定されない場合、もしくは local-file が - の場合には、端末に結果が表示されます。

nmap [inpattern outpattern]
    ファイル名のマッピングパターンを設定したり解除したりします。 詳細は、英語版のオンラインマニュアルを参照して下さい。

ntrans [inchars [outchars]]
    ファイル名の文字変換機構を設定したり解除したりします。 詳細は、英語版のオンラインマニュアルを参照して下さい。

open host [port]
    指定した host の FTP サーバとのコネクションを確立します。 ポート番号 port を指定した場合、 ftp は指定したポート番号を用いて FTP サーバとのコネクションの確立を行います。 auto-login オプションが許可されている(デフォルト時は許可されている)場合には、 ftp は .netrc に記述された内容を用いて自動的に FTP サーバに対してコネクション確立からログインまでを行います。

passive
    パッシブモードのon/offの切り替えを行います。 パッシブモードがonになっている場合には(デフォルト時にはoff)、 ftpはすべてのデータコネクション確立時に PASV を PORT の変わりに発行します。 PASV コマンドは、リモートサーバがデータコネクション用のポートをオープンし、その ポートアドレスを返してくることを要求するコマンドです。 FTPサーバは、そのポートをLISTENし、ftpクライアントがそのポートに対して接続 を行うのを待ちます。 PORT コマンドを用いた場合には、ftpクライアントはFTPサーバに対し、クライアントが LISTENしているポートアドレスを通知します。そしてサーバからコネクションを確 立しにくるのを待ちます。パッシブモードは、トラフィックの方向を制御するゲー トウェイを介して、ゲートウェイの内と外との間でデータ転送を行う場合に有用 な機能です。

prompt
    インタラクティブプロンプティングを切り替えます。 インタラクティブプロンプティングをonにすることで、複数ファイル転送時に、転 送ファイルの選択を行えます。 インタラクティブプロンプティングをoffにすると(デフォルトはon)、 mget や mput で指定したファイルはすべて転送され、 mdelete で指定したファイルはすべて削除されます。

proxy ftp-command
    ftpコマンドを2次制御接続上で実行します。 本コマンドを用いることで、同時に2つのリモートマシンとコネクションを確立し、 ファイル転送を行うようにすることができるようになります。 最初の proxy コマンドは、 open, コマンドである必要があります。これは、2次的な制御コネクションを確立するため に必要な操作です。 "proxy ?" とコマンドを実行することで、2次接続下で使用可能なコマンド一覧が表示 されます。 詳細は、英語版のオンラインマニュアルを参照して下さい。

put local-file [remote-file]
    ローカルマシン上の指定ファイルをリモートマシンに転送します。 remote-file が指定されない場合には、転送先でのファイル名は、ローカルファイルと同じ名前に なります。 詳細は、英語版のオンラインマニュアルを参照して下さい。

pwd 現在のリモートマシン上での作業ディレクトリを表示します。

quit
    bye と同じです。

quote arg1 arg2 ...
    引数で指定した文字列を、リモート FTP サーバに送信します。

recv remote-file [local-file]
    get と同じです。

reget remote-file [local-file]
    getと似ていますが、 local-file が存在しており、 remote-file よりサイズが小さい場合には、 local-file は、リモートファイルの一部であるとみなし、続きをコピーする点が異なります。 本コマンドは、大きいファイルを転送時に途中でコネクションが切断されてしまっ た場合の続きを受信しなおす場合などに有用です。

rhelp [command-name]
    リモート FTP サーバのヘルプメッセージを要求します。 command-name が指定された場合にはそのコマンドのヘルプが表示されます。

rstatus [file-name]
    引数がない場合には、リモートマシンおよびFTPサーバのステータスが表示されます。 file-name が指定されている場合には、リモートマシン上の指定ファイルのステータスが表示 されます。

    rename [from] [to] Rename the file リモートマシン上のファイル from が、 to というファイル名にリネームされます。

reset
    リプライキューをクリアします。 本コマンドは、コマンド／リプライのシーケンスの再同期をとるのに使われます。 再同期を取ることは、ftpプロトコル上の障害が発生した時に必要な操作です。

restart marker
    get や put を、指定した marker 位置から再開します。 UNIX システムにおいては、markerは通常ファイルのバイトオフセットで指定します。

rmdir directory-name
    リモートマシン上のディレクトリを消去します。

runique
    ローカルマシンにストアされるファイルに対して唯一の名を付加するかどうか を切り替えます。詳細は英語版のマニュアルを参照して下さい。

send local-file [remote-file]
    putと同じです。

sendport
    PORT コマンドの使用をするかどうか切り替えます。 デフォルトでは、 ftp は PORT を用いてデータ転送用のコネクションの確立を試みます。 PORT を使うことで、複数ファイル転送行う場合の遅延を避けることが出来ます。 PORT コマンドが失敗した場合、 ftp はデータ転送用のコネクションを確立するためのポートを使用します。 When the use of PORT コマンドが無効になった場合、データ転送時に PORT コマンドは使われません。

site arg1 arg2 ...
    引数で指定した文字列を、 SITE コマンドの引数として FTP サーバに送信します。

size file-name
    リモートマシン上の指定したファイルのサイズを表示します。

status
    ftp の現在のステータスを表示します。

struct [struct-name]
    ファイル転送の structure を struct-name に設定します。 デフォルトでは、streamに設定されています。

sunique
    リモートマシン上に転送するファイルのファイル名に対して、一意な名前を 付与するかどうかを切り替えます。 詳細は、英語版マニュアルを参照して下さい。

system
    リモートマシンで稼働しているOSのタイプを表示します。

tenex
    TENEX マシンと 通信するために必要なファイル転送モードを設定します。

trace
    パケットトレースをするかしないか切り替えます。

type [type-name]
    ファイル転送の タイプ を type-name に変更します。引数の指定がされない場合には、現在のファイル転送タイプを 表示します。 デフォルトタイプは、 ASCII です。

umask [newmask]
    デフォルトのumask値を設定します。 newmask で指定した値に変更します。 newmask が設定されていない場合、現在のumask値を表示します。

    user user-name [password] [account] ユーザをリモート FTP サーバに認識させます。 password が指定されていない場合には、FTPサーバから聞かれます。 ftp account が指定されず、なおかつ FTP サーバがそのフィールドを必要とする場合には、FTPサーバから聞かれます。 account フィールドが指定された場合には、ログインシーケンスが走った後に、account コマンドが自動的に発行されます。 詳細は、英語版のマニュアルを参照して下さい。

verbose
    バーボーズモードの切り替えをします。

? [command]
    helpコマンドと同じです。

スペースを含むコマンドの引数は、`"' マークを使ってクオートして下さい。

ファイル転送のアボート
ファイル転送をアボートさせるためには、端末のインタラプトキー(通常はCtrl-C) を打鍵してください。 データ送信については、ただちに停止します。 データ受信については、ftpプロトコルの ABOR コマンドを送ることで、サーバからのデータ送信がとまります。 そして、それ以上の受信データは捨てられます。 ファイル転送のアボート詳細については、英語版のマニュアルを参照して下さい。

ファイル名変換
ftp コマンドの引数として指定されたファイル名は、以下の規則で処理されます。

1.  ファイル名として ‘-’ が指定された場合、 入力ファイル名の場合には標準入力 stdin が、 出力ファイル名の場合には標準出力 stdout が使用されます。

2.  ファイル名の先頭の文字が ‘|’, の場合には、その後に指定された文字列はすべて、シェルコマンドと解釈されます。 ftp は popen(3) を用いて、シェルコマンドとの間でデータの引き渡しを行います。 詳細は、英語版のマニュアルを参照して下さい。

3.  上記のチェックにひっかからず、``globbing''が許可されている場合、 ローカルファイル名は、 csh(1) のファイル名展開規則にしたがって展開されます。 ただし、ftpのコマンドが、1つのファイル名しか必要としない場合、 ファイル名が展開された後の先頭のファイル名のみがそのコマンドが使用する ファイル名となります。

4.  mget コマンドと get コマンドにおいて、ローカルファイル名が指定されない場合、ローカルファイル 名は、リモートファイル名と同一になります。ただし、これらのファイル名は、 case, ntrans, nmap の設定によって、変わることもあります。 また、 runique が設定されている場合にも、ファイル名が変わることがあります。

5.  mput コマンドと put コマンドにおいて、リモートファイル名が指定されない場合、リモートファイル 名は、ローカルファイル名と同一になります。ただし、これらのファイル名は、 ntrans nmap の設定によって、変わることもあります。また、 sunique が設定されている場合にも、ファイル名が変わることがあります。

ファイル転送パラメタ
ftpでは、ファイル転送時に影響を及ぼす多くのパラメタがあります。 type は、ascii、image (binary)、ebcdic、 そしてlocal byte size (PDP-10's および PDP-20's でよく使われます) が指定可能です。 ftp は、ascii と image のタイプを指定可能なのに加えて、 tenex モードの転送を指定することにより、ローカルバイトサイズを指定することが可能です。

ftp では、他に mode、 form、 struct、 のパラメタが指定可能です。

.netrc ファイル
.netrc ファイルは、auto-login 処理においてのログインおよび初期設定情報を記述します。 .netrc ファイルは、ユーザのホームディレクトリに存在します。 .netrc においては、以下の予約語が解釈されます。これらは、スペース、タブ、そして new-line によって分割されます。

machine name
    リモートマシン name を定義します。 auto-login 処理は、 .netrc ファイル中に file for a machine トークン (予約語) があるかどうか探し、そのエントリが ftp のコマンドラインもしくは、 open コマンドの引数と一致するかどうかチェックします。 一致するエントリがあった場合、他の .netrc トークンが処理され、その処理はファイル最後尾までいきつくか、他の machine トークンか default トークンに出くわすまで続きます。

default
    default が、いろんな名前として解釈される、ワイルドカード的な働きがあることを除けば machine name と同様です。 default トークンは、 .netrc ファイル中 1 エントリだけが許され、しかも他の全てのエントリ の後ろにしか本エントリが存在できません。 通常は、

        default login anonymous password user@site

    のように使用されます。本エントリは、主に anonymous ログインを許している ftp サイト向けに使われます。 .netrc ファイルは、 -n フラグを付加してftpを起動することで、無視することが出来ます。

login name
    リモートマシンにおけるログイン名を指定します。 本トークンが与えられている場合、auto-login処理は name をログイン名を用いてログインすることを試みます。

password string
    パスワードを指定します。 本トークンが指定されている場合、auto-login処理は、指定した文字列を、リモー トマシンのパスワードとして使用します。 Note that if this token is present in the .netrc ファイルにおいて、 anonymous 以外のユーザエントリが登録されており、なおかつ .netrc がオーナ以外読める属性である場合には、 ftp はauto-login処理を中断します。

account string
    追加してアカウントパスワードを登録します。 このエントリは、リモートサーバがアカウントパスワードを必要とする場合に のみ意味を持ちます。

macdef name
    マクロを定義します。 詳細は、英語版のオンラインマニュアルを参照して下さい。

環境変数
ftp は、以下の環境変数を使用します。

HOME
    .netrc ファイルのデフォルトの置き場所を示します。

SHELL
    デフォルトで起動するシェルを定義します。

関連項目
ftpd(8)

歴史
ftp コマンドは 4.2BSD から登場しました。

バグ
多くのコマンドの動作は、リモートサーバの動作に依存します。

4.2BSD のasciiモードでの符号転送時のキャリッジリターンの処理エラーは正しい 訂正です。 この訂正機能は、バイナリファイルの転送を ascii モードで行った場合には、 結果として正しくない転送となります。 この問題を回避するためには、バイナリモードを用いてファイル転送をして 下さい。