ガイド

Windows のコマンドラインから FTP を使う方法

Windows に内蔵されたコマンドライン FTP クライアントの実践的な手引き。接続、get と put によるファイル転送、-s: でのスクリプト化、そして ftp.exe が限界に達したときに手を伸ばすべきもの。

· 6 分で読めます · Vlad Fedoniuk

どの Windows パソコンにも、コマンドライン用の FTP クライアントが入っています。1990 年代からずっとそこにあります。コマンドプロンプトか PowerShell を開き、 ftp と打てば、それで中に入れます。インストールも、管理者権限も、ダウンロードも要りません。だからこそ、自分の管理下にないパソコンで FTP サーバーからファイルを一つ取りたいときや、ビルドサーバーで手早い転送をスクリプトにしたいときには、いまもこれがいちばん速い道なのです。

この記事では、 ftp.exe のセッションをひととおり —— 接続、転送、スクリプト化 —— 追いかけ、そのうえでこの道具が適切な選択でなくなる地点についても率直にお伝えします。コマンドの一覧だけが必要であれば、 FTP コマンドリファレンス が、クライアントとプロトコルのすべてのコマンドを書式と例つきで扱っています。

FTP は暗号化されていないふたつの接続、ポート 21 の制御チャネルとポート範囲のデータチャネルを使います。FTPS は両方に TLS をかぶせますが依然としてふたつ必要です。SFTP はすべてをポート 22 のひとつの暗号化された接続で運びます
Windows の ftp.exe が話すのは一番上の行だけです。FTPS も SFTP も知りません。

手順 1:サーバーにつなぐ

ホスト名をそのまま渡してセッションを始めるか、先にクライアントを起動して open を使います。

C:\> ftp ftp.example.com ftp> open ftp.example.com

サーバーはバナーを返し、認証情報を尋ねます。ユーザー名を打って Enter、続けてパスワード(画面には出ません)。許可しているサーバーであれば、ユーザー名に anonymous、パスワードに任意のメールアドレスを入れると、公開ファイルの読み取りができます。

手順 2:中を見て回る

移動は四つのコマンドで足ります。 dir は現在のリモートのディレクトリを一覧し、 cd はそれを変え、 pwd はいまいる場所を示し、そして誰もが忘れる lcd が、ダウンロードの落ち先であり、アップロードの出どころでもある ローカルの フォルダーを変えます。

ftp> dir ftp> cd /public_html ftp> lcd C:\Users\vlad\Downloads Local directory now C:\Users\vlad\Downloads.

手順 3:バイナリモードに切り替える

素のテキスト以外を転送する前に、 binary と打ってください。既定の ASCII モードでは、ftp.exe が転送中に改行を書き換えます。.txt なら無害ですが、ZIP、画像、実行ファイル、そのほかバイナリのものには破壊的です。このひとことが、「落としたのに開けない」という古典的な問題を防ぎます。

ftp> binary 200 Type set to I.

手順 4:ダウンロードとアップロード

get がファイルを落とし、 put が上げます。複数ファイル版の mgetmput はワイルドカードを受け付け、 prompt はファイルごとの「y/n」の確認を切るので、ワイルドカードを無人で流せます。 hash はブロックごとに # を出すので、長い転送でも進み具合が見えます。

ftp> hash ftp> get backup.zip ftp> put report.pdf ftp> prompt Interactive mode Off. ftp> mget *.log

手順 5:セッションを終える

bye(または quit)で接続を閉じ、プログラムを終了します。ひととおりのセッションはこうなります。

C:\> ftp ftp.example.com User: alice Password: ******** ftp> binary ftp> cd /backups ftp> lcd C:\Backups ftp> get site-backup.zip 226 Transfer complete. ftp> bye

-s: で転送をスクリプトにする

ftp.exe は、対話的なセッションの代わりにスクリプトを実行できます。コマンドをテキストファイルに書き(最初の 2 行はユーザー名とパスワード)、 -s: で渡します。 -n を付けると自動のログイン要求を抑えられます。 user を使ってログインまで自分で書く場合に使います。

# upload.txt alice secretpassword binary cd /public_html lcd C:\Site\dist prompt mput *.html bye C:\> ftp -s:upload.txt ftp.example.com

これはタスクスケジューラーと組み合わせれば定期実行になります。ただ、いま何をしたのかはよく見てください。パスワードを平文のファイルに置き、しかもそれを暗号化なしでネットワークへ流すプロトコルのために、です。使い捨てのアカウントで LAN の中なら差し支えありませんが、大事なものには向きません。

ftp.exe が適切な道具でなくなるところ

内蔵のクライアントは本当に役に立ちますが、同時に 30 年前の設計でもあり、抗う前に知っておくべき固い限界があります。

  • パッシブモードがない。 ftp.exe が対応するのはアクティブモードの転送だけで、サーバーのほうからあなたのパソコンへ接続し返します。いまのルーターやファイアウォールはこれを遮るので、ログインはすんなり通るのに dirget でいつまでも止まる、ということが起きます。回避する切り替えはありません。パッシブモードは実装されていないのです。
  • 暗号化がまったくない。 SFTP にも FTPS にも対応していません。認証情報もファイルの中身も、平文で流れます。
  • 再開も再帰もない。 2 GB のダウンロードが途切れれば、またゼロからです。フォルダーの木をひとつのコマンドで転送する方法もありません。

SFTP であれば、Windows 10 と 11 には OpenSSH の sftp コマンドが入っており、スクリプトを書くならこちらが現代的な選択です。コマンド体系は似ていますが同一ではなく、 SFTP コマンドリファレンス がそのすべてを記しています。

画面のほうが単純に速い場面

コマンドラインの FTP は、手早い一度きりの用と、素朴なスクリプトでは値打ちがあります。ただ、両側のディレクトリをやりくりし始めた瞬間、失敗した転送をやり直し始めた瞬間、フォルダーの木ごと動かし始めた瞬間から、グラフィカルなクライアントのほうが時間で勝ちます。FTPie は、きちんと働くパッシブモードを備えた Windows 向けの無料 FTP クライアント であり、さらに SFTP、FTPS、WebDAV、10 を超えるクラウドサービスをひとつの窓に収めます。ドラッグ&ドロップが mput の代わりになり、転送は自分で再開し、無料プランでサーバー接続を 3 つまで扱えます。

そして、スクリプトの部分が気に入ったのなら。FTPie Pro には、SFTP、FTPS、クラウドに対応した 本物のコマンドライン と視覚的なコマンドビルダーが入っていますし、 予約転送 はスクリプトとタスクスケジューラーの往復をまるごと置き換えます。テキストファイルにパスワードを置かずに。

FTPie の CLI コマンドビルダーで転送コマンドを組み立てているところ。動詞の一覧、引数の入力欄、できあがるコマンドの表示

コマンドの全体像には FTP コマンドリファレンス をブックマークしておいてください。クライアントのコマンドと、それが対応する生のプロトコルコマンドの両方が載っています。

さあ、はじめましょう 30日間の無料トライアル

FTPie をダウンロードして、30日間の無料トライアルを始めましょう。FTP とクラウドをひとつにまとめた操作性を試し、期間終了後も無料版をそのままお使いいただけます。

無料トライアルをダウンロード
CASA 認証済み・VirusTotal スキャン済み
30日間トライアル · 無料版つき
Windows 10 & 11
Vlad Fedoniuk

Vlad Fedoniuk

FTPie の創業者であり開発者です。日々のデジタルな暮らしをかんたんに、そして豊かにするソフトウェアづくりに取り組んでいます。個人サイトはこちら fedoni.uk 、または次の場所でつながれます X (formerly Twitter) , LinkedIn 、またはメールでご連絡ください vlad@ftpie.com