FTPとは
ファイル・トランスファー・プロトコルの略です。
ファイルを受け渡すときに使うお約束事。
やりたいことは、クライアントとサーバー間のファイルの送受信を行うために使用する通信規約です。
サーバーにファイルをアップロードする仕組みについて
サーバーにファイルをアップロードするということは、
FTPクライアントからFTPサーバーにファイルをアップロードするということです。
FTPサーバー:FTPを使ってファイルを受け取ろうとしている端末
FTPを使うということは、FTPコマンドを入力するということです。
つまり、ファイル送受信を行うためにはコマンドを覚えておかなくてはいけません。
しかし、コマンドを覚えていなくても
FFFTPやWinSCPなどのGUI(ツール)でファイル送受信を行えます。
コマンドまで知りたいあなたへ
FTPコマンドを使ってファイルを送信したい場合、下記のステップを踏む必要があります。
①FTPの起動
②データを転送するサーバにログインする
③ローカルディレクトリを指定
④リモートディレクトリの指定
⑤転送するファイルの種類にあわせて転送モードを指定
⑥ファイルの転送
⑦FTPを終了
①FTPの起動
- スタートメニューから[プログラム]-[MS-DOSプロンプト]を選択する
- MS-DOSウインドウが開き、DOSプロンプトが表示される
- ftpを起動するC:\WINDOWS>ftp
②データを転送するサーバにログインする
- サーバーに接続する
接続したいドメインまたはIPアドレスを入力する。
1234ftp> open XXX.XXX.XXX.XXXConnected to XXX.XXX.XXX.XXX220 xxxxxxx FTP server ( xxxxxxxxxxxx ) ready.
- ユーザIDを入力する
12345ftp> open宛先 XXX.XXX.XXX.XXXXXX.XXX.XXX.XXX に接続しました。:ユーザー (XXX.XXX.XXX.XXX:(none)): <strong>[ユーザー名]</strong>
- パスワードを入力する
12345678ftp> open宛先 XXX.XXX.XXX.XXXXXX.XXX.XXX.XXX に接続しました。:ユーザー (XXX.XXX.XXX.XXX:(none)): [ユーザー名]:パスワード: <strong>[パスワード]</strong>
- 正しく認証されれば、サーバへの接続は完了。
123456789ftp> open宛先 XXX.XXX.XXX.XXXXXX.XXX.XXX.XXX に接続しました。:ユーザー (XXX.XXX.XXX.XXX:(none)): [ユーザー名]:パスワード:230 Login successful.ftp>
③ローカルディレクトリを指定
- 転送するファイルの場所を指定する(例:ホームページデータが A:\homepage にある)
12ftp> lcd c:\homepageLocal directory now A:\homepage.
- ローカルディレクトリ(転送元)のファイルの確認をするftp> !dir
123456789101112ドライブ A: のボリュームラベルはありません.ボリュームシリアル番号は 0000-0000ディレクトリは A:\homepage. <dir> 99-03-03 10:51 ... <dir> 99-03-03 10:51 ..INDEX~1 HTM 1,640 99-03-03 12:47 index.htmlIMAGE01 GIF 4,100 99-03-03 12:37 image01.gifIMAGE02 GIF 6,396 99-03-03 12:37 IMAGE02.GIF3 個 12,136 バイトのファイルがあります.2 ディレクトリ 1,443,840 バイトの空きがあります.
④リモートディレクトリの指定
- 転送先の場所を指定する(UNIX上のホームページを置くディレクトリは public_html )
12ftp> cd public_html250 CWD command successful.
- リモートディレクトリ(転送先)のファイルの確認をするftp> dir
123456200 PORT command successful.150 Opening ASCII mode data connection for /bin/ls.total 2-rw-r--r-- 1 tagami admin 1620 Mar 3 9:18 index.html226 Transfer complete.ftp: 75 bytes received in 0.11Seconds 0.68Kbytes/sec.
⑤転送するファイルの種類にあわせて転送モードを指定
- ファイルには、バイナリ形式とASCII形式の2種類があり、 転送する前にファイルにあったモードに切り替える必要があります。また、 モードを間違えて転送するとファイルが壊れるので注意しましょう
ASCII形式:HTMLなどのテキストファイル
バイナリ形式:テキスト以外のファイル(画像、音、プログラムなど) - ASCII形式ファイルを転送するときは
12ftp> ascii200 Type set to A.
- バイナリ形式ファイルを転送するときは
12ftp> bin200 Type set to I.
⑥ファイルの転送
サーバへファイルを転送する基本的なコマンドは「put」コマンド。
以下に、サーバ接続~ファイルアップロードまでのコマンド例を示す。
- HTMLファイルを転送する( index.html )
123456ftp> ascii200 Type set to A.ftp> <strong>put index.html</strong>200 PORT command successful .150 Opening ASCII mode data connection for index.html.226 Transfer complete. ftp: 1640 bytes sent in 0.00Seconds 1640000.00Kbytes/sec. - 画像ファイルを転送する( image01.gif , image02.gif )
12345678910ftp> bin200 Type set to I.ftp><strong> put image01.gif</strong>200 PORT command successful.150 Opening BINARY mode data connection for image01.gif.226 Transfer complete. ftp: 4100 bytes sent in 0.00Seconds 4100000.00Kbytes/sec.ftp> put image02.gif200 PORT command successful.150 Opening BINARY mode data connection for IMAGE02.GIF.226 Transfer complete. ftp: 6396 bytes sent in 0.00Seconds 6396000.00Kbytes/sec.
⑦FTPを終了
- ftpを終了する
12ftp> bye221 Goodbye. - DOSウインドウを終了する
1A:\Windows>exet - DOSウインドウが閉じる
複数のファイルアップロード
マッチングしたファイルを複数アップロードするコマンドは「mput」コマンド。
1 |
ftp> <code>mput *.txt |
そのまま実行すると、毎回確認が入るので、その場合はインタラクティブモードを切り替えるコマンドを事前に実行しておく。
1 |
ftp> <code>prompt</code> 対話モード オフ。 ftp> <code>mput *.txt |
ディレクトリごとアップロード
ダウンロードと同じく、PCで先に圧縮してから転送し、サーバ側で解凍するやり方でやってる。
1 2 3 |
# SSHでLinux系サーバにログインしている場合 # 転送されてきたファイルを解凍 $ <code>unzip [ファイル名].zip</code> # 圧縮ファイルは不要なので削除 $ <code>rm [ファイル名].zip |
ファイルのダウンロード
サーバからファイルを取得する基本的なコマンドは「get」コマンド。
FTPダウンロードの流れ
1 2 |
# サーバの現在のディレクトリを確認 ftp> <code>pwd</code> # 取得したいファイルがあるディレクトリへ移動 ftp> <code>cd [取得したいファイルがあるディレクトリパス]</code> # PC側の作業フォルダを確認 ftp> <code>lcd .</code> # 取得したいファイルの存在を確認 ftp> <code>ls -l</code> # サーバ → PC へファイルを転送 ftp> <code>get [ファイル名] |
複数のファイルを同時にダウンロード
マッチングしたファイルを複数ダウンロードするコマンドは「mget」コマンド。
1 |
ftp> <code>mget *.txt |
そのまま実行すると、毎回確認が入るので、
その場合は対話スキップのコマンドを事前に実行しておく。
1 |
ftp> <code>prompt</code> 対話モード オフ。 ftp> <code>mget *.txt |
ディレクトリごとダウンロード
他にいいやり方があるかもしれないけれど、先にサーバ側で圧縮してから転送するやり方でやってる。
1 2 |
# SSHでLinux系サーバにログインしている場合 $ <code>zip [ファイル名].zip [ディレクトリ名] |
コマンドを覚えておく必要性ってある?
今回はFTPとは何か。
そしてコマンドプロンプトでのFTP通信を用いてクライアント~サーバのファイル転送を解説しました。
途中でも話しましたが、通常ファイル転送ツール(アプリケーション)を使って画面で行います。
ではこのコマンドを覚える意味はないのか?
例えば、シェルでバッチアプリケーションを作る際に、その中でファイルアップロードやダウンロードをする処理があった場合にコマンドが必要になります。
コメント