next up previous contents index
Next: 6.4 anonymous ftpサーバの利用 Up: 6. コンピュータの遠隔利用 Previous: 6.2 コンピュータの遠隔利用に関する注意点


      
6.3 ファイル転送サービスの利用 -- ftp

6.3.1 FTPとは

FTPは異なるファイル空間の間で ファイル転送を行うためのプロトコル(通信手順)である. 例えばパーソナルコンピュータ(以下PCと表記)や 研究会が管理しているワークステーション, 他のキャンパスのワークステーションなどと CNSの間でファイルを転送する際に利用する(図).

FTPを利用するには,ftpコマンドを実行する. ここではftpを用いて, CNSと研究会が管理するワークステーションの間で ファイル転送を行う方法について説明する. WindowsまたはMacintoshとCNSとの間でファイル転送を行う方法に ついてはを参照すること.  

       

   
6.3.2 ftpコマンドを利用する

ftpコマンドを起動する際には,あらかじめ転送するファイルが置い てあるディレクトリ,または転送されてきたファイルを保存するディレクト リにcdコマンドで移動する.このディレクトリを作業ディレクトリと呼 ぶ(図). ftpコマンドを実行している最中に作業ディレクト リを変更する()こともできるが,ftpコマ ンドを実行する前に目的のディレクトリに移動すること.

次にftpによるファイル転送のおおまかな手順を示す.

1.
ftpを起動する(, )
2.
openコマンドでリモートホストにログインする(, )
3.
lscdコマンドなどで転送するファイルを探す (, )
4.
asciibinaryコマンドで転送モードを指定する (, )
5.
getputコマンドなどでファイルを転送する (, , )
6.
closeコマンド接続を切断し, quitコマンドでftpを終了する(, )



  
図: FTPの利用

   
6.3.3 ftpの起動および相手先ホストへのログイン

  ftpコマンドを起動すると,プロンプトが ftpプロンプト(ftp>)に変わる.

% ftp<RET>
ftp>
ftpプロンプトが表示されたら, 相手先のホストにログインする. 次のようにopenコマンドに続けて,相手先ホスト名を入力する.

 

ftp> open [ホスト名]<RET>
なお,ftpコマンドを起動したホストをローカルホスト, ftpコマンドでホスト名に指定した相手先ホストをリモートホストという. この例では,CNSのccz00.sfc.keio.ac.jpがローカルホスト, picasso.guide.ac.jpがリモートホストになる.    

%ftp<RET>
ftp> open picasso.guide.ac.jp<RET>
リモートホスト名を入力し間違えると,次のようなメッセージが表示される. そのときには,正確なホスト名を入力してもう1度実行する.

ftp> open hostname<RET>
hostname: unknown host
ftp> _
もし,正しいホスト名を入力しているのにエラーメッセージが表示されるときは, リモートホストと接続できていない可能性がある. このような場合は,しばらく待つかリモートホストを変えること.

リモートホストに接続された場合は メッセージが表示されるので,リモートホストでのログイン名を入力する. ここでは,リモートホストpicasso.guide.ac.jpでのユーザ名を入力している.

Connected to picasso.guide.ac.jp.
220 picasso.guide.ac.jp FTP server (UNIX(r) System V Release 4.0) ready.
Name (picasso.guide.ac.jp:t98000tf): _
何も入力しないで<RET>を押すと, カッコの中の``:''の次に示されているローカルホストでのログイン名がそのまま リモートホストでのログイン名として使われる. リモートホストでのログイン名が CNSでのログイン名と違う場合は, 次の例のようにリモートホストでのログイン名を入力する.

Name (picasso.guide.ac.jp:t98000tf): tarou<RET>
ログイン名を入力したら, 次にそのログイン名に対応するパスワードを入力する. 次のように`Password: 'の後にパスワードを入力して<RET>を押す. なお,入力中の文字はセキュリティ保持のため画面に表示されない.

入力したログイン名やパスワードが間違っているとログインが拒否される. その場合はopenコマンドを利用して もう1度相手先のホストにログインし直すこと.

331 Password required for tarou.
Password:_
ログイン名とパスワードが正しければ,次のようなリモートホストのログイン メッセージの後に再びftpプロンプトが表示される.

230 User tarou logged in.
ftp> _
この状態でローカルホストとリモートホストとの間で ファイル転送を行うことができる. ftpプロンプトに対しては, コマンドを入力してディレクトリの移動やファイルの転送を行う.

   
6.3.4 リモートホストのディレクトリ操作

openコマンドを実行すると, 通常,リモートホストのホームディレクトリにログインする. リモートホストやローカルホストのディレクトリを移動するには, lsコマンドやcdコマンドなどの ディレクトリ操作コマンドを用いる. なお,ローカルホストの作業ディレクトリの操作方法について はを参照すること.

ftpで使うコマンドは通常のUNIXコマンドと同じ名前のものが多いが, オプションや機能の違いがあるので注意すること.

lsコマンド

   lsコマンドを実行すると, 次のようにリモートホストのカレントディレクトリ に存在するファイルの一覧が表示される.

ftp> ls<RET>
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
bin
.cshrc
Mail
report.tex
226 Transfer complete.
101 bytes received in 0.0032 seconds (31 Kbytes/s)
ftp> _

dirコマンド

  dirコマンドもlsと同様にファイル一覧を表示するが,ファイル サイズや保護モードなども同時に表示される.次に実行例を示す.なお,ls-lオプションをつけても同じ意味になる.

ftp> dir<RET>
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 44
-rw-rw-rw-  1 tarou   st            254 Oct 20 01:55 .cshrc
drwxr-xr-x  2 tarou   st           4096 Feb 12 12:25 bin
drwxr-----  2 tarou   st           4096 Nov 14 04:12 Mail
-rwxr-xr-x  2 tarou   st           4096 Feb 12 12:25 report.tex
226 Transfer complete.
705 bytes received in 0.047 seconds (15 Kbytes/s)
ftp> _

cdコマンド

   cdコマンドを利用するとリモートホストのディレクトリを移動できる. 転送を開始する前にこのコマンドを用いてリモートホストの目的の ディレクトリに移動する.次に実行例を示す.

ftp> cd report<RET>
250 CWD command successful.
ftp> ls<RET>
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
kadai.tex
kadai.dvi
226 Transfer complete.
44 bytes received in 0.00073 seconds (59 Kbytes/s)
ftp> _

   
6.3.5 ファイル転送モード

機種の違いによるバイナリの扱いや改行コードの違いから ファイルの中身が壊れることがある. それを避けるためにftpには ファイル転送モードとしてテキストファイル用のアスキーモード(ascii)と, バイナリファイル用のバイナリモード(binary)が用意されている. 通常,ログインしたときのファイル転送タイプはアスキーモードに設定されている.

バイナリファイルを転送する際にアスキータイプ転送の設定になっていると, ファイルの中身が壊れてしまうので注意すること .ただし,転送したファイルはもとのファイルのコピーであり, もとのファイルは保持されている.
バイナリファイルを転送する際には, ファイル転送モードをバイナリにする必要がある. あらかじめ,転送するファイルがテキストファイルであるかバイナリファイル であるかを確認すること. 例えば,のソースファイルなど Muleで編集できるような文字だけで構成されている ファイルはテキストファイルであるが, 画像ファイルやのdviファイルなどはバイナリファイルである. ただし,ローカルホストとリモートホストのOSがどちらもUNIXである場合は, テキストファイルもバイナリタイプで転送してもかまわない.

typeコマンド

  設定されているファイル転送モードを確認するときは, typeコマンドを実行する.

ftp> type<RET>
Using ascii mode to transfer files.
ftp> _

binaryコマンド

  ファイル転送モードをバイナリモードに変更するには次のように入力する.

ftp> binary<RET>
200 Type set to I.
ftp> _

asciiコマンド

  ファイル転送モードをアスキーモードに変更するには次のように入力する.

ftp> ascii<RET>
200 Type set to A.
ftp> _

   
6.3.6 リモートホストからローカルホストへのファイル転送

リモートホストに置いてあるファイルをローカルホストに転送する場合には, getコマンドやmgetコマンドを実行する. 次にコマンドの実行手順を示す. getコマンドはget (取る)という英語の意味から ダウンロード(取得)のことを意味している.

getコマンド

  getコマンドで,リモートホストのカレントディレクトリ に置いてあるファイルをローカルホストの作業ディレクトリに転送できる. この例では,kadai.texというファイルを転送している. 転送が終了するとメッセージが表示されるとともに, 再びftp>プロンプトが表示される.

ftp> get kadai.tex<RET>
200 PORT command successful.
150 Binary data connection for kadai.tex (133.27.118.89,41496) (3973 bytes).
226 Binary Transfer complete.
3973 bytes received in 0.011 seconds (3.7e+02 Kbytes/s)
ftp> _
リモートホストに指定されたファイルが存在しない場合には,次のような エラーメッセージが表示されるので,ファイル名を確認すること.

ftp> get kadai.html<RET>
200 PORT command successful.
550 kadai.html: No such file or directory.
ftp> _

mgetコマンド

   getコマンドではファイルを1個ずつしか転送できないが,mgetコ マンドを利用すると,*.texkadai?.texなどのように メタキャラクタ()を利用して, 複数個のファイルを同時に転送できる.

次に,リモートホストのカレントディレクトリのファイルをすべてローカルホ ストに転送する例を示す.なお,転送ファイル内にバイナリファイルが含 まれる場合はbinaryコマンドを実行して,転送モードをバイナリ に設定しておくこと.

ftp> mget *<RET>
mgetコマンドを実行すると,次のように指定された条件に合致するファ イルが1つ見つかる度にそのファイルを転送してよいか尋られるので, yもしくはnを入力する.ファイルはyを入力すると転送さ れ,nを入力すると転送されない.

 
ftp> mget *<RET>
mget kadai.tex? n<RET>
mget kadai.dvi? y<RET>
200 PORT command successful.
150 Binary data connection for kadai.dvi (133.27.118.89,41525) (0 bytes).
226 Binary Transfer complete.
ftp> _
getコマンドやmgetコマンドは, ローカルホストの作業ディレクトリに転送しようとしている ファイルと同じ名前のファイルがある場合,それを警告なしに上書きしてしまう. あらかじめ,ローカルホストの作業ディレクトリには転送するファイルと 同名のファイルがないことを確認しておくこと.

   
6.3.7 ローカルホストからリモートホストへのファイル転送

ローカルホストにあるファイルをリモートホストに転送する場合は, putコマンドやmputコマンドを利用する. 次にコマンドの実行手順を示す. putコマンドはput (置く)という英語からアップロード (送る)を意味している.

putコマンド

  putコマンドを実行するとローカルホストの作業ディレクトリにあるファ イルをリモートホストのカレントディレクトリ に転送できる.次に実行例を示す.

ftp> put draft.tex<RET>
転送が終了すると次のようなメッセージが表示される.

200 PORT command successful.
150 Opening BINARY mode data connection for draft.tex.
226 Transfer complete.
local: draft.tex remote: draft.tex
6089 bytes sent in 0.055 seconds (1.1e+02 Kbytes/s)
ftp> _
ローカルホストに指定されたファイルが存在しなかった場合には,次のような エラーメッセージが表示されるので,ファイル名を確認する.

ftp> put drink.tex<RET>
drink.tex: No such file or directory
ftp> _

mputコマンド

  複数個のファイルをリモートホストに転送するには, mputコマンドを用いる. 次の例では,ローカルホストの作業ディレクトリにあるファイル名が example.で始まるファイルをすべてリモートホストのカレントディレクトリ に転送している.

% mput example.*<RET>
mputコマンドを実行すると,指定された条件に合致するファイルが1つ 見つかる度にそのファイルを転送するか確認を求められるので,yある いはnを入力する.yを入力するとファイルは転送され,nと 入力すると転送されない.

ftp> mput exmple.*<RET>
mput exmple.aux? n<RET>
mput exmple.dvi? y<RET>
200 PORT command successful.
150 Opening BINARY mode data connection for exmple.dvi.
226 Transfer complete.
local: exmple.dvi remote: exmple.dvi
348 bytes sent in 0.0051 seconds (67 Kbytes/s)
ftp> _
なお,promptコマンドを利用することに よって,ファイルごとの転送確認(インタラクティブモード)の有無を切り替えられる.

putコマンドやmputコマンドは,リモートホストのカレントディ レクトリに転送しようとしているファイルと同じ名前のファイルがある場合, それを警告なしに上書きしてしまう.あらかじめリモートホストのカレントディ レクトリに同名のファイルがないことを確認しておくこと.

   
6.3.8 ftpの終了

  ファイルの転送を終了するときは,次のようにcloseコマンドを実行し てリモートホストとの接続を切断する. closeコマンドを実行するとftpプロンプトが表示される.再び別 のホストに接続する場合はopenコマンドを実行する. ftpを終了する場合は,次のようにquitコマンドを実行する.

ftp> close<RET>
221 Goodbye.
ftp> quit<RET>
% _
 

6.3.9 ftpのその他のコマンド

   
lcdコマンド

  ローカルホストの作業ディレクトリは, ftpコマンドを実行したときのカレントディレクトリになるが, lcdコマンドを用いるとリモートホストへの接続中にでも ローカルホストの作業ディレクトリを変更できる. 例えば次のコマンドを実行すると, ローカルホストの作業ディレクトリはenglishというディレクトリに変更される.

ftp> lcd english<RET>
Local directory now /a/fs0001a/t98000tf/english
ftp> _