
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
「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」する必要があります。
ディレクトリ内のファイルが多いと正直大変になりますね。
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モードでなくても接続できるサーバーもあります。
これらのサーバーの場合は、コマンドプロンプトでもほとんどの操作が可能です。