FTP を使用するための簡単なガイド。
標準の FTP プログラムはオリジナル ftp クライアントです。ほとんどの Linux ディストリビューションに標準で付属しています。ftp は最初にカ リフォルニア大学バークレー分校によって開発された 4.2BSD で現れました。
ftp
プログラムを起動する
ftp を使うのは簡単です。たとえば、最新の Linux カーネルソースをダウンロード するために metalab.unc.edu という名前の匿名 FTP サイトに接続したいとします。
コマンドラインから以下のようにタイプします:
$ ftp metalab.unc.edu
これで ftp プログラムは metalab.unc.edu に接続しようとします。他のやり方で同
じことをするには
ftp
をパラメータなしで起動し、サイト名を引数として open
コ
マンドを
使用します。
$ ftp
ftp> open metalab.unc.edu
FTP サイトに接続するとログインを要求されます(Enter を押すとローカルのユーザ
名で
ログインします。この場合は foo
)。ここでは anonymous
ないし
ftp
としてログインし、
パブリックアーカイブへ行くことにします。
220 helios.oit.unc.edu FTP server (Version wu-2.6.0(2) Wed Nov 17 14:44:12
EST 1999) ready.
Name (metalab.unc.edu:foo):
次に、完全な E-Mail アドレスをパスワードとして記入します(ほとんどのパブリッ ク FTP サイトはこれを要求します)。
331 Guest login ok, send your complete e-mail address as password.
Password:
ログインに成功すると、以下の情報が与えられます。
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
FTP サイトにログインしたあとに、ftp
はファイル転送タイプを表示しま
す。
上記の場合はバイナリ(binary)です。バイナリモードではファイルを1ビットずつ、
FTP サーバ
にあるとおりに転送します。しかしながらアスキー(Ascii)モードではテキストを直
接ダウンロードします。
ascii
や binary
とタイプすることでタイプを変更できます。
今回はカーネルソースをダウンロードしたいので、ファイル転送タイプはバイナリの ままに しておきます。バイナリタイプはテキストではない全てのファイルをダウンロードす るさいに 使用します(たとえば、画像イメージ、zip/gzip アーカイブ、実行ファイルなど)。 分からなかったらバイナリモードを使用しましょう。
ファイルを一覧するには ls
を使います。FTP サーバの ls
はリ
モートサーバ上で
実行されますので、使えるコマンドラインオプションはサーバによって異なります。
一般的なオプションは
普通は利用可能ですので、詳しいことは ls
の man ページを調べてくださ
い。
ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 33590
-r--r--r-- 1 root other 34348506 Dec 03 03:53 IAFA-LISTINGS
lrwxrwxrwx 1 root other 7 Jul 15 1997 README -> WELCOME
-rw-r--r-- 1 root other 890 Nov 15 13:11 WELCOME
dr-xr-xr-x 2 root other 512 Jul 15 1997 bin
dr-xr-xr-x 2 root other 512 Jul 15 1997 dev
dr-xr-xr-x 2 root other 512 Jul 18 1997 etc
drwxrwxrwx 11 ftp 20 4608 Nov 28 16:00 incoming
lrwxrwxrwx 1 root other 13 Jun 04 1998 ls-lR ->
IAFA-LISTINGS
dr-xr-xr-x 17 root root 512 Jun 08 11:43 pub
dr-xr-xr-x 3 root other 512 Jul 15 1997 unc
dr-xr-xr-x 5 root other 512 Jul 15 1997 usr
226 Transfer complete.
もし ls
コマンドで列挙したファイルが多すぎて画面から上にはみ出てし
まった場合は、
Shift-PageUp を使うことで上にスクロールできます。これは Linux のコンソール上
での他、xterm や rxvt 上でも使えます。
パブリック FTP アーカイブ上では、ダウンロードできるリソースは普通
/pub
ディレクトリ
に格納されています。この例では、カーネルソースが /pub/Linux/kernel
にあることが分かって
いることとして、次のようにタイプしてそのディレクトリまで移動します。
ftp> cd pub/Linux/kernel
250-README for kernel
250-
250-What you'll find here: kernel sources and patches
250-
250-
250 CWD command successful.
「250」で始まるメッセージはサーバから送られてきた情報メッセージです。 上記の場合、あなたがディレクトリに cd すると FTP サーバが自動的に README ファイル を送るように設定されています。
さて、再度 ls
すると、v2.2 ディレクトリがあるのでそこに cd
します。
その後、また ls
をすると、ダウンロードしたいファイル
linux-2.2.13.tar.gz
が見つかります。
そこで今度は次のようにタイプします。
ftp> get linux-2.2.13.tar.gz
local: linux-2.2.13.tar.gz remote: linux-2.2.13.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for linux-2.2.13.tar.gz (15079540
bytes).
ftp プログラムがリモートファイル linux-2.2.13.tar.gz
をローカ
ルファイル linux-2.2.13.tar.gz
として保存し始めました。
もしこれを foo.tar.gz
という名前でローカルファイルに保存した
ければ、次のように指定できます。
ftp> get linux-2.2.13.tar.gz foo.tar.gz
local: foo.tar.gz remote: linux-2.2.13.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for linux-2.2.13.tar.gz (15079540
bytes).
一度に複数のファイルをダウンロードしたい場合は、mget
(multiple get) コマンドを使う必要があります。mget
は
スペースで区切られたダウンロードしたいファイル名のリストをコマンド
の引数として使うか、mget
コマンドをワイルドカードと合わせて使用す
ることもできます。たとえば、
ftp> mget linux*
上記のコマンドによって、「linux」で始まる全てのファイルを取得します。
普通 mget
は各ファイルをダウンロードするまえに本当にダウンロー
ドするかプロンプトを出します。prompt
コマンドを使うことで
これを切替えられます。
たとえばあなたが何かのソフトウェアを書いたとして、これを Linux ソフトウェ アアーカイブに含めてもらうために MetaLab にアップロードしたいとします。 それでは最初に、/incoming ディレクトリ(ほとんどのパブリック FTP サーバにはファイルがアップロードできる incoming や uploads といった名前のディレクトリがあります)に移動し、put コマンドを 使用します。
ftp> cd /incoming
ftp> put foo.tar.gz
local: foo.tar.gz remote: foo.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for foo.tar.gz.
226 Transfer complete.
10257 bytes sent in 0.00316 secs (3.2e+03 Kbytes/sec)
put
コマンドは get
と同じように、mput
で複
数のファイルを同時にアップロードできます。リモートファイル名やパスを引
数として指定すれば、ローカルファイルを別のファイル名でサーバ上にアップロードできます。
もしファイル foo.tar.gz
が、アップロードしようとしたときに
ローカルのカレントディレクトリにない場合はどうすればよいのでしょう?
これは、lcd
(local change directory)コマンドを使用することによって
ロー
カルのディレクトリを変更できます。
ftp> lcd /home/foo/
Local directory now /home/foo
FTP クライアントは感嘆符(!)を使うことによってローカルコマンドを起動す ることをサポートしています。たとえば、ローカルのカレントディレクトリのファイ ルを列挙するには次のようにします。
ftp> !ls
これがどうやって働くのかというと、ftp はシェル($SHELL
環境変数
で指定された)を呼び出し、シェルが ls
を起動します。つまりは、
シェルで動くコマンドラインなら、前に「!」をつけてやりさえすれば何でも
実行できます(ほとんどの Linux ディストリビューションでは bash (Bourne
Again SHell)がデフォルトのシェルになっています)。しかし、!cd
はあなたの思ったとおりには動いてくれないことに注意してください。
だからこそ lcd
コマンドが存在するのです。
もし ftp でダウンロードをしているファイルの進行状況が見られたら便利だと思い ません か? hash コマンドを使用することによって、ダウンロード時にハッシュ記号を出力 します。
ftp> hash
Hash mark printing on (1024 bytes/hash mark).
見ても分かるように、ftp は 1024 バイト分データをダウンロードするたびに ハッシュ記号を出力します。
その他にも tick
オプションがあります。
ftp> tick
Tick counter printing on (10240 bytes/tick increment).
<!--
This will print something to this effect as you download a file:
-->
これはダウンロードの進行状況を下のように出力します。
Bytes transferred: 11680
ftp コマンドは他にもたくさんあります。もしあなたがパーミッションを与え
られていれば(個人のプライベートシェルアカウントに接続している場合は
そのはず) mkdir
コマンドによってリモートサーバ上にディレ
クトリを作成できます。delete
コマンドでファイルをリ
モートサーバ上から削除でき、rmdir
ではディレクトリを削除しま
す。chmod
コマンドを使うことによって、ファイルのパーミッショ
ンを変更することもできます。
ftp を使う上でのさらに詳しい情報は、ftp プログラム内のオンラインヘルプ
を参照してください(コマンドを列挙するには引数なしで help とタイプ、特
定のコマンドのヘルプを見る場合は help <commandname>)。コマンドプ
ロンプトから man ftp
とタイプすることで、ftp の Unix man ペー
ジを読むこともできます。