【初心者向け】FTPコマンド(cmd)の基本と実践ガイド

はい、承知いたしました。Windowsのコマンドプロンプト(cmd)を使用したFTPコマンドの基本と実践について、初心者向けの詳細な解説記事を記述します。約5000語を目指し、概念から具体的な使い方、トラブルシューティング、セキュリティまで網羅的に説明します。


【初心者向け】FTPコマンド(cmd)の基本と実践ガイド

はじめに:ファイル転送の基本とFTPとは

インターネットを利用していると、ウェブサイトのファイルを見たり、ファイルをダウンロードしたり、時には自分のファイルをサーバーにアップロードしたりといった操作を行います。これらのファイル転送を行うための最も基本的なプロトコル(通信規約)の一つが「FTP」です。

FTPは “File Transfer Protocol” の略で、その名の通り、ファイル転送のために設計されたプロトコルです。FTPは非常に古くから存在しており、今でもウェブサイトの公開(サーバーへのファイルアップロード)や、大容量ファイルの共有などで利用されることがあります。

FTPを利用するには、通常「FTPクライアント」と呼ばれるソフトウェアを使います。多くの便利なGUI(Graphical User Interface、グラフィカルな操作画面)を持つFTPクライアントソフトウェアが存在しますが、実はWindowsに標準搭載されている「コマンドプロンプト(cmd)」でもFTPを利用することができます。

GUIのFTPクライアントは視覚的に分かりやすく操作しやすいですが、コマンドプロンプトのFTPコマンドには、以下のようなメリットがあります。

  • 追加のソフトウェアインストールが不要: Windowsがインストールされていればすぐに使えます。
  • 軽量: GUIクライアントよりも動作が軽快な場合があります。
  • 自動化に適している: スクリプトを作成することで、一連のFTP操作を自動化できます。定期的なバックアップやファイル同期などに役立ちます。

この記事は、FTPについて全く知識がない初心者の方でも理解できるよう、FTPの基本的な仕組みから始め、Windowsのコマンドプロンプト(cmd)を使って実際にFTPサーバーに接続し、ファイルをアップロード・ダウンロードする方法、さらに少し進んだ使い方や注意点まで、詳細に解説します。約5000語という大ボリュームで、あなたのFTPコマンドマスターへの第一歩を徹底的にサポートします。

さあ、コマンドプロンプトでFTPの世界へ足を踏み入れてみましょう!

FTPの基本的な概念を理解する

コマンドを学ぶ前に、FTPがどのように機能するのか、基本的な概念を理解しておきましょう。これにより、コマンドの意味や挙動がより分かりやすくなります。

クライアントとサーバー

FTPは「クライアント・サーバーモデル」に基づいています。
* FTPクライアント: ファイル転送を要求する側。あなたのパソコンがこれにあたります。
* FTPサーバー: ファイルを保管しており、クライアントからの要求に応じてファイルを提供したり、受け取ったりする側。ウェブサイトのファイルを置いているサーバーなどがこれにあたります。

あなたはFTPクライアント(今回の場合はWindowsのcmd)を操作して、FTPサーバーに接続し、ファイルのやり取りを行います。

接続の種類:コントロールコネクションとデータコネクション

FTPでは、クライアントとサーバーの間で2種類の接続が確立されます。

  1. コントロールコネクション:

    • FTPサーバーのポート21を使用します。
    • クライアントがサーバーにコマンド(例: ファイル一覧を表示、ディレクトリ移動、ファイル転送開始など)を送信し、サーバーがその応答を返すために使われます。
    • ログイン情報(ユーザー名、パスワード)もこの接続上でやり取りされます。
    • FTPセッションが終了するまで接続は維持されます。
  2. データコネクション:

    • 実際のファイルデータ転送のために使われます。
    • どのポートを使うかは、次に説明する「アクティブモード」と「パッシブモード」によって決まります。
    • ファイルのアップロードやダウンロード、ディレクトリ一覧の表示など、データを実際にやり取りする際に一時的に確立され、転送が完了すると切断されます。

このように、FTPでは「コマンドのやり取り」と「データのやり取り」を別の接続で行うのが特徴です。

データコネクションのモード:アクティブモードとパッシブモード

データコネクションを確立する際、クライアントとサーバーのどちらが接続を開始するかの違いにより、「アクティブモード」と「パッシブモード」という2つのモードがあります。この違いは、ファイアウォールが関係する環境では特に重要になります。

  1. アクティブモード (Active Mode):

    • コマンドの流れ:
      1. クライアントはサーバーのポート21に接続し、コントロールコネクションを確立。
      2. クライアントはサーバーにファイル転送を要求するコマンド(例: PORT コマンド)と共に、クライアント自身がデータ受信待ちになっているローカルポート番号をサーバーに伝えます。
      3. サーバーがクライアントにデータコネクションを確立します。 サーバーは自身のポート20から、クライアントが指定したローカルポートに接続します。
    • 問題点: サーバーからクライアントへの接続(外から内への接続)が発生するため、クライアント側のファイアウォールがこの着信接続をブロックしてしまうことがあります。
  2. パッシブモード (Passive Mode):

    • コマンドの流れ:
      1. クライアントはサーバーのポート21に接続し、コントロールコネクションを確立。
      2. クライアントはサーバーにファイル転送を要求する前に、パッシブモードでの接続を要求するコマンド(例: PASV コマンド)を送信します。
      3. サーバーは、データ転送に使用する自身のポート番号をクライアントに伝えます。このポート番号は通常、一時的に開かれる特定の範囲内のポートです。
      4. クライアントがサーバーにデータコネクションを確立します。 クライアントはサーバーが伝えてきたポート番号に接続します。
    • 利点: クライアントからサーバーへの接続(内から外への接続)は、多くのファイアウォールで許可されているため、アクティブモードよりもファイアウォールの問題を回避しやすいです。現在のほとんどのFTPクライアントとサーバーは、デフォルトでパッシブモードを使用します。

WindowsのcmdのFTPコマンドは、デフォルトではアクティブモードを試み、失敗した場合にパッシブモードに切り替える、あるいは手動でモードを切り替える(passive コマンド)ことができます。後ほど具体的なコマンドで説明します。

ユーザー認証:匿名FTPと認証FTP

FTPサーバーには、大きく分けて2種類の接続方法があります。

  1. 匿名FTP (Anonymous FTP):

    • 特定のユーザー名やパスワードを入力せずに接続できます。
    • ユーザー名には通常 anonymous または ftp を使用します。
    • パスワードは通常、クライアントのメールアドレスを入力することが慣例となっています(サーバー側でメールアドレスを確認する場合があるため)。
    • 主に公開されているファイルのダウンロードのために使われます。アップロードは通常制限されています。
  2. 認証FTP (Authenticated FTP):

    • 事前にFTPサーバー管理者によって割り当てられた、有効なユーザー名とパスワードが必要です。
    • ウェブサイトのファイル更新など、特定のユーザーだけがファイルを操作できるようにする場合に使われます。

cmdでFTPサーバーに接続する際、接続先サーバーがどちらの方法を許可しているかに応じて、ログインの手順が異なります。

これらの基本的な概念を頭に入れておくと、これからのコマンド操作がスムーズになります。

Windowsコマンドプロンプト (cmd) でのFTP開始

それでは、実際にWindowsのコマンドプロンプトを使ってFTPを開始する手順を見ていきましょう。

コマンドプロンプトの起動方法

Windows 10/11を例に説明します。

  1. 画面左下のスタートボタンをクリックします。
  2. 検索バーに「cmd」または「コマンドプロンプト」と入力します。
  3. 検索結果に表示される「コマンドプロンプト」をクリックして起動します。

黒い画面が表示されたら準備完了です。これがコマンドプロンプトの画面です。

FTPコマンドの起動とサーバーへの接続

コマンドプロンプトが起動したら、FTPコマンドを使用してサーバーに接続します。基本的なコマンド形式は以下の通りです。

ftp <サーバー名またはIPアドレス>

例:
* ホスト名で接続する場合: ftp ftp.example.com
* IPアドレスで接続する場合: ftp 192.168.1.100

接続コマンドを入力してEnterキーを押すと、FTPセッションが開始され、指定したサーバーへの接続が試みられます。

接続の例(認証が必要なサーバーの場合):

C:\Users\YourName>ftp ftp.example.com
ftp.example.com に接続します。
220 ProFTPD 1.3.x Server (ftp.example.com) [::ffff:xxx.xxx.xxx.xxx]
ユーザー (ftp.example.com: (なし)):

ここでサーバーから応答があり、ユーザー名の入力を求められています。これが表示されれば、サーバーへの接続自体は成功しています。

ユーザー名とパスワードの入力

サーバーに接続後、サーバーからユーザー名とパスワードの入力を求められます。

  • 匿名FTPの場合:

    • ユーザー名プロンプトが表示されたら、anonymous または ftp と入力してEnter。
    • パスワードプロンプトが表示されたら、あなたのメールアドレスを入力してEnter。パスワード入力時には、画面に文字が表示されませんが、これはセキュリティ上の仕様です。そのまま入力してEnterを押してください。

    ユーザー (ftp.example.com: (なし)): anonymous
    331 Anonymous login ok, send identity (e.g. email address) as password.
    パスワード: (メールアドレスを入力 - 表示されない)
    230 Anonymous access granted, restrictions apply
    ftp>

    230 Anonymous access granted のようなメッセージが表示され、プロンプトが ftp> に変われば、匿名ユーザーとしてログイン成功です。

  • 認証FTPの場合:

    • ユーザー名プロンプトが表示されたら、サーバー管理者から提供されたユーザー名を入力してEnter。
    • パスワードプロンプトが表示されたら、提供されたパスワードを入力してEnter。パスワードは表示されません。

    ユーザー (ftp.example.com: (なし)): your_username
    331 Password required for your_username
    パスワード: (パスワードを入力 - 表示されない)
    230 User your_username logged in
    ftp>

    230 User your_username logged in のようなメッセージが表示され、プロンプトが ftp> に変われば、指定したユーザーとしてログイン成功です。

ログインに失敗した場合、通常はエラーメッセージ(例: 530 Login incorrect)が表示され、再度ユーザー名とパスワードの入力を求められるか、接続が閉じられます。ユーザー名やパスワードが間違っていないか、大文字・小文字を含め確認してください。

FTPセッションの終了

FTPセッションを終了して、コマンドプロンプトの通常のプロンプトに戻るには、以下のいずれかのコマンドを入力します。

  • bye
  • quit

ftp> bye
221 Goodbye.
C:\Users\YourName>

221 Goodbye. のようなメッセージが表示され、プロンプトが ftp> から通常のコマンドプロンプトに戻れば、FTPセッションは正常に終了しています。

接続は維持したまま、特定のサーバーとのセッションだけを閉じたい場合は close コマンドを使いますが、cmdのFTPコマンドでは通常 bye または quit でセッション自体を終了させることが多いです。

これで、FTPサーバーへの接続から切断までの基本的な流れが分かりました。次に、接続中に使用する様々なコマンドを見ていきましょう。

FTPコマンドリファレンス:操作の基本をマスターする

FTPセッションが開始され、ftp> プロンプトが表示されている状態で、様々なコマンドを入力してサーバー上のファイルを操作します。ここでは、Windowsのcmdで利用できる主要なFTPコマンドを網羅的に解説します。

ヘルプとコマンド一覧

  • help または ?

    • 利用可能なFTPコマンドのリストを表示します。
    • help <コマンド名> のようにコマンド名を指定すると、そのコマンドの簡単な説明を表示します(ただし、cmdのFTPコマンドではあまり詳細な説明は出ません)。

    “`
    ftp> help
    Commands may be abbreviated. Commands are:

    ? delete lcd mput prompt send type
    ! debug ls open put status user
    append dir mkdir passive pwd trace verbose
    ascii disconnect mls quote quit bell get
    mdelete rename binary glob
    mget rmdir bye hash mls recv
    cd help mput remotehelp
    close literal open rename
    debug ls prompt rmdir
    delete lcd put send
    dir mdelete pwd status
    disconnect mget quit trace
    glob mkdir quote type
    hash mls recv user

    ftp> ? get
    get recv
    ftp>
    “`

ナビゲーションコマンド

サーバー上およびローカル環境でのカレントディレクトリを確認・変更するコマンドです。

  • pwd (Print Working Directory)

    • 接続中のFTPサーバー上の、現在のディレクトリのパスを表示します。

    ftp> pwd
    257 "/" is the current directory.
    ftp>

  • cd <ディレクトリ名> (Change Directory)

    • 接続中のFTPサーバー上のカレントディレクトリを変更します。
    • 相対パス、絶対パスどちらも指定可能です。
    • 親ディレクトリへ移動するには cd .. を使います。

    ftp> cd public_html
    250 CWD command successful.
    ftp> pwd
    257 "/public_html" is the current directory.
    ftp> cd ..
    250 CWD command successful.
    ftp> pwd
    257 "/" is the current directory.
    ftp> cd /var/www/html
    250 CWD command successful.
    ftp> pwd
    257 "/var/www/html" is the current directory.
    ftp>

  • lcd <ディレクトリ名> (Local Change Directory)

    • FTPクライアント(あなたのパソコン)側の、現在のカレントディレクトリを変更します。ファイル転送(get, put)の際に、特にパスを指定しなければ、このローカルのカレントディレクトリが使われます。
    • 引数を省略した場合、現在のローカルカレントディレクトリが表示されます。

    ftp> lcd C:\Users\YourName\Downloads
    Local directory now C:\Users\YourName\Downloads.
    ftp> lcd
    Local directory is C:\Users\YourName\Downloads.
    ftp> lcd ..
    Local directory now C:\Users\YourName.
    ftp>

  • dir または ls

    • 接続中のFTPサーバー上の、現在のディレクトリに含まれるファイルやディレクトリの一覧を表示します。
    • dir <ディレクトリ名> とすれば、指定したディレクトリの内容を表示できます。

    ftp> dir
    200 PORT command successful. Consider using PASV.
    150 Opening ASCII mode data connection for file list
    -rw-r--r-- 1 ftp ftp 1024 Jul 26 10:00 index.html
    drwxr-xr-x 2 ftp ftp 4096 Jul 26 09:30 images
    -rw-r--r-- 1 ftp ftp 2048 Jul 25 15:00 style.css
    226 Transfer complete.
    ftp>

    表示される情報はサーバーのOSや設定によって異なりますが、通常はファイル/ディレクトリの種類、パーミッション、所有者、グループ、サイズ、更新日時、名前などが表示されます。

ファイル転送モードの設定

ファイルを正しく転送するためには、転送モードを適切に設定することが重要です。

  • ascii

    • 転送モードをアスキーモードに設定します。
    • テキストファイル(.txt, .html, .css, .js, .php など、人間が読める文字で構成されたファイル)を転送する際に使用します。
    • 異なるOS間(例: WindowsとLinux)でテキストファイルを転送する際に発生する改行コードの違いを自動的に変換してくれます。
  • binary

    • 転送モードをバイナリモードに設定します。
    • テキストファイル以外の全てのファイル(画像ファイル .jpg, .png、圧縮ファイル .zip, .tar.gz、実行ファイル .exe、ドキュメントファイル .doc, .pdf など)を転送する際に使用します。
    • ファイルのバイナリデータをそのまま転送します。改行コードの変換は行われません。

重要: 転送するファイルの種類に応じて、必ず ascii または binary コマンドでモードを切り替えてください。特にバイナリファイルをアスキーモードで転送すると、ファイルが破損して使えなくなる可能性が高いです。ファイル転送前に status コマンドで現在の転送モードを確認する習慣をつけると良いでしょう。

ftp> status
Connected to ftp.example.com.
No user logged in.
Type: ascii; Form: nonprint; Mode: stream; Structure: file.
Verbose: on; Bell: off; Prompting: on; Globbing: on.
... (その他の情報)
ftp> binary
200 Type set to I.
ftp> status
Connected to ftp.example.com.
No user logged in.
Type: binary; Form: nonprint; Mode: stream; Structure: file.
Verbose: on; Bell: off; Prompting: on; Globbing: on.
...
ftp> ascii
200 Type set to A.
ftp> status
Connected to ftp.example.com.
No user logged in.
Type: ascii; Form: nonprint; Mode: stream; Structure: file.
Verbose: on; Bell: off; Prompting: on; Globbing: on.
...

Type: の部分が ascii または binary になっていることを確認します。

ファイル転送コマンド

いよいよ、ファイルのアップロードとダウンロードを行うコマンドです。

  • get <リモートファイル名> [ローカルファイル名] または recv <リモートファイル名> [ローカルファイル名]

    • FTPサーバーからクライアント(あなたのパソコン)へファイルをダウンロードします。
    • <リモートファイル名> はサーバー上のファイルのパスです。カレントディレクトリからの相対パスまたは絶対パスで指定します。
    • [ローカルファイル名] はオプションです。指定しない場合、リモートファイル名と同じ名前でローカルのカレントディレクトリに保存されます。異なる名前で保存したい場合や、ローカルカレントディレクトリとは異なる場所に保存したい場合に指定します(ローカルファイル名にパスを含める)。

    例:
    ftp> binary (画像ファイルなのでバイナリモードに設定)
    200 Type set to I.
    ftp> get /images/logo.png
    200 PORT command successful. Consider using PASV.
    150 Opening BINARY mode data connection for /images/logo.png (12345 bytes).
    226 Transfer complete.
    ftp>

    この例では、サーバーの /images/ ディレクトリにある logo.png を、ローカルのカレントディレクトリに logo.png という名前でダウンロードしています。

    ftp> ascii (テキストファイルなのでアスキーモードに設定)
    200 Type set to A.
    ftp> get /public_html/index.html C:\Temp\downloaded_index.html
    200 PORT command successful. Consider using PASV.
    150 Opening ASCII mode data connection for /public_html/index.html (5678 bytes).
    226 Transfer complete.
    ftp>

    この例では、サーバーの /public_html/ ディレクトリにある index.html を、ローカルの C:\Temp\ ディレクトリに downloaded_index.html という名前でダウンロードしています。

  • put <ローカルファイル名> [リモートファイル名] または send <ローカルファイル名> [リモートファイル名]

    • クライアント(あなたのパソコン)からFTPサーバーへファイルをアップロードします。
    • <ローカルファイル名> はあなたのパソコン上のファイルのパスです。ローカルのカレントディレクトリからの相対パスまたは絶対パスで指定します。
    • [リモートファイル名] はオプションです。指定しない場合、ローカルファイル名と同じ名前でサーバーのカレントディレクトリにアップロードされます。異なる名前でアップロードしたい場合や、サーバーカレントディレクトリとは異なる場所にアップロードしたい場合に指定します(リモートファイル名にパスを含める)。アップロード先のディレクトリはサーバー上に存在している必要があります(存在しないディレクトリにはアップロードできません)。

    例:
    ftp> ascii (HTMLファイルなのでアスキーモードに設定)
    200 Type set to A.
    ftp> put C:\Users\YourName\Desktop\mypage.html /public_html/index.html
    200 PORT command successful. Consider using PASV.
    150 Opening ASCII mode data connection for mypage.html.
    226 Transfer complete.
    ftp>

    この例では、ローカルのデスクトップにある mypage.html を、サーバーの /public_html/ ディレクトリに index.html という名前でアップロード(上書き)しています。

    ftp> binary (画像ファイルなのでバイナリモードに設定)
    200 Type set to I.
    ftp> put C:\Users\YourName\Pictures\new_logo.jpg images/uploaded_logo.jpg
    200 PORT command successful. Consider using PASV.
    150 Opening BINARY mode data connection for C:\Users\YourName\Pictures\new_logo.jpg (98765 bytes).
    226 Transfer complete.
    ftp>

    この例では、ローカルのピクチャディレクトリにある new_logo.jpg を、サーバーのカレントディレクトリ(例: /public_html)の下の images ディレクトリに uploaded_logo.jpg という名前でアップロードしています。アップロード先の images ディレクトリはサーバー上に存在している必要があります。

複数ファイル転送コマンド

複数のファイルをまとめて転送したい場合に便利なコマンドです。ワイルドカード(*?)を使ってファイルを指定できます。

  • mget <リモートファイルパターン> (Multiple Get)

    • FTPサーバーから、指定したパターンに一致する複数のファイルをまとめてダウンロードします。
    • ワイルドカードが使えます。
    • 注意: mgetコマンドは、デフォルトでファイルごとにダウンロードするか確認のプロンプトを表示します。これを無効にするには、事前に prompt コマンドを使います(後述)。

    例:
    ftp> ascii (HTMLファイルなのでアスキーモードに設定)
    200 Type set to A.
    ftp> prompt
    Interactive mode Off.
    ftp> mget *.html
    200 PORT command successful. Consider using PASV.
    150 Opening ASCII mode data connection for index.html (1024 bytes).
    226 Transfer complete.
    200 PORT command successful. Consider using PASV.
    150 Opening ASCII mode data connection for about.html (800 bytes).
    226 Transfer complete.
    ftp> prompt
    Interactive mode On.
    ftp>

    この例では、まず prompt コマンドでプロンプト表示をオフにしてから、カレントディレクトリにある全ての .html ファイルをダウンロードしています。ダウンロード後、prompt を再度実行してプロンプト表示をオンに戻しています。

  • mput <ローカルファイルパターン> (Multiple Put)

    • クライアント(あなたのパソコン)から、指定したパターンに一致する複数のファイルをまとめてFTPサーバーへアップロードします。
    • ワイルドカードが使えます。
    • 注意: mputコマンドも、デフォルトでファイルごとにアップロードするか確認のプロンプトを表示します。これを無効にするには、事前に prompt コマンドを使います。

    例:
    ftp> binary (画像ファイルなのでバイナリモードに設定)
    200 Type set to I.
    ftp> prompt
    Interactive mode Off.
    ftp> mput *.jpg
    200 PORT command successful. Consider using PASV.
    150 Opening BINARY mode data connection for photo1.jpg (50000 bytes).
    226 Transfer complete.
    200 PORT command successful. Consider using PASV.
    150 Opening BINARY mode data connection for photo2.jpg (60000 bytes).
    226 Transfer complete.
    ftp> prompt
    Interactive mode On.
    ftp>

    この例では、まず prompt コマンドでプロンプト表示をオフにしてから、ローカルのカレントディレクトリにある全ての .jpg ファイルをアップロードしています。

ファイル操作コマンド

サーバー上のファイルやディレクトリを操作するコマンドです。

  • delete <リモートファイル名>

    • FTPサーバー上の指定したファイルを削除します。

    ftp> delete old_file.txt
    250 DELE command successful.
    ftp>

  • mdelete <リモートファイルパターン> (Multiple Delete)

    • FTPサーバー上の、指定したパターンに一致する複数のファイルをまとめて削除します。
    • ワイルドカードが使えます。
    • デフォルトでファイルごとに削除するか確認のプロンプトを表示します。無効にするには prompt コマンドを使います。

    ftp> prompt
    Interactive mode Off.
    ftp> mdelete *.bak
    250 DELE command successful.
    250 DELE command successful.
    ftp> prompt
    Interactive mode On.
    ftp>

  • mkdir <ディレクトリ名> (Make Directory)

    • FTPサーバー上の現在のディレクトリの下に、新しいディレクトリを作成します。

    ftp> mkdir new_folder
    257 "new_folder" directory created.
    ftp>

  • rmdir <ディレクトリ名> (Remove Directory)

    • FTPサーバー上の指定したディレクトリを削除します。
    • 注意: このコマンドで削除できるのは、空のディレクトリのみです。ディレクトリ内にファイルやサブディレクトリがある場合は削除できません。

    ftp> rmdir empty_folder
    250 RMD command successful.
    ftp>

  • rename <元の名前> <新しい名前>

    • FTPサーバー上のファイルまたはディレクトリの名前を変更します。

    ftp> rename old_name.txt new_name.txt
    250 RNTO command successful.
    ftp> rename /public_html/temp /public_html/backup
    250 RNTO command successful.
    ftp>

その他の便利なコマンド

  • !

    • 一時的にFTPセッションを中断し、ローカルのコマンドプロンプトに戻ります。ローカルで別のコマンドを実行してから exit と入力するとFTPセッションに戻ります。
    • 例: ! dir と入力すると、ローカルのカレントディレクトリのファイル一覧を表示します。

    “`
    ftp> ! dir
    ボリューム C のラベルは Windows です
    ボリューム シリアル番号は XXXX-XXXX です

    C:\Users\YourName のディレクトリ

    2023/10/27 10:00

    .
    2023/10/27 10:00 ..
    2023/10/26 15:30 1234 mypage.html

    C:\Users\YourName> exit (ここでexitと入力するとFTPに戻る)
    ftp>
    “`

  • status

    • 現在のFTPセッションの状態(接続先、ログインユーザー、転送モード、各種設定など)を表示します。トラブルシューティングに役立ちます。
  • hash

    • ファイル転送中に、転送ブロック(通常2048バイト)ごとに # 記号を表示するかどうかの設定を切り替えます。オンにすると、転送の進行状況を確認できます。

    “`
    ftp> hash
    Hash mark printing On (2048 bytes).
    ftp> get largefile.zip
    200 PORT command successful. Consider using PASV.
    150 Opening BINARY mode data connection for largefile.zip (12345678 bytes).

    ##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################————————————————————————————————————————————————————————————————+FTPコマンドの基本と実践ガイド(Windowsコマンドプロンプト cmd)の詳細な説明を含む記事ですね。初心者向けとのことで、FTPの概念から始めて、Windowsのコマンドプロンプト(cmd)での具体的な操作方法を詳細に解説する形式で記述します。約5000語という指定は技術記事としては非常に長いため、各項目を深く掘り下げ、具体的な例やシナリオを豊富に盛り込むように構成します。

【初心者向け】FTPコマンド(cmd)の基本と実践ガイド

インターネット上でファイル転送を行う最も基本的な方法の一つにFTP(File Transfer Protocol)があります。ウェブサイトのファイルを公開したり、サーバーとファイルをやり取りしたりする際に今でも広く利用されています。FTPクライアントソフトウェアはたくさんありますが、Windowsに標準搭載されている「コマンドプロンプト(cmd)」を使ってもFTP通信を行うことができます。GUIクライアントのような分かりやすさはありませんが、軽量で手軽に使える点や、自動化できるというメリットがあります。

この記事では、FTPの基本的な仕組みから、Windowsのコマンドプロクト(cmd)を使ったFTPコマンドの具体的な使い方、さらには実践的なテクニックやセキュリティに関する注意点まで、初心者の方でも理解できるよう詳細に解説します。約5000語というボリュームで、FTPコマンドを使いこなすための知識と自信を提供します。

はじめに:FTPの役割とcmdで使う理由

FTP(File Transfer Protocol)は、その名の通り、インターネットなどのネットワークを通じてファイルを転送するためのプロトコルです。クライアント(あなた)がFTPサーバーに接続し、サーバーとの間でファイルをアップロードしたりダウンロードしたり、サーバー上のファイルを操作したりすることができます。

FTPは非常に古くから使われているプロトコルであり、今でも多くのウェブホスティングサービスやファイルサーバーで利用されています。例えば、あなたが作成したウェブサイトのHTMLファイルや画像ファイルをレンタルサーバーにアップロードする際にFTPが使われます。

FTPクライアントソフトウェアには、FileZillaやWinSCPのようなGUIを持つものが一般的で使いやすいですが、Windowsに標準で備わっているコマンドプロンプト(cmd)でもFTPの機能を利用できます。cmdのFTPコマンドを使う主なメリットは以下の通りです。

  • 追加のインストール不要: Windowsが入っていればすぐに使えます。
  • 軽量: 専用クライアントに比べて起動や動作が軽快な場合があります。
  • スクリプトによる自動化: 一連のFTP操作をテキストファイル(バッチファイルなど)に記述しておき、自動的に実行させることができます。これは、定期的なバックアップや大量のファイル転送などに非常に便利です。

この記事では、このcmdのFTPコマンドに焦点を当て、その使い方を徹底的にマスターすることを目指します。

FTPの基本概念:仕組みを知ろう

FTPコマンドを効果的に使うためには、FTPがどのように動作するのか、基本的な概念を理解しておくことが役立ちます。

クライアントとサーバーの関係

FTPは「クライアント・サーバーモデル」という通信の基本形を採用しています。

  • FTPサーバー: ファイルを保管しているコンピューターです。クライアントからの要求を受けて、ファイルの提供や受け入れを行います。例えば、レンタルサーバーや社内のファイルサーバーなどがこれにあたります。
  • FTPクライアント: ファイル転送を要求する側のコンピューターです。あなたの使っているパソコンがこれにあたります。GUIのFTPクライアントソフトや、今回学ぶcmdのFTPコマンドなどがFTPクライアントにあたります。

あなたはFTPクライアントとして、FTPサーバーに接続し、コマンドを送ることでファイル操作を行います。

制御接続(コントロールコネクション)とデータ接続(データコネクション)

FTPの大きな特徴の一つに、コマンドのやり取りと実際のデータ転送を別の接続(コネクション)で行うという点があります。

  1. 制御接続 (Control Connection):

    • FTPサーバーの標準的なポート番号であるポート21を使用して確立されます。
    • この接続は、クライアントがサーバーにコマンド(例: ディレクトリ一覧表示、ディレクトリ移動、ファイル転送開始の指示など)を送信し、サーバーがその応答(例: コマンド成功、エラーメッセージ、ファイル一覧など)を返すために使われます。
    • ログイン情報(ユーザー名とパスワード)もこの接続上でやり取りされます。
    • FTPセッションが終了するまで、原則としてこの接続は維持されたままになります。
  2. データ接続 (Data Connection):

    • 実際のファイルデータ(ファイルの内容そのもの)を転送するために使われます。
    • この接続で使用するポート番号は固定ではなく、制御接続を通じてクライアントとサーバーの間で決定されます。この決定方法の違いが、後述する「アクティブモード」と「パッシブモード」の違いとなります。
    • ファイルやディレクトリ一覧など、データを実際にやり取りするコマンド(get, put, dir, ls など)を実行する際に一時的に確立され、転送や一覧表示が完了すると切断されます。

このように、制御接続で「何をしたいか」をサーバーに伝え、サーバーからの応答を受けて、必要に応じてデータ接続を確立して実際の「データ」をやり取りするという流れになります。

データ接続のモード:アクティブモードとパッシブモード

データ接続を確立する際、クライアントとサーバーのどちらがデータ接続の開始要求を出すかによって、「アクティブモード」と「パッシブモード」という2つのモードが存在します。この違いは、特にファイアウォールが設定されている環境で問題となることがあります。

  1. アクティブモード (Active Mode):

    • 仕組み:
      1. クライアントはサーバーのポート21に接続し、制御接続を確立します。
      2. クライアントはサーバーに対し、ファイル転送要求と共に、クライアント自身のデータを受け取るためのローカルポート番号(N番とする)をサーバーに伝えます(PORTコマンド)。
      3. サーバーは、自身のポート20から、クライアントが指定したローカルポートN番へデータ接続を開始します。
    • 問題点: サーバーからクライアントへの接続要求(外部から内部への接続)が発生するため、クライアント側のファイアウォールがこの接続を「外部からの不審な接続」と判断してブロックしてしまうことがあります。これは、特にクライアント側のネットワーク環境が厳しい場合に問題になりやすいです。
  2. パッシブモード (Passive Mode):

    • 仕組み:
      1. クライアントはサーバーのポート21に接続し、制御接続を確立します。
      2. クライアントはサーバーに対し、パッシブモードでデータ接続を行いたいと要求します(PASVコマンド)。
      3. サーバーは、データ転送に使用する自身のサーバー側の一時的なポート番号(M番とする)をクライアントに伝えます。
      4. クライアントは、サーバーが伝えてきたサーバー側のポートM番へデータ接続を開始します。
    • 利点: クライアントからサーバーへの接続(内部から外部への接続)のみでデータ転送が行われます。ほとんどのファイアウォールは内部から外部への接続を許可しているため、アクティブモードよりもファイアウォールの問題を回避しやすいです。現在の多くのFTPクライアントやサーバーは、デフォルトでパッシブモードを使用します。

WindowsのcmdのFTPコマンドも、接続時にデフォルトでアクティブモードを試み、失敗した場合にパッシブモードに切り替えるか、または passive コマンドを使って手動でパッシブモードを指定することができます。通常、接続がうまくいかない場合は、パッシブモードを試してみる価値があります。

認証:匿名FTPと認証FTP

FTPサーバーへの接続には、主に2つの認証方法があります。

  1. 匿名FTP (Anonymous FTP):

    • 特別なアカウントを持たない不特定のユーザーでも接続できるように設定されたFTPサーバーです。
    • 主にソフトウェアの配布や公開情報の提供などに利用されます。
    • ログインする際は、ユーザー名に anonymous または ftp を入力し、パスワードには慣例として自分のメールアドレスを入力します(サーバー側でログを記録したり、接続元の確認に使ったりするため)。
    • 通常、ファイルのダウンロードのみが可能で、アップロードや削除などの操作は制限されています。
  2. 認証FTP (Authenticated FTP):

    • 事前にサーバー管理者から発行された、有効なユーザー名とパスワードを入力してログインします。
    • ウェブサイトの管理(ファイルのアップロード/ダウンロード/削除)や、特定のユーザー間でのファイル共有など、アクセスを制限したい場合に利用されます。
    • あなたがレンタルサーバーを借りてウェブサイトを公開する場合、通常はこの認証FTPを使ってサーバーに接続します。

cmdでFTPサーバーに接続する際、これらの認証方法に応じて、ログイン時に要求される情報の種類が異なります。

コマンドプロンプト (cmd) でのFTP操作手順

基本的な概念を理解したところで、実際にコマンドプロンプトを操作してみましょう。

FTPセッションの開始とサーバーへの接続

  1. コマンドプロンプトを開く:
    Windowsの検索バーに「cmd」と入力し、「コマンドプロンプト」を選択して起動します。

  2. FTPセッションを開始し、サーバーに接続:
    コマンドプロンプトが表示されたら、以下の形式でコマンドを入力します。

    cmd
    ftp [サーバー名またはIPアドレス]

    例:
    * ftp ftp.example.com
    * ftp 192.168.1.100

    サーバー名またはIPアドレスを省略して ftp だけを入力し、Enterを押すこともできます。この場合は、FTPの対話モードに入った後で open コマンドを使って接続します。

    cmd
    C:\Users\YourName>ftp
    ftp> open ftp.example.com
    ftp.example.com に接続します。
    220 ProFTPD 1.3.x Server (ftp.example.com) [::ffff:xxx.xxx.xxx.xxx]
    ユーザー (ftp.example.com: (なし)):

    接続に成功すると、サーバーからの応答メッセージ(通常は 220 ... から始まる行)が表示され、ユーザー (サーバー名: (なし)): というプロンプトが表示されます。

ユーザー名とパスワードの入力

接続後、サーバーはユーザー名とパスワードを要求します。

  1. ユーザー名の入力:
    ユーザー (サーバー名: (なし)): プロンプトに対して、ユーザー名を入力し、Enterキーを押します。

    • 匿名FTPの場合: anonymous または ftp
    • 認証FTPの場合: サーバーから提供されたユーザー名

    cmd
    ユーザー (ftp.example.com: (なし)): your_username

  2. パスワードの入力:
    ユーザー名を入力してEnterを押すと、パスワード: というプロンプトが表示されます。パスワードを入力し、Enterキーを押します。パスワードを入力しても画面には何も表示されませんが、これは正常な動作です。

    cmd
    パスワード: ****** (入力内容は表示されない)

  3. ログイン成功の確認:
    正しいユーザー名とパスワードを入力すると、サーバーからログイン成功を示すメッセージ(例: 230 User logged in)が表示され、プロンプトが通常のコマンドプロンプトの C:\Users\YourName> から ftp> に変わります。これで、FTPサーバーにログインした状態でコマンドを実行できるようになります。

    cmd
    230 User your_username logged in
    ftp>

    ログインに失敗した場合は、エラーメッセージ(例: 530 Login incorrect.)が表示され、再度ユーザー名/パスワードの入力を求められるか、接続が切断されます。

FTPセッションの終了

FTPセッションを終了し、コマンドプロンプトの通常の状態に戻るには、以下のいずれかのコマンドを入力します。

  • bye
  • quit

cmd
ftp> bye
221 Goodbye.
C:\Users\YourName>

221 Goodbye. などの終了メッセージが表示され、プロンプトが C:\Users\YourName> に戻れば、FTPセッションは正常に終了しています。

もし複数のFTPサーバーに接続している場合(cmdのFTPでは通常一度に一つの接続ですが)、現在の接続だけを閉じたい場合は close コマンドも使えます。

FTPコマンド詳細:サーバーとのやり取り

ftp> プロンプトが表示されている状態で、サーバー上のファイルやディレクトリを操作する様々なコマンドを実行できます。ここでは、主要なコマンドとその使い方を詳しく見ていきます。

ファイルとディレクトリの参照・移動

  • pwd (Print Working Directory)

    • 目的: サーバー上の現在の作業ディレクトリ(カレントディレクトリ)を表示します。
    • 書式: pwd
    • 例:
      cmd
      ftp> pwd
      257 "/" is the current directory.

      サーバーのルートディレクトリにいることがわかります。
  • cd (Change Directory)

    • 目的: サーバー上のカレントディレクトリを変更します。
    • 書式: cd <ディレクトリ名>
    • 引数: 移動したいディレクトリのパス。相対パス(現在のディレクトリからの位置)または絶対パス(/ から始まるサーバー上の正確な位置)を指定できます。親ディレクトリに移動する場合は .. を指定します。
    • 例:
      cmd
      ftp> cd public_html (現在のディレクトリの下にある public_html に移動)
      250 CWD command successful.
      ftp> pwd
      257 "/public_html" is the current directory.
      ftp> cd .. (親ディレクトリに移動)
      250 CWD command successful.
      ftp> pwd
      257 "/" is the current directory.
      ftp> cd /var/www/html (絶対パスで /var/www/html に移動)
      250 CWD command successful.
  • lcd (Local Change Directory)

    • 目的: クライアント(あなたのPC)側のカレントディレクトリを変更します。getput コマンドでファイルを指定する際に、パスを省略した場合の基準となるディレクトリです。
    • 書式: lcd [ディレクトリ名]
    • 引数: 移動したいローカルディレクトリのパス。省略した場合、現在のローカルカレントディレクトリが表示されます。
    • 例:
      cmd
      ftp> lcd C:\Users\YourName\Documents (ローカルのカレントディレクトリを Documents に変更)
      Local directory now C:\Users\YourName\Documents.
      ftp> lcd (ローカルのカレントディレクトリを表示)
      Local directory is C:\Users\YourName\Documents.
      ftp> lcd .. (ローカルの親ディレクトリに移動)
      Local directory now C:\Users\YourName.
  • dir または ls

    • 目的: サーバー上のファイルやディレクトリの一覧を表示します。
    • 書式: dir [ディレクトリ名] [ローカルファイル名] または ls [ディレクトリ名] [ローカルファイル名]
    • 引数:
      • [ディレクトリ名]: 一覧を表示したいサーバー上のディレクトリ。省略した場合はサーバーのカレントディレクトリの一覧を表示します。
      • [ローカルファイル名]: オプション。一覧結果をファイルに保存する場合に指定します。
    • 例:
      cmd
      ftp> dir
      200 PORT command successful. Consider using PASV.
      150 Opening ASCII mode data connection for file list
      -rw-r--r-- 1 user group 1024 Oct 27 10:00 index.html
      drwxr-xr-x 2 user group 4096 Oct 27 09:30 images
      -rw-r--r-- 1 user group 2048 Oct 26 15:00 style.css
      226 Transfer complete.
      ftp> dir images (imagesディレクトリの内容を表示)
      200 PORT command successful. Consider using PASV.
      150 Opening ASCII mode data connection for file list
      -rw-r--r-- 1 user group 5120 Oct 27 10:30 logo.png
      -rw-r--r-- 1 user group 8765 Oct 27 10:35 background.jpg
      226 Transfer complete.

      dirls は、表示形式がサーバーによって異なる場合があります。

転送モードの設定(重要!)

ファイルを正しく転送するために、転送モードを設定します。

  • ascii

    • 目的: 転送モードをアスキー(テキスト)モードに設定します。
    • 書式: ascii
    • 使用場面: テキストファイル(.txt, .html, .css, .js, .php, .log, .csvなど)を転送する際に使用します。異なるOS間でテキストファイルをやり取りする際に、改行コードの違いを自動的に変換してくれます。
  • binary

    • 目的: 転送モードをバイナリモードに設定します。
    • 書式: binary
    • 使用場面: テキストファイル以外の全てのファイル(画像、音声、動画、実行ファイル、圧縮ファイル、Word/Excel/PDFなどのドキュメント)を転送する際に使用します。ファイルのバイトデータをそのまま転送します。

なぜモード設定が重要か?
バイナリファイルをアスキーモードで転送すると、改行コードの変換が誤って行われ、ファイルの内容が壊れてしまい、正しく開けなくなったり実行できなくなったりします。逆に、テキストファイルをバイナリモードで転送しても問題ないことが多いですが、環境によっては表示崩れの原因となる場合があります。基本的には、テキストファイルはascii、それ以外は全てbinaryと覚えておきましょう。

  • status
    • 目的: 現在のFTPセッションの状態を表示します。転送モードの確認に役立ちます。
    • 書式: status
    • 例:
      cmd
      ftp> status
      Connected to ftp.example.com.
      User logged in as your_username.
      Type: ascii; Form: nonprint; Mode: stream; Structure: file. <-- ここでモードを確認
      Verbose: on; Bell: off; Prompting: on; Globbing: on.
      ... (その他の情報)

      Type: の部分が asciibinary になっているかを確認します。

ファイルのダウンロード(サーバーからPCへ)

  • get または recv

    • 目的: FTPサーバーからファイル一つをダウンロードします。
    • 書式: get <リモートファイル名> [ローカルファイル名]
    • 引数:
      • <リモートファイル名>: サーバー上のダウンロードしたいファイルのパス。
      • [ローカルファイル名]: オプション。ローカルに保存する際のファイル名。パスを指定しなければ、現在のローカルカレントディレクトリに保存されます。指定しない場合、リモートファイル名と同じ名前で保存されます。
    • 例:
      cmd
      ftp> binary (画像ファイルなのでバイナリモードに)
      200 Type set to I.
      ftp> get logo.png (サーバーのカレントディレクトリにある logo.png をダウンロード)
      200 PORT command successful. Consider using PASV.
      150 Opening BINARY mode data connection for logo.png (5120 bytes).
      226 Transfer complete.
      ftp> get /images/background.jpg C:\Downloads\bg.jpg (サーバーの /images/にある background.jpg を ローカルの C:\Downloads に bg.jpg としてダウンロード)
      200 PORT command successful. Consider using PASV.
      150 Opening BINARY mode data connection for /images/background.jpg (8765 bytes).
      226 Transfer complete.
  • mget (Multiple Get)

    • 目的: FTPサーバーから複数のファイルをまとめてダウンロードします。
    • 書式: mget <リモートファイルパターン>
    • 引数: ダウンロードしたいファイルのパターン。ワイルドカード(*?)が使用できます。
    • 注意点: デフォルトでは、ダウンロード対象のファイルごとに「ダウンロードしますか? (y/n)」というプロンプトが表示されます。これを無効にして全てのファイルを自動的にダウンロードするには、事前に prompt コマンドを実行してモードをオフにします。

    例:
    cmd
    ftp> ascii (HTMLファイルなのでアスキーモードに)
    200 Type set to A.
    ftp> prompt (プロンプトを無効に)
    Interactive mode Off.
    ftp> mget *.html (サーバーのカレントディレクトリにある全ての .html ファイルをダウンロード)
    200 PORT command successful. Consider using PASV.
    150 Opening ASCII mode data connection for index.html (1024 bytes).
    226 Transfer complete.
    200 PORT command successful. Consider using PASV.
    150 Opening ASCII mode data connection for about.html (800 bytes).
    226 Transfer complete.
    ftp> prompt (プロンプトを元に戻す)
    Interactive mode On.

ファイルのアップロード(PCからサーバーへ)

  • put または send

    • 目的: クライアント(あなたのPC)からFTPサーバーへファイル一つをアップロードします。
    • 書式: put <ローカルファイル名> [リモートファイル名]
    • 引数:
      • <ローカルファイル名>: あなたのPC上のアップロードしたいファイルのパス。
      • [リモートファイル名]: オプション。サーバーに保存する際のファイル名。パスを指定しなければ、サーバーの現在のカレントディレクトリにアップロードされます。指定しない場合、ローカルファイル名と同じ名前でアップロードされます。アップロード先のディレクトリはサーバー上に存在している必要があります。
    • 例:
      cmd
      ftp> ascii (HTMLファイルなのでアスキーモードに)
      200 Type set to A.
      ftp> put mypage.html (ローカルのカレントディレクトリにある mypage.html をサーバーのカレントディレクトリにアップロード)
      200 PORT command successful. Consider using PASV.
      150 Opening ASCII mode data connection for mypage.html (1234 bytes).
      226 Transfer complete.
      ftp> put C:\Reports\final_report.pdf /private/documents/report.pdf (ローカルの指定ファイルをサーバーの指定パスにアップロード)
      200 PORT command successful. Consider using PASV.
      150 Opening BINARY mode data connection for C:\Reports\final_report.pdf (56789 bytes).
      226 Transfer complete.
  • mput (Multiple Put)

    • 目的: クライアント(あなたのPC)からFTPサーバーへ複数のファイルをまとめてアップロードします。
    • 書式: mput <ローカルファイルパターン>
    • 引数: アップロードしたいローカルファイルのパターン。ワイルドカード(*?)が使用できます。
    • 注意点: デフォルトでは、アップロード対象のファイルごとに「アップロードしますか? (y/n)」というプロンプトが表示されます。これを無効にして全てのファイルを自動的にアップロードするには、事前に prompt コマンドを実行してモードをオフにします。

    例:
    cmd
    ftp> binary (画像ファイルなのでバイナリモードに)
    200 Type set to I.
    ftp> prompt (プロンプトを無効に)
    Interactive mode Off.
    ftp> mput *.jpg (ローカルのカレントディレクトリにある全ての .jpg ファイルをアップロード)
    200 PORT command successful. Consider using PASV.
    150 Opening BINARY mode data connection for image1.jpg (9876 bytes).
    226 Transfer complete.
    200 PORT command successful. Consider using PASV.
    150 Opening BINARY mode data connection for image2.jpg (12345 bytes).
    226 Transfer complete.
    ftp> prompt (プロンプトを元に戻す)
    Interactive mode On.

ファイル・ディレクトリの操作

  • delete

    • 目的: サーバー上のファイル一つを削除します。
    • 書式: delete <リモートファイル名>
    • 例:
      cmd
      ftp> delete old_document.txt
      250 DELE command successful.
  • mdelete (Multiple Delete)

    • 目的: サーバー上の複数のファイルをまとめて削除します。
    • 書式: mdelete <リモートファイルパターン>
    • 引数: 削除したいサーバー上のファイルのパターン。ワイルドカードが使用できます。
    • 注意点: mget, mput と同様に、デフォルトではファイルごとに確認プロンプトが表示されます。無効にするには prompt コマンドを使います。

    例:
    cmd
    ftp> prompt
    Interactive mode Off.
    ftp> mdelete temp_*.log
    250 DELE command successful.
    250 DELE command successful.
    ftp> prompt
    Interactive mode On.

  • mkdir (Make Directory)

    • 目的: サーバー上に新しいディレクトリを作成します。
    • 書式: mkdir <ディレクトリ名>
    • 引数: 作成したいディレクトリの名前。サーバーのカレントディレクトリの下に作成されます。パスを含めて指定することもできます。
    • 例:
      cmd
      ftp> mkdir uploads
      257 "/public_html/uploads" directory created.
  • rmdir (Remove Directory)

    • 目的: サーバー上のディレクトリを削除します。
    • 書式: rmdir <ディレクトリ名>
    • 引数: 削除したいディレクトリの名前。
    • 注意点: 削除できるのは、内容が空のディレクトリのみです。中にファイルやサブディレクトリがある場合は削除できません。

    cmd
    ftp> rmdir old_folder
    250 RMD command successful.

  • rename

    • 目的: サーバー上のファイルまたはディレクトリの名前を変更します。
    • 書式: rename <元の名前> <新しい名前>
    • 引数:
      • <元の名前>: 名前を変更したいサーバー上のファイルまたはディレクトリの現在の名前。
      • <新しい名前>: 変更後の新しい名前。
    • 例:
      cmd
      ftp> rename index.html index_old.html
      350 Rename from index.html
      250 RNTO command successful.

その他の役立つコマンド

  • passive

    • 目的: データ接続モードをパッシブモードに切り替えます。
    • 書式: passive
    • 特に、ファイアウォールによってアクティブモードでのファイル転送がブロックされる場合に試す価値があります。一度実行すると、明示的にモードを変更しない限りパッシブモードが維持されます。

    cmd
    ftp> passive
    Passive mode on.

    パッシブモードをオフにしたい場合は、同じ passive コマンドを再度実行します。

  • prompt

    • 目的: mgetmput, mdelete コマンド実行時に、個々のファイル転送/削除の前に確認プロンプトを表示するかどうかを切り替えます。
    • 書式: prompt
    • 例:
      cmd
      ftp> prompt
      Interactive mode Off. (これで確認プロンプトが表示されなくなる)
      ftp> prompt
      Interactive mode On. (これで確認プロンプトが表示されるようになる)
  • verbose

    • 目的: ファイル転送の際に、転送速度や転送量などの詳細情報を表示するかどうかを切り替えます。デフォルトはオンです。
    • 書式: verbose
    • 例:
      cmd
      ftp> verbose
      Verbose mode Off.
      ftp> get largefile.zip
      200 PORT command successful. Consider using PASV.
      150 Opening BINARY mode data connection for largefile.zip (12345678 bytes).
      226 Transfer complete.
      ftp> verbose
      Verbose mode On.
      ftp> get largefile.zip
      200 PORT command successful. Consider using PASV.
      150 Opening BINARY mode data connection for largefile.zip (12345678 bytes).
      Transferring largefile.zip ...
      12345678 bytes received in 1.23 seconds (10.00 Mbytes/sec)
      226 Transfer complete.
  • hash

    • 目的: ファイル転送中に、データブロック(通常2048バイト)を転送するたびに # 記号を表示するかどうかを切り替えます。転送が進んでいることを視覚的に確認できます。デフォルトはオフです。
    • 書式: hash
    • 例:
      cmd
      ftp> hash
      Hash mark printing On (2048 bytes).
      ftp> get largefile.zip
      200 PORT command successful. Consider using PASV.
      150 Opening BINARY mode data connection for largefile.zip (12345678 bytes).
      ############################################################... (転送中に # が表示される)
      226 Transfer complete.
  • ! (シェルエスケープ)

    • 目的: 一時的にFTPセッションを中断し、ローカルのコマンドプロンプトに戻って通常のWindowsコマンドを実行できるようにします。
    • 書式: ! [コマンド]
    • 引数: 省略可能。実行したいローカルのコマンド。引数を省略して ! だけを入力すると、新しいコマンドプロンプトが起動します。
    • FTPセッションに戻るには、ローカルのコマンドプロンプトで exit と入力して閉じます。

    例: ローカルのファイル一覧を確認したい場合
    “`cmd
    ftp> ! dir
    ボリューム C のラベルは Windows です
    ボリューム シリアル番号は XXXX-XXXX です

    C:\Users\YourName\Documents のディレクトリ (lcd で変更したディレクトリ)

    2023/10/27 10:00

    .
    2023/10/27 10:00 ..
    2023/10/26 15:30 1234 mypage.html

    C:\Users\YourName\Documents> exit (ここからexitと入力してFTPに戻る)
    ftp>
    “`

これらのコマンドを組み合わせることで、サーバー上のファイルの確認、移動、ダウンロード、アップロード、削除、名前変更などの基本的な操作がコマンドラインで行えます。

実践的な使い方:具体的なシナリオ

ここでは、cmdのFTPコマンドを使ったより実践的なシナリオをいくつか紹介します。

シナリオ1:ウェブサイトのファイルを更新する

あなたがローカルPCで作成したウェブサイトのファイルを、レンタルサーバーのFTPサーバーにアップロードして更新するケースです。

  1. コマンドプロンプトを起動し、FTPサーバーに接続:
    cmd
    C:\Users\YourName>ftp your_website.com

    ユーザー名とパスワードを入力してログインします。

  2. サーバーのウェブ公開ディレクトリに移動:
    あなたのウェブサイトファイルがアップロードされるべきディレクトリ(例: public_html, www, htdocs など)に移動します。これはサーバーによって異なるので、契約しているホスティングサービスの情報を確認してください。

    cmd
    ftp> cd public_html
    250 CWD command successful.

  3. アップロードしたいファイルがあるローカルディレクトリに移動:
    あなたのPC上で、アップロードしたいファイル(HTML, CSS, 画像など)が保存されているディレクトリに移動します。

    cmd
    ftp> lcd C:\Users\YourName\Projects\MyWebsite
    Local directory now C:\Users\YourName\Projects\MyWebsite.

  4. 転送モードを適切に設定:
    HTMLやCSSはテキストファイルなので ascii、画像ファイル(.jpg, .pngなど)はバイナリファイルなので binary に設定します。複数の種類のファイルをまとめてアップロードする場合は、ファイルの種類ごとにモードを切り替えながら実行する必要があります。

    cmd
    ftp> ascii
    200 Type set to A.

  5. ファイルをアップロード:
    単一ファイルの場合は put、複数ファイルの場合は mput を使います。mput でまとめてアップロードする場合、prompt をオフにすると便利です。

    cmd
    ftp> put index.html (ローカルのカレントディレクトリにある index.html をサーバーのカレントディレクトリにアップロード)
    ...
    ftp> put style.css
    ...
    ftp> binary (画像ファイルをアップロードするのでバイナリモードに)
    200 Type set to I.
    ftp> prompt
    Interactive mode Off.
    ftp> mput *.jpg (ローカルカレントディレクトリの全ての .jpg ファイルをアップロード)
    ... (転送メッセージ)
    ftp> prompt
    Interactive mode On.

  6. FTPセッションを終了:
    全てのアップロードが完了したらセッションを終了します。

    cmd
    ftp> bye

シナリオ2:匿名FTPサーバーからファイルをダウンロードする

公開されているソフトウェアやファイルを匿名FTPサーバーからダウンロードするケースです。

  1. コマンドプロンプトを起動し、匿名FTPサーバーに接続:
    cmd
    C:\Users\YourName>ftp ftp.example.com

    サーバーからユーザー名の入力を求められたら anonymous と入力します。パスワードはメールアドレスを入力します(表示されません)。

    cmd
    ユーザー (ftp.example.com: (なし)): anonymous
    331 Anonymous login ok, send identity (e.g. email address) as password.
    パスワード: [email protected]
    230 Anonymous access granted, restrictions apply
    ftp>

  2. ダウンロードしたいファイルがあるディレクトリに移動:
    サーバー上で目的のファイルが置かれているディレクトリに cd コマンドで移動します。dir または ls コマンドでファイル一覧を確認できます。

    cmd
    ftp> cd pub/software
    250 CWD command successful.
    ftp> dir
    ... (ファイル一覧が表示される)

  3. ローカルの保存先ディレクトリに移動:
    ダウンロードしたファイルを保存したいローカルのディレクトリに lcd コマンドで移動します。

    cmd
    ftp> lcd C:\Downloads
    Local directory now C:\Downloads.

  4. 転送モードを適切に設定:
    ダウンロードするファイルの種類に合わせて ascii または binary モードに設定します。ソフトウェアの実行ファイルや圧縮ファイルは通常 binary です。

    cmd
    ftp> binary
    200 Type set to I.

  5. ファイルをダウンロード:
    単一ファイルの場合は get、複数ファイルの場合は mget を使います。

    cmd
    ftp> get setup.exe
    ... (ダウンロード)
    ftp> get readme.txt (readme.txt はテキストファイルかもしれないのでモードを切り替える)
    ftp> ascii
    200 Type set to A.
    ftp> get readme.txt
    ... (ダウンロード)

  6. FTPセッションを終了:
    ダウンロードが完了したらセッションを終了します。

    cmd
    ftp> bye

シナリオ3:スクリプトを使った自動化

cmdのFTPコマンドは、一連の操作をテキストファイルに記述し、自動実行させることができます。これは、定期的なファイルバックアップや、複数のファイルをまとめてアップロード/ダウンロードする際に非常に便利です。

  1. FTPスクリプトファイルの作成:
    メモ帳などのテキストエディタを開き、FTPコマンドを1行に1つずつ記述します。

    例: upload_website.ftp という名前のファイルを作成します。

    open your_website.com
    your_username
    your_password
    cd public_html
    binary
    lcd C:\Users\YourName\Projects\MyWebsite
    mput *.jpg
    ascii
    mput *.html
    mput *.css
    bye

    注意: この例のようにスクリプトファイル内にパスワードを平文で記述するのは、セキュリティ上非常に危険です。可能な限りパスワードはスクリプトに含めない方法(例えば、対話的に入力させる)を検討するか、より安全な代替プロトコル(後述のSFTP/FTPS)の使用を強く推奨します。cmdのFTPコマンド自体に、パスワードを安全にスクリプトに含める組み込みの方法はありません。この例はあくまで自動化の仕組みを示すものであり、実際の運用ではリスクを十分に理解・評価した上で利用してください。

  2. スクリプトを実行:
    コマンドプロンプトから、-s: オプションを使ってスクリプトファイルを指定してFTPコマンドを実行します。

    cmd
    C:\Users\YourName>ftp -s:upload_website.ftp

    これにより、upload_website.ftp に記述されたコマンドが上から順に自動で実行されます。コマンドが完了するとFTPセッションは終了します。

スクリプトファイルを使えば、複雑な手順や大量のファイル操作を一度に実行でき、手動での入力ミスを防ぐこともできます。ただし、前述のようにパスワード管理には十分注意が必要です。

FTPのセキュリティ問題と代替手段

ここまでcmdのFTPコマンドの使い方を解説してきましたが、FTPはセキュリティ上の脆弱性を抱えているプロトコルであることを理解しておくことは非常に重要です。

FTPの主なセキュリティ問題

  • 情報の平文転送: FTPの制御接続(コマンド、ユーザー名、パスワード)およびデータ接続(ファイルデータそのもの)は、特別な設定をしない限り、暗号化されずにインターネット上を流れます。

    • これは、通信経路上の第三者(悪意のある攻撃者など)が、ネットワークトラフィックを盗聴することで、あなたのユーザー名、パスワード、転送しているファイルの内容などを容易に入手できてしまうことを意味します。
    • 特に公衆Wi-Fiなど、信頼できないネットワーク環境でFTPを使用することは極めて危険です。
  • 中間者攻撃 (Man-in-the-Middle Attack): 攻撃者がクライアントとサーバーの間に割り込み、通信を傍受したり改ざんしたりする攻撃に対して脆弱です。

これらの理由から、FTPは機密性の高い情報や個人情報を扱うのには適していません。ウェブサイトのファイル更新などでも、ログイン情報が盗聴されるリスクがあります。

安全な代替プロトコル

FTPのセキュリティ上の問題を解決するために、以下のようなより安全なファイル転送プロトコルが開発され、広く利用されています。

  • SFTP (SSH File Transfer Protocol):

    • SSH(Secure Shell)プロトコル上で動作するファイル転送プロトコルです。
    • SSHは通信全体を強力に暗号化するため、ログイン情報やファイルデータが盗聴されるリスクがありません。
    • 制御とデータの両方が一つの暗号化された接続上で行われます。
    • ポート番号はSSHと同じポート22を標準で使用します。
    • FTPとは全く異なるプロトコルです。
  • FTPS (FTP Secure):

    • FTPプロトコル自体を、SSL/TLSという暗号化技術で保護したものです。
    • 制御接続(AUTH TLS/SSLコマンドを使用)またはデータ接続、あるいはその両方を暗号化できます。
    • FTPの拡張機能として実装されているため、FTPのコマンド体系を引き継いでいますが、利用するにはサーバー側とクライアント側の双方がFTPSに対応している必要があります。
    • 標準ポートはFTPと同じくポート21を使用することが多いですが、暗号化された制御接続専用のポート(例: 990)を使用する場合もあります。

重要: Windowsの標準FTPコマンド(cmd)は、SFTPまたはFTPSには対応していません。 cmdのFTPコマンドで接続できるのは、無印の(暗号化されていない)FTPサーバーのみです。

したがって、セキュリティが重要な場面(個人情報を含むファイル、機密性の高い情報、パスワードが必要なサーバーなど)では、cmdのFTPコマンドを使用するのは避けるべきです。GUIクライアント(FileZilla, WinSCPなど)や、コマンドラインツール(pscpsftpなど、多くはSSHクライアントソフトウェアに含まれる)でSFTPやFTPSに対応したものを使用することを強く推奨します。

cmdのFTPコマンドは、あくまで追加のソフトウェア無しで手軽に使えるという利点がありますが、セキュリティリスクを理解した上で、利用する状況を慎重に判断する必要があります。例えば、インターネットに公開されていないローカルネットワーク内のサーバーとのファイル転送や、匿名FTPサーバーからの公開データのダウンロードなど、セキュリティリスクが低い(または許容できる)場面での利用にとどめるのが賢明です。

トラブルシューティング:困ったときは

cmdでFTPコマンドを使用中に発生しやすいトラブルと、その対処法をいくつか紹介します。

1. サーバーに接続できない

  • ホスト名またはIPアドレスが間違っている:

    • 入力したサーバー名やIPアドレスが正しいか再確認してください。全角文字になっていないかなども注意が必要です。
  • サーバーが起動していない/FTPサービスが停止している:

    • 接続先のFTPサーバーが正常に稼働しているか、サーバー管理者に確認してください。
  • ファイアウォールが通信をブロックしている:

    • あなたのPCのファイアウォール、またはネットワーク上のファイアウォール(ルーターなど)が、FTP通信(特にポート21)をブロックしている可能性があります。ファイアウォールの設定を確認・変更するか、ネットワーク管理者に相談してください。
    • サーバー側のファイアウォールがブロックしている可能性もあります。サーバー管理者に確認してください。
  • アクティブモードの問題:

    • あなたのPC側のファイアウォールが原因で、アクティブモードでのデータ接続が確立できない場合があります。ログインできた後に dirget, put などのコマンドがうまくいかない場合は、passive コマンドを実行してパッシブモードに切り替えてみてください。

    cmd
    ftp> passive
    Passive mode on.
    ftp> dir (再度試す)

  • サーバーのポート番号が標準(21)以外:

    • 稀に、FTPサーバーが標準のポート番号(21)以外のポートを使用している場合があります。cmdのFTPコマンドは、デフォルトではポート21に接続を試みます。特定のポートを指定して接続するには、open コマンドでポート番号を含めます。

    cmd
    ftp> open ftp.example.com 2121 (例: ポート2121に接続する場合)

  • インターネット接続の問題:

    • そもそもインターネットに接続できていない場合は、FTPサーバーにも接続できません。ウェブサイトが見られるかなどを確認してください。

2. ログインできない(ユーザー名/パスワードエラー)

  • ユーザー名またはパスワードが間違っている:

    • 入力したユーザー名とパスワードが、サーバー管理者から提供されたものと完全に一致しているか確認してください。大文字・小文字の違いも区別されます。
    • パスワードは入力時に画面に表示されないため、正確に入力できているか注意が必要です。一度間違えたら、落ち着いて最初から入力し直してください。
  • 匿名FTPサーバーではない:

    • anonymous で接続しようとしていてログインできない場合、そのサーバーが匿名FTP接続を許可していない可能性があります。認証が必要なFTPサーバーの場合は、正しいユーザー名とパスワードが必要です。
  • アクセス権限がない:

    • 入力したユーザー名に、そのFTPサーバーへの接続権限がない可能性があります。サーバー管理者にユーザーアカウントの状態を確認してもらってください。

3. ファイルが転送できない

  • 転送モードが間違っている:

    • 最もよくある原因の一つです。バイナリファイル(画像、圧縮ファイルなど)を ascii モードで転送しようとしていないか、テキストファイルを binary モードで転送していないか確認してください。
    • 転送前に status コマンドで現在のモードを確認し、必要に応じて ascii または binary コマンドで切り替えてから転送を再試行してください。
  • サーバー側のディスク容量不足:

    • アップロードしようとしているファイルに対して、サーバー側のディスク容量が不足している可能性があります。サーバー管理者に確認するか、不要なファイルを削除して容量を確保してください。
  • ファイル名に使用できない文字が含まれている:

    • サーバー側のファイルシステムでサポートされていない文字(例: 一部の記号や全角スペースなど)がファイル名に含まれている場合、転送に失敗することがあります。単純な英数字と一部の記号(ハイフン、アンダースコアなど)のみを使用することをおすすめします。
  • ディレクトリの書き込み権限がない (put, mput):

    • ファイルをアップロードしようとしているサーバー上のディレクトリに、あなたのユーザーアカウントが書き込み権限を持っていない可能性があります。サーバー管理者に権限の設定を確認・変更してもらってください。
  • ファイルの読み取り権限がない (get, mget):

    • ファイルをダウンロードしようとしているサーバー上のファイルに、あなたのユーザーアカウントが読み取り権限を持っていない可能性があります。サーバー管理者に権限の設定を確認・変更してもらってください。
  • ファイル名のパスが正しくない:

    • getput コマンドで指定したリモート/ローカルのファイル名やパスが間違っている可能性があります。pwdcd, lcd, dir コマンドを使って、現在のディレクトリやファイル名を確認してください。
  • ファイルサイズ制限:

    • FTPサーバー側で、一度に転送できるファイルサイズに制限が設けられている場合があります。サーバー管理者に確認してください。

4. 複数ファイル転送 (mget, mput, mdelete) で確認プロンプトが表示される

  • これはデフォルトの動作です。確認プロンプトを表示させたくない場合は、事前に prompt コマンドを実行してプロンプト表示をオフにしてください。

    cmd
    ftp> prompt
    Interactive mode Off.
    ftp> mget *.html
    ... (確認なしで転送が始まる)

    自動化スクリプトなどでは、この prompt コマンドは必須となることが多いです。操作完了後は prompt コマンドを再度実行してプロンプト表示をオンに戻しておくと、手動操作時に誤って意図しないファイルを転送/削除してしまうリスクを減らせます。

これらのトラブルシューティングのヒントを参考に、問題の原因を探ってみてください。それでも解決しない場合は、エラーメッセージを正確に記録し、サーバー管理者や詳しい人に相談すると良いでしょう。

まとめ:cmdのFTPコマンドを使いこなすために

Windowsのコマンドプロンプトで利用できるFTPコマンドは、GUIクライアントに比べて操作に慣れが必要ですが、Windowsに標準搭載されており、追加のソフトウェア無しで手軽に使えるという大きな利点があります。また、スクリプトを作成することで、FTP操作の自動化も可能です。

この記事では、FTPの基本的な仕組みから、cmdのFTPコマンドを使った接続、切断、ディレクトリ移動、ファイル一覧表示、ファイルのアップロード・ダウンロード(単数・複数)、ファイル・ディレクトリの操作、各種設定コマンド、実践的なシナリオ、そしてセキュリティに関する注意点とトラブルシューティングまで、詳細に解説しました。

重要なポイントの再確認:

  • FTPは制御接続(ポート21)とデータ接続(ポート不定)を使う。
  • データ接続にはアクティブモードとパッシブモードがある。ファイアウォールなどでうまくいかない場合は passive コマンドを試す。
  • テキストファイルは ascii モード、それ以外は全て binary モードで転送する。転送前に status で確認する習慣をつける。
  • get でダウンロード、put でアップロード。複数ファイルは mgetmput
  • cd でサーバー、lcd でローカルのカレントディレクトリを移動。
  • dir または ls でサーバーのファイル一覧表示。
  • delete, mkdir, rmdir, rename でサーバー上のファイルを操作。
  • prompt で複数ファイル操作時の確認プロンプトのON/OFFを切り替える。
  • ! でローカルコマンドを実行できる。
  • FTPはデータが暗号化されないため、セキュリティリスクがある。機密性の高い情報にはSFTPやFTPSを利用するべき。
  • スクリプトファイルで自動化は便利だが、パスワード管理には十分注意が必要。

cmdのFTPコマンドは、複雑な設定なしにすぐに使えるという点で、FTPの学習の第一歩としても適しています。しかし、セキュリティ上の懸念から、現在の主流はより安全なSFTPやFTPSに移りつつあります。cmdのFTPコマンドを使う際は、その制約とリスクを十分に理解し、安全な代替手段も検討するようにしましょう。

このガイドが、あなたがFTPコマンドを理解し、活用するための一助となれば幸いです。基本的なコマンドから練習を始め、徐々に複雑な操作や自動化に挑戦してみてください。コマンドラインでの操作に慣れることは、コンピュータをより深く理解し、効率的に作業を進めるための大切なスキルになります。


コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール