WindowsコマンドプロンプトによるFTPサーバーへのファイル転送操作

WindowsコマンドプロンプトによるFTPサーバーへのファイル転送操作

WindowsコマンドプロンプトによるFTPサーバーへのファイル転送操作

Windows11のコマンドプロンプト(標準ftp.exe)によるftpサーバー内のファイル操作の方法をご紹介します。

ファイル操作をする際は、ftpサーバー先のディレクトリとローカル先のディレクトリを指定しましょう。

コマンドプロンプトではPASVモードによる接続ができないため、ファイル操作ができないレンタルサーバーがあります。

Windowsコマンドプロンプトでftp通信をする

WEBサイトデータをダウンロード・アップロードする際「FFFTP」等のクライアントソフトを使う場合も多いと思います。

これらはサーバー側のFTP(File Transfer Protocol)通信により実現しています。

FTPによりWEBサーバーとPC間でのデータ転送ができる訳ですね。

コマンドラインに慣れて欲しい

確かにソフトを使えば、初心者でもファイルのアップロードやダウンロード、ディレクトリ一覧表示・削除等の操作を簡単におこなう事ができます。

しかし本記事では、あえてコマンドラインを使ってFTPによるファイル転送をする方法について紹介します。

コマンドプロンプト画面

コマンド入力は日頃使わないという人もいるかも知れませんが、慣れておくといろいろ便利です。

※Windows11のコマンドプロンプト(標準のftp.exe)で実施しています。

接続情報を調べておく

コマンドライン操作をする前に、サーバーに接続する情報を用意しておきましょう。

・FTPサーバー
・ユーザー名
・パスワード

以上3つの情報が必要になります。

FFFTP系のソフト使っているなら、設定画面からサーバー名とユーザー名はすぐにわかりますよね。

あとはサーバー設定情報などに記載されたパスワードを探しておきましょう。

ftpサーバーへ接続

Windows+Rキーを押し、「ファイル名を指定して実行」ウィンドウ欄に「cmd」と入れてEnterします。

ファイル名を指定して実行

コマンドプロンプト(cmd.exe)の画面が表示されます。

コマンドプロンプト画面

この黒い画面上で様々な命令を掛けていく訳ですね。

最初に「C:\Users\info>」等と表示されますが、PC内の最初の位置を示しています。

FTPサーバーへアクセス

まずはFTPサーバーへアクセスします。以下の様に入力しましょう。

C:\Users\info>ftp ftp.lpeg.blush.jp 上記サーバー名は仮想名です。

「ftpスペースFTPサーバー名」と入れます。

ftpは、ftpコマンドを実行する命令です。サーバー名はコピペでOKです。

※FTPサーバーだからと言ってサーバー名の頭が「ftp」から始まるとは限りません。普通にホスト名の時もあります。

ftpコマンドのみを使う場合

先程はftpに続けてサーバー名を入れましたが、単にftpのみ打つと「対話形式」でFTPサーバーにログインできます。

その場合は次に「open」コマンドを入れて、サーバー名を入れるようにしましょう。

C:\Users\info>ftp ftp> open ftp.lpeg.blush.jp

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

サーバー名でftp接続すると以下のようになります。

サーバー名で接続した状態

次にユーザー名(xxxxxxxx)を入力します。

ユーザー (ftp.xxxxxxxx.jp:(none)): xxxxxxxx

ユーザー名を入れてEnterすると、パスワードを聞かれます。

331 Password required for xxxxxxxx パスワード:

パスワード入力時の注意

この時パスワードを入力し始めてもカーソルは動きませんし、パスワード欄に出る「アスタリスクマーク」も出ません。

パスワード入力時はカーソルが動かないので、間違いのない様にキーボードを見て打つようにしましょう。

入力が終わったらEnterを押します。

230 User xxxxxxxx logged in. ftp>

上記の様な画面がでたら接続ができた事になります。

ここからは先頭に必ずftp>が入った状態になります。これがftp操作をしている証になります。

ファイル移動・ディレクトリ一覧表示

FFFTPの画面と違って、コマンドプロンプトで接続してもサーバー内は見えません。

まずftpで接続した際は、サーバーのTOPディレクトリにアクセスしている事になります。

ですのでまずは場所の移動が必要です。

自分のWEBサイトデータが格納されているディレクトリ位置まで進む必要があります。

自分のサイト区画まで移動

例えば「lpeg.info」のWEBサイトデータが、サーバー内の以下の位置にあったとしましょう。

/lpeg.info/public_html/

複数サイトをぶら下げて運営している場合などにありがちですね。

上記の様に専用区画が設けられ、中の「public_html」にサイトデータが入る場合が多いです。

サイト内データを操作するため、まずはこの中まで移動する必要があります。

ディレクトリ移動「cd」

以下の様にコマンドを打ちましょう。

ftp> cd /lpeg.info/public_html/

cd の後ろにTOPディレクトリからのパスをそのまま入れます。

これで対象のディレクトリ内まで移動した事になります。

パスの書き方

先程は一気に対象位置まで進みましたが、以下の様に1つずつ動く事も可能です。

まずlpeg.infoの中に入る ftp> cd lpeg.info さらにlpeg.info/public_htmlの中に入る ftp> cd public_html

逆に戻る場合は「../」と相対パスで入れる事で、1つ上・2つ上に上る事ができます。

ftp> cd ../ ftp> cd ../../

cd /lpeg.info/public_html/で移動した後に「cd ../../」と入れる事で、元のTOP位置にまで戻った事になりますね。

ファイルをダウンロードする場合は、ファイルがあるディレクトリ位置まできちんと移動しておく必要があります。

ファイル一覧表示

次にそのディレクトリ内に入っているファイル一覧を確認してみましょう。

以下の様にファイル一覧を表示するコマンドを入力します。

「dir」コマンドを入れると、対象サーバーにあるディレクトリ内の一覧を表示する事ができます。

ファイル一覧が表示された様子

各リストの頭にある「-rw-r--r--」等の表示は、パーミッションです。

ダウンロードする前には、この様に中身を一度確認しておきましょう。

※「dir」以外に「ls」コマンドでも同じようにファイル一覧を見る事ができます。

AsciiモードとBinaryモード

ファイルを操作する前に重要な事があります。

本来htmlファイルやcssなどのテキストファイルは、asciiモードでやり取りをします。

それに対しテキストファイルではない画像ファイル・動画ファイルなどは、binaryモードでの転送が必要です。

初期モードはAsciiモード

コマンドプロンプトのFTPクライアントは、デフォルトで「asciiモード」になっています。

ですので画像ファイルをやり取りする際は、binaryモードへ変更しなければなりません。

asciiモードで画像をダウンロードした場合、ダウンロードしてもファイルを開く事ができなくなります。

転送モード切替

元々asciiモードですから、binaryモードにする場合は以下のようにします。

ftp> binary

binaryモードで切り替えた様子

「200 Type set to I」と表示されたらbinaryモードの証です。

asciiに戻す場合は「ftp> ascii」とします。

「200 Type set to A」と表示されたらasciiモードの証です。

ファイルのダウンロード

ファイルやフォルダをダウンロードする場合、事前にローカル上の保存位置を指定する必要があります。

どのディレクトリにダウンロードするのかは、「lcd」コマンドにより指定します。

例えばPC上の"D:\webdata"にファイルをダウンロードするのであれば、以下の様に指定しましょう。

ftp> lcd D:\webdata

Enterを押すと「ローカル ディレクトリは現在 D:\webdata です。」と表示されるはずです。

※上記の様に指定位置に新しくフォルダを作り、そこを指定するのが良いでしょう。

単一ファイルのダウンロード

ファイルを1つずつダウンロードする場合は、「get」コマンドを使います。

現在cdで移動している位置から、ファイルを一つ指定する事になります。

ftp> get ファイル名

Enterを押すと、先程lcdで指定した位置にファイルがダウンロードされます。

ファイルをダウンロードした時の状態
Wordpressのwp-config-sample.phpをダウンロードした状態

複数ファイルのダウンロード

複数のファイルをダウンロードする場合は、「mget」コマンドを使います。

「mget *」と入力する事で、今来ているディレクトリ内の全てのファイルを一度にダウンロードする事ができます。

ftp> mget *

複数ダウンロード時の注意

mget *によるダウンロードの場合、1ファイルごとに事前確認が入るため毎回「Enter」する必要があります。

ファイルを1件ずつダウンロードしてい状態

ディレクトリ内のファイルが多いと正直大変になりますね。

Enterの代わりにYesやNoと入力する事で、ダウンロードする・しないを分ける事ができます。

さらにそのディレクトリ内にサブのディレクトリがあった場合、それはダウンロードの対象になりません。

ディレクトリ内を指定して、再度ダウンロードする必要があります。

存在するディレクトリに関してはそのままEnterを押しましょう。「Not a regular file」と出る事が多いです。

ファイルのアップロード

次にローカル上ファイルをサーバー側にアップロードしてみます。

ファイルを1つずつアップロードするには、「put」コマンドを使います。

ftp> put ファイル名

先程lcdで指定した「d:\webdata」の内から、FTPサーバー側の今いる位置にファイルがアップロードされます。

ファイルをアップロードした状態
wp-config-sample.phpをアップロードした状態、上書きするかは聞かれません。

複数ファイルのアップロード

複数のファイルをアップロードする場合は、「mput」コマンドを使います。

「mput *」と入力する事で、ローカル上で指定していた「d:\webdata」内にある全てのファイルを一度にアップロードする事ができます。

ftp> mput *

ダウンロード時の注意

mput *によるダウンロードの場合、1ファイルごとに事前確認が入るため毎回「Enter」する必要があります。

ディレクトリ内のファイルが多いと正直大変になりますね。

さらにそのディレクトリ内にサブのディレクトリがあった場合、それはアップロードの対象になりません。

ディレクトリ内を指定して、再度アップロードする必要があります。

対話モードのOn・Offを切り替える

「prompt」コマンドを使用すると、対話モードのOn・Offの切り替えを行うことができます。

このコマンドは先程説明した、複数のファイルをアップロード・ダウンロードする場合に便利です。

例えば複数ファイルのアップロード時は「aaa.gifをアップロードしますか?」「bbb.gifをアップロードしますか?」と何度も確認が来る訳です。

その度に「Enter」を押すのってめちゃくちゃ面倒ですよね。

そんな時に「prompt」コマンドを使って、対話モードをOffにしておきましょう。

ftp> prompt 上記を実行するごとに「対話モードオフ」と「対話モードオン」が切り替わります。

対話モードをオフにした状態

オフにしておけば毎回確認がされないので、Enterキーを押す必要が無くなります。

接続を解除する

ftpサーバーとの接続を切断する場合は、以下の様に入力しましょう。

ftp> bye

これで「Goodbye.」と表示がされて接続が切れます。

ユーザー名やパスワードを間違えたり別のサーバーに接続する際は、byeと打って解除するようにしましょう。

※他にも「quit」や「disconnect」も同じ様に解除する命令があります。

FTPコマンド一覧

主に使うftpコマンドを一覧にしてみました。

コマンド 説明
ftp ftp接続の開始
cd ftpサーバー側の現在のディレクトリの移動
dir(ls) ftpサーバー側のディレクトリにあるファイルの一覧表示
lcd クライアント側の現在のディレクトリの移動
get ftpサーバーからクライアントへ、1つのファイルをダウンロード
mget ftpサーバーからクライアントへ、複数ファイルをダウンロード
put クライアントからftpサーバーへ、1つのファイルをアップロード
mput クライアントからftpサーバーへ、複数のファイルをアップロード
binary 転送モードをbinaryモードに変更
ascii 転送モードをasciiモードに変更
delete ftpサーバー側の1つのファイルの削除
mdelete ftpサーバー側の複数のファイルの削除
rmdir ftpサーバー側のディレクトリの削除
mkdir ftpサーバー側にディレクトリを作成
rename ftpサーバー側にあるファイルの名前変更
bye(quit) ftpサーバー切断

PASVモードによるftp接続はできない

ftp通信にはアクティブモードとパッシブモードの2種類があります。

・アクティブモード…サーバー側からクライアントに通信を繋げる
・パッシブモード…クライアント側からサーバー通信を繋げる

アクティブモードでは通常、20番ポートを使用します。

それに対しPASVモードの場合、クライアント側のデータ転送用ポートは毎回ランダムで決まります。

ロリポップサーバーのftp通信はPASVモード

実はレンタルサーバーの中には、PASVモードでないとftp接続ができないサーバーがあります。

例えばロリポップレンタルサーバーなどがそれにあたります。

この様なサーバーにコマンドプロンプトでftp接続をした場合、うまく操作ができません。

timeout状態になる

ログインはできますが、ファイル一覧表示やダウンロード・アップロードの命令を入れると以下の様になります。

200 PORT command successful

と出たまま、しばらく何も動かない状態になります。

その理由は、今回紹介しているコマンドプロンプト(Windows標準のftp.exe)では、PASVモードの接続ができないためです。

コマンドプロンプト以外のソフトを使う

ロリポップサーバーに対してのftp接続は、コマンドプロンプトでは難しい事になりますね。

FFFTPやWinSCPなどのソフトを使用して、PASVモードで接続する必要があります。

それに対してエックスサーバーなど、Windows標準のftp.exeからPASVモードでなくても接続できるサーバーもあります。

これらのサーバーの場合は、コマンドプロンプトでもほとんどの操作が可能です。

この記事をシェアする

一押し人気コーナー紹介

PC操作・ソフト操作記事