FTP(File Transfer Protocol)は、FFFTPなどのクライアントソフトを利用すれば、ファイルのアップロード/ダウンロード/ディレクトリ一覧の表示/削除などを初心者でも簡単に行うことができますが、ここではFTPの動作をより深く理解するために、FTPコマンドでファイル転送する方法について解説していきます。コマンド打ちに慣れてしまえば、FTPクライアントソフトを利用するよりも速く目的の操作を行えるようになります。また、FTPコマンドを覚えておくと、後々なんらかの役に立つのでこの機会に是非、コマンドを覚えてしまいましょう。以下には大まかなFTPコマンドの解説を記してあるので是非、参考にしてください。
■FTPサーバーにログインする---[ftp IPアドレスorホスト名]
それではまず、「スタート」→「プログラム」→「アクセサリ」→「コマンドプロンプト」よりコマンドプロンプトを起動してください(「スタート」→「ファイル名を指定して実行」[CTRL+R]
から「CMD」と入力しても同様の操作が行えます)。次に対象となるFTPサーバーマシンにログインします。この時、ログインするサーバーはご使用のプロバイダに設置してあるリモートFTPサーバーでも、あるいは既に自宅にFTPサーバーを立てている場合はローカルのFTPサーバーでも構いません。ここでは、比較のために筆者がローカルに立てているFTPサーバーと、契約しているプロバイダ「ぷらら」のリモートFTPサーバーにログインする方法について解説していきます。
■自宅内のFTPサーバーにログインする場合(WarFTPD使用)
C:\>ftp
192.168.0.2 -------------------------①
Connected to 192.168.0.2.
220- KORO'FTP Server WAR-FTPD
1.65 Ready ----②
220 Please enter your user name.
User (192.168.0.2:(none)):koroxxxx -----------------③
331 User name okay, Need password.
Password:******* ---------------------------④
230 ようこそ!User logged in,
proceed. ------------⑤
|
|
①対象となるFTPサーバーのホスト名or IPアドレスを入力します。 |
|
②どのFTPサーバーソフトを使用しているかが表示されます。 |
|
③ユーザ名の入力を求められる。ここでは「koroxxxx」と入力。匿名FTPの場合は「anonymous」と入力します。 |
|
④パスワードの入力を求められるので、パスワードを入力します(匿名FTPの場合の場合は「Enter」キーを押してください)。
※尚、通常は入力中にパスワード欄のアスタリスク(*)は表示されません。 |
|
⑤ログインに成功すると成功した旨のメッセージが表示されます。 |
|
■ぷららのFTPサーバーにログインする場合(ProFTPD)
C:\>ftp
www9.plala.or.jp ----------------------①
Connected to www9.plala.or.jp.
220 ProFTPD 1.2.6 Server
(WWW9 Server) [www9.plala.or.jp] ---②
User (www9.plala.or.jp:(none)): koroxxxx -----------③
331 Password required for koroxxxx.
Password:******* ----------------------------④
230 User koroxxxx logged in. -------------------⑤
ftp> |
|
①対象となるFTPサーバーのホスト名or IPアドレスを入力します。 |
|
②どのFTPサーバーソフトを使用しているかが表示されます。
ここでは、LINUX用のFTPサーバーソフト「ProFTPD」を使用していることがわかります。 |
|
③ユーザ名の入力を求められる。ここでは「koroxxxx」と入力。 |
|
④パスワードの入力を求められるので、パスワードを入力します。
※尚、通常は入力中にパスワード欄のアスタリスク(*)は表示されません。 |
|
⑤ログインに成功すると成功した旨のメッセージが表示されます。 |
|
尚、上記の例では「ftp 192.168.0.2」や「ftp www9.plala.or.jp」などのようにして対象となるFTPサーバーのIPアドレス、あるいはホスト名を付加しましたが、単に「ftp」と打ち込むと、対話形式でFTPサーバーにログインすることができます。異なる点は対象サーバーを指定する際に「
open」コマンドを使う点です(下記、プロンプト参照)。
■対話形式のコマンド入力例
C:\>ftp
ftp> open 172.16.50.2
Connected to 172.16.50.2.
220- KORO'FTP Server WAR-FTPD 1.65 Ready
220 Please enter your user name.
User (172.16.50.2:(none)): koroxxxx
331 User name okay, Need password.
Password:*******
230 ようこそ!User logged in, proceed.
ftp> |
■使用できるコマンド一覧を表示する---[?] 「help」コマンド
さて、まず最初に覚えておきたいコマンドは、FTPにて使用できるコマンドを一覧表示するコマンドです(下記、プロンプト参照)。使用できるFTPコマンドを確認するには「
?」、もしくは「
help」コマンドを使用します。以下では、これらのコマンド群について詳細に解説していきます。
ftp> ?
Commands may be abbreviated. Commands are:
! delete literal prompt
send ? debug ls put status
append dir mdelete pwd trace ascii disconnect mdir
quit type
bell get mget quote user binary glob mkdir recv verbose
bye hash mls remotehelp cd help mput rename
close lcd open rmdir
ftp>
|
■ディレクトリ内の一覧表示---[dir][ls」 コマンド
「dir」コマンドを使用すると対象サーバーにあるディレクトリ内の一覧を表示することができます(以下、プロンプト参照)。画面左にある「rwxrwxrwx」はパーミッションを表しています(先頭の「d」はディレクトリの意、先頭の「-」はファイルの意)。Windowsにおいてはパーミッションの設定を行うことができないので、全て「読み(r)」「書き(w)」「実行(x)」が可能な「rwxrwxrwx」というように表示されています
(コラム:パーミッションの設定)。
ftp> dir
200 Port command okay.
150 Opening ASCII NO-PRINT mode data connection for
ls -l.
total 123
-rwxrwxrwx 1 ftp ftp 159 Sep
16 01:05 12.txt
drwxrwxrwx 1 ftp ftp 0 Feb 11 23:07 board
drwxrwxrwx 1 ftp ftp 0 Mar 6 03:02 cgi-bin
drwxrwxrwx 1 ftp ftp 0 Feb 4 13:10 css
drwxrwxrwx 1 ftp ftp 0 Oct 4 16:29 img
-rwxrwxrwx 1 ftp ftp 759 Aug 30 2002 index.php
226- Transfer finished successfully. Data connection
closed.
226 UL: 2 DL: 0 Ratio: 0:0 Credit: unlimited file(s)
ftp: 1533 bytes received in 0.01Seconds 153.30Kbytes/sec.
ftp> |
尚、ファイル/ディレクトリの簡易表示として「ls」コマンドもあります。
ftp>
ls
200 Port command okay.
150 Opening ASCII NO-PRINT mode data connection for
ls -l.
12.txt
board
cgi-bin
css
img
index.php
226- Transfer finished successfully. Data connection
closed.
226 UL: 2 DL: 0 Ratio: 0:0 Credit: unlimited file(s)
ftp: 226 bytes received in 0.00Seconds 226000.00Kbytes/sec.
ftp> |
■①カレントディレクトリの変更(リモートの場合)---[cd][cd ../]
コマンド
現在いるディレクトリから下の階層にあるディレクトリに移動したい場合、もしくは現在いるディレクトリから上の階層に移動したい場合は「
cd」(Change
Directory)コマンドを使用します。例えば、ルートの階層「/」から「img」ディレクトリに移動したい場合、「cd
img」とプロンプトに打ちます。すると、「
250 "\img" is current directory.」というようなメッセージが表示され、「現在いるディレクトリは\imgですよ」という旨のメッセージが表示されます。この時点で「dir」もしくは「ls」コマンドを打てば、「img」フォルダ内に格納されているファイルの一覧を表示することができるようになります。逆に上の階層に戻りたい場合は「
cd
../」のようにします。ふたつ上の階層に戻りたい場合は「
cd ../../」のようにします。また、絶対パスを指定してカレントディレクトリを変更することもできます(例:cd
photo/koro1/koro2/koro3)
ftp> cd
img
250 "\img" is current directory.
ftp> dir
200 Port command okay.
150 Opening ASCII NO-PRINT mode data connection for
ls -l.
total 123
-rwxrwxrwx 1 ftp ftp 51 Jun
12 2002 c8.gif
-rwxrwxrwx 1 ftp ftp 70 Aug 16 2002 cnt_right.gif
-rwxrwxrwx 1 ftp ftp 1850 Jul 29 2002 enquete.gif
-rwxrwxrwx 1 ftp ftp 63 Jun 11 2002 menu_out.gif
-rwxrwxrwx 1 ftp ftp 64 Jun 11 2002 menu_over.gif
drwxrwxrwx 1 ftp ftp 0 Oct 4 16:29 note
226- Transfer finished successfully. Data connection
closed.
226 UL: 2 DL: 0 Ratio: 0:0 Credit: unlimited file(s)
ftp: 1782 bytes received in 0.01Seconds 178.20Kbytes/sec.
ftp> |
■②カレントディレクトリの変更(ローカルの場合)---[lcd][lcd ../]
コマンド
「
lcd」コマンドはローカル(自分のパソコン)の現在いるディレクトリを表示する場合に使用します。リモートサーバーからファイルをダウンロードした場合などに格納されるディレクトリを表示します。以下の例では、デフォルトでは「C:\」ドライブが初期ディレクトリに指定されています。もし、Cドライブではなく他のドライブにあるディレクトリに変更したい場合は、「
lcd
f:\public_html」のようにコマンドを打ちます。
ftp>
lcd
Local directory now C:\.
ftp> lcd f:\public_html
Local directory now F:\public_html.
ftp> |
■①カレントディレクトリ位置を表示する(リモートの場合)---[pwd] コマンド
コマンドプロンプトを使用して「cd」を繰り返し、ディレクトリ内のあちこち移動していると自分が現在いるディレクトリがわからなくなることがあります。そんな時に役立つのが「
pwd」コマンドで、このコマンドを使用することで自分が現在いるディレクトリを表示させることができます(以下、プロンプト参照)。以下の例では「img」ディレクトリ内にいることがわかります。
尚、「pwd」コマンドはあくまでFTPサーバー内のカレントディレクトリの位置を調べる際に使用します。ローカルのディレクトリの位置を調べるには「lcd」コマンドを用います。
ftp> pwd
257 "\img" is current
directory.
ftp> |
■②カレントディレクトリ位置を表示する(ローカルの場合)---[lcd] コマンド
「
lcd」コマンドはローカル(自分のパソコン)のカレントディレクトリを表示する場合に使用します。リモートサーバーからファイルをダウンロードした場合などに格納されるディレクトリを表示します。以下の例では、デフォルトでは「C:\」ドライブが初期ディレクトリに指定されています。もし、Cドライブではなく他のドライブにあるディレクトリに変更したい場合は、「
lcd
f:\public_html」のようにコマンドを打ちます。
ftp>
lcd
Local directory now C:\.
ftp> lcd f:\public_html
Local directory now F:\public_html.
ftp> |
■フォルダ[ディレクトリ]を作成/削除する---[mkdir][rmdir]コマンド
フォルダを作成するコマンドは「
mdkir」コマンドを使用します。以下の例では「\img」内に「photo」フォルダを作成しています。また、フォルダを削除するには「
rmdir」コマンドを使用します。この時に注意したいのは、「rmdir」コマンドは
空のディレクトリを削除する場合のみに使用できます。ディレクトリ内に他のファイルが格納されている場合は、「
501
Failed to remove directory."\img\photo"」というようなメッセージが表示され、削除することはできません。
ftp> mkdir
photo
257 "\img\photo"
created.
ftp> rmdir photo
257 "\img\photo"
deleted.
ftp> |
■①単一のファイルを削除する---[delete]コマンド
ファイルを削除する場合は「
delete」コマンドを使用します(以下、プロンプト参照)。
ftp> delete
new.gif
250 "\img\photo\new.gif"
deleted.
ftp> |
■②複数のファイルを削除する---[mdelete]コマンド
ftp> mdelete
new.gif new2.gif
200 Type is ASCII (No subclass parameter defined, Non-Print
used as default.)
mdelete new.gif? [ENTER]
250 "\img\photo\new.gif" deleted.
mdelete new2.gif?[ENTER]
250 "\img\photo\new2.gif" deleted.
ftp> |
また、ワイルドカード(*)を使用して特定の文字を含むファイル群を同時に削除するといった使い方もできます(例:「mdelete
new*」)。全てのファイルを削除したい場合は、「
mdelete
*」と指定します。その際に、対話モードが面倒くさい場合は
「prompt」コマンドを使用してください。
■セッションを切断する---[quit][bye][disconnect]コマンド
セッションを切断し、FTP接続を終了させる際には、「
quit」コマンド、もしくは「
bye」コマンドを使用します(以下、プロンプト参照)。
ftp> quit
221 またきてくださいねぇ~。Goodbye. Control connection closed. |
FTP接続を終了させずに引き続き異なるリモートサーバーにログインする際などには、「
disconnect」が便利です。
ftp> disconnect
221 またきてくださいねぇ~。Goodbye. Control connection closed.
ftp> open www9.plala.or.jp
Connected to www9.plala.or.jp.
220 ProFTPD 1.2.6 Server (WWW9 Server) [www9.plala.or.jp]
User (www9.plala.or.jp:(none)): koroxxxx
331 Password required for koroxxxx.
Password:*******
230 User koroxxxx logged in.
ftp> |
■ASCII/BINARYモードに変更する---[ascii][binary]コマンド
ftp> binary
200 Type is Image (Binary)
ftp> ascii
200 Type is ASCII (No subclass
parameter defined, Non-Print used as default.)
ftp> |
■①単一のファイルをアップロードする---[put]コマンド
ファイルをアップロードする際には、アップロードしたいファイルがローカルマシンのどのドライブのどのフォルダに格納されているかを確認した後で、
「lcd
パス名」コマンドを使ってローカルの初期フォルダを変更しておきます。ここでは、ローカルマシンのFドライブにある「public_html」フォルダに「new.gif」という画像ファイルを格納して、それをサーバーにアップロードするようにコマンドを打っています。また、ここで注意しておきたいのは、ファイルをアップロードしたはいいけど、「一体どこにアップロードされたの?」ってことにならないように「
pwd」コマンドを使用し、サーバーの現在いるディレクトリ位置をきちんと確認しておいてください。ここでは、FTPサーバーの「
\img\photo」以下に「new.gif」がアップロードされています。
ftp>
lcd f:\public_html
Local directory now F:\public_html.
ftp> put new.gif
200 Port command okay.
150 Ready to receive "\img\photo\new.gif".
Mode STREAM Type ASCII NO-PRINT.
226- Transfer finished successfully.
Closing data connection.
226 UL: 3 DL: 1 Ratio: 0:0 Credit: unlimited file(s)
ftp: 23369 bytes sent in 0.00Seconds 23369000.00Kbytes/sec.
ftp> |
■②複数のファイルをアップロードする---[mput]コマンド
「
mput」コマンドを使用すると、複数のファイルを続けて入力することで一度にアップロードすることができるようになります。
ftp> mput
new.gif new2.gif new3.gif
mput new.gif?[ENTER]
200 Port command okay.
150 Ready to receive "\img\photo\new.gif".
Mode STREAM Type ASCII NO-PRINT.
226- Transfer finished successfully.
Closing data connection.
226 UL: 4 DL: 1 Ratio: 0:0 Credit: unlimited file(s)
ftp: 23369 bytes sent in 0.00Seconds 23369000.00Kbytes/sec.
mput new2.gif?[ENTER]
200 Port command okay.
150 Ready to receive "\img\photo\new2.gif".
Mode STREAM Type ASCII NO-PRINT.
226- Transfer finished successfully.
Closing data connection.
226 UL: 5 DL: 1 Ratio: 0:0 Credit: unlimited file(s)
ftp: 23369 bytes sent in 0.00Seconds 23369000.00Kbytes/sec.
mput new3.gif?[ENTER]
200 Port command okay.
150 Ready to receive "\img\photo\new3.gif".
Mode STREAM Type ASCII NO-PRINT.
226- Transfer finished successfully.
Closing data connection.
226 UL: 6 DL: 1 Ratio: 0:0 Credit: unlimited file(s)
ftp: 23369 bytes sent in 0.00Seconds 23369000.00Kbytes/sec.
ftp> |
また、ワイルドカード(*)を使用して特定の文字を含むファイル群を同時にアップロードさせるといった使い方もできます(以下、プロンプト参照)。全てのファイルをアップロードしたい場合は、「
mput
*」と指定します。その際に、対話モードが面倒くさい場合は
「prompt」コマンドを使用してください。
ftp> mput
new*
mput new.gif?[ENTER]
200 Port command okay.
150 Ready to receive "\img\photo\new.gif".
Mode STREAM Type ASCII NO-PRINT.
226- Transfer finished successfully.
Closing data connection.
226 UL: 4 DL: 1 Ratio: 0:0 Credit: unlimited file(s)
ftp: 23369 bytes sent in 0.00Seconds 23369000.00Kbytes/sec.
mput new2.gif?[ENTER]
200 Port command okay.
150 Ready to receive "\img\photo\new2.gif".
Mode STREAM Type ASCII NO-PRINT.
226- Transfer finished successfully.
Closing data connection.
226 UL: 5 DL: 1 Ratio: 0:0 Credit: unlimited file(s)
ftp: 23369 bytes sent in 0.00Seconds 23369000.00Kbytes/sec.
mput new3.gif?[ENTER]
200 Port command okay.
150 Ready to receive "\img\photo\new3.gif".
Mode STREAM Type ASCII NO-PRINT.
226- Transfer finished successfully.
Closing data connection.
226 UL: 6 DL: 1 Ratio: 0:0 Credit: unlimited file(s)
ftp: 23369 bytes sent in 0.00Seconds 23369000.00Kbytes/sec.
ftp> |
■①単一のファイルをダウンロードする---[get]コマンド
単一のファイルをダウンロードする場合は、「
get」コマンドを使用します。ファイルをダウンロードする際は、
「lcd
パス名」コマンドを使用してローカルマシンのどこにダウンロードするかをきちんと指定しておいてください。ここでは、サーバー上にあるファイル「
new.gif」をローカルマシンの「
f:\public_html」内にダウンロードするように指定しています。
ftp>
lcd f:\public_html
Local directory now F:\public_html.
ftp> get new.gif
200 Port command okay.
150 Sending "\img\photo\new.gif" (23369 bytes).
Mode STREAM Type ASCII NO-PRINT 226- Transfer
finished successfully. Data connection closed.
226 UL: 12 DL: 2 Ratio: 0:0 Credit: unlimited file(s)
ftp: 23369 bytes received in 0.00Seconds 23369000.00Kbytes/sec.
ftp>. |
■②複数のファイルをダウンロードする---[mget]コマンド
「
mget」コマンドを使用すると、複数のファイルを続けて入力することで一度にダウンロードすることができるようになります。また、アップロード同様、ワイルドカード(*)を使用してまとめてダウンロードすることもできます。全てのファイルをダウンロードしたい場合は、「
mget
*」と指定します。その際に、対話モードが面倒くさい場合は
「prompt」コマンドを使用してください。
ftp> mget
new.gif new2.gif new3.gif
200 Type is ASCII (No subclass parameter defined, Non-Print
used as default.)
mget new.gif?[ENTER]
200 Port command okay.
150 Sending "\img\photo\new.gif" (23369 bytes).
Mode STREAM Type ASCII NO-PRINT. 226- Transfer
finished successfully. Data connection closed.
226 UL: 12 DL: 9 Ratio: 0:0 Credit: unlimited file(s)
ftp: 23369 bytes received in 0.01Seconds 2336.90Kbytes/sec.
mget new2.gif?[ENTER]
200 Port command okay.
150 Sending "\img\photo\new2.gif" (23369 bytes).
Mode STREAM Type ASCII NO-PRINT
.
226- Transfer finished successfully.
Data connection closed.
226 UL: 12 DL: 10 Ratio: 0:0 Credit: unlimited file(s)
ftp: 23369 bytes received in 0.01Seconds 2336.90Kbytes/sec.
mget new3.gif?[ENTER]
200 Port command okay.
150 Sending "\img\photo\new3.gif" (23369 bytes).
Mode STREAM Type ASCII NO-PRINT
.
226- Transfer finished successfully.
Data connection closed.
226 UL: 12 DL: 11 Ratio: 0:0 Credit: unlimited file(s)
ftp: 23369 bytes received in 0.00Seconds 23369000.00Kbytes/sec.
ftp> |
■対話モードのOn/Offを切り替える---[prompt]コマンド
「
prompt」コマンドを使用すると対話モードのOn/Offの切り替えを行うことができます。例えば、複数のファイルをアップロード/ダウンロード/削除する際などは通常、「new.gifをアップロードしますか?」「new2.gifをアップロードしますか?」と何度も問い合わせがきます。その度に
「ENTER」キーを押さなければ自動的に先には進んでくれません。それに煩わしさを感じる場合には「prompt」コマンドを使って対話モードをOffにすることで「ENTER」キーを叩く手間を省くことができます。
ftp> prompt
Interactive mode On
.
ftp> prompt
Interactive mode Off
.
ftp> mput new*
200 Port command okay.
150 Ready to receive "\img\photo\new.gif".
Mode STREAM Type ASCII NO-PRINT.
226- Transfer finished successfully.
Closing data connection.
226 UL: 10 DL: 1 Ratio: 0:0 Credit: unlimited file(s)
ftp: 23369 bytes sent in 0.01Seconds 2336.90Kbytes/sec.
200 Port command okay.
150 Ready to receive "\img\photo\new2.gif".
Mode STREAM Type ASCII NO-PRINT.
226- Transfer finished successfully.
Closing data connection.
226 UL: 11 DL: 1 Ratio: 0:0 Credit: unlimited file(s)
ftp: 23369 bytes sent in 0.01Seconds 2336.90Kbytes/sec.
200 Port command okay.
150 Ready to receive "\img\photo\new3.gif".
Mode STREAM Type ASCII NO-PRINT.
226- Transfer finished successfully.
Closing data connection.
226 UL: 12 DL: 1 Ratio: 0:0 Credit: unlimited file(s)
ftp: 23369 bytes sent in 0.00Seconds 23369000.00Kbytes/sec.
ftp> |
■コマンド完了時にビープ音を鳴らす---[bell]コマンド
「
bell」コマンドは、FTPコマンド完了時に鳴るビープ音のOn/Offを切り替えることができます。
ftp> bell
Bell mode Off .
ftp> bell
Bell mode On .
ftp> |
■ファイル名を変更する---[rename]コマンド
「rename」コマンドでファイル名を変更できます。「
rename [元ファイル名] [変更後ファイル名] 」でファイル名を変更します。
ftp> rename
test.txt test2.txt
350 Requested file action pending further information.
250 Requested file action okay, completed.
ftp> |