コマンドプロンプトからFtpを使う方法

コマンドプロンプトからFtpを使うには、ftpコマンドを使用します。

ftpと入力してEnterを押すと、FTPモードになります。

dos>ftp
ftp>

後ろに/?を付けるとオプションを確認することができます。

dos>ftp /?

なお、上記が正しいコマンドヘルプの表示方法だが、以下でもヘルプが表示されます。
dos>ftp -?
dos>ftp -help
dos>ftp /help

FTP サーバー サービス (デーモンとも呼ぶ) を実行するコンピューターとの間で、
ファイルの送受信を行います。FTP は対話的に使用できます。

FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-A] [-x:sendbuffer]
[-r:recvbuffer] [-b:asyncbuffers] [-w:windowsize] [host]

-v リモート サーバーの応答を表示しません。
-n 最初の接続時に自動ログインを行いません。
-i 複数ファイルの転送中に、対話的なメッセージ表示を
無効にします。
-d デバッグを有効にします。
-g ファイル名のグロビングを無効にします (GLOB コマンドを参照)。
-s:filename FTP コマンドを記述したテキスト ファイルを指定します。
これらのコマンドは、FTP の開始後に自動実行されます。
-a データ接続のバインド時に、いずれかのローカル インターフェイ
スを使用します。
-A 匿名でログインします。
-x:send sockbuf SO_SNDBUF の既定のサイズである 8192 を上書きします。
-r:recv sockbuf SO_RCVBUF の既定のサイズである 8192 を上書きします。
-b:async count 既定の非同期数である 3 を上書きします。
-w:windowsize 既定の転送バッファー サイズである 65535 を上書きします。
host 接続先のリモート ホストのホスト名または IP アドレス
を指定します。

メモ:
– mget および mput コマンドには、それぞれ yes/no/quit の意味を表す y/n/q を
指定します。
– コマンドを中止するには Ctrl+C キーを押します。

コマンド一覧の確認

[help/?]で引数を省略するとコマンド一覧を表示

ftp>help(または?)

コマンドの使い方の確認

[help/?](SP)[コマンド]でコマンドのヘルプを表示

ftp>help(または?) cd

なお、以下のような形式では表示されません。
[コマンド] /help
[コマンド] /?
[コマンド] -?

コマンドファイルの呼び出し

一連の操作を別ファイルに記述しておいて呼び出すことができます。

dos>ftp -s:<ファイル名>

FTPの終了

quit または bye(exit ではありません。)

アスキーモードとバイナリーモード

環境に合わせた改行コードに自動変換するのがアスキーモード、
ファイルに一切手を加えずに送受信するのがバイナリーモードと呼ばれます。

  • Windows OD OA CR+LF
  • Unix系(Linux)OA LF
  • MacOD CR

 

OS コード
Windows OD OA CR+LF
Unix系(Linux) OA LF
Mac OD CR

一般にテキストファイルはアスキーモード、それ以外はバイナリモードで送受信しますが、テキストファイルでも改行コードを変更したくない場合にはバイナリーモードを使う必要があります。

モードの切替は、asc(ascii)、bin(binary)を使います。

ftp>asc(ascii)

ftp>bin(binary)

モードを確認するには、typeコマンドを使用します。

ftp>type

アクティブモードとパッシブモード

通常は、サーバー側からクライアントのランダムなポートに接続を試みます。これをアクティブモードと呼びます。

アクティブモードでは外部から接続されるため、環境によってはファイアーウォールでブロックされることがあります。

この場合、サーバーに接続ポートを問い合わせて、クライアント側からサーバー側へ接続するモードがあります。これをパッシブモードと呼びます。

アクティブモードではファイアーウォールに引っかかる場合でも、パッシブモードにすればOKの場合が多いです。

モードの切替は、サーバー側のpasvコマンドを実行する必要があります。

サーバー側のコマンドを実行するには、quoteコマンドとともに使います。

以下のようにすることで、サーバー側のpasvコマンドを実行することができます。

ftp>quote pasv

なお、アクティブ、パッシブは、FTPサーバーを主にした言い方です。
サーバーからランダムなポートに繋ぎに来るのがアクティブ(能動)で、
クライアントが教えたポートに繋ぎに来るのがパッシブ(受動)というわけです。

 

サーバー側のカレントディレクトリについて

pwdはサーバー側のカレントディレクトリを確認するコマンドですが、絶対Pathではなく、接続ユーザー毎に設定された初期接続ディレクトリをルートとした相対Pathとなることに注意が必要です。

画面の消去方法

 ftpコマンド自体には画面消去がないが、!を使ってDOSコマンドを呼べば可能です。
ftp>!cls

!を終了と勘違いしている人が多いですが厳密には違います。一時的にDosコマンドプロンプトを呼び出すときに使用するものです。

 

Alias(別名)

FTPコマンドの中には、別のコマンドと全く同じ機能のものがあります。

  • recv = get
  • send = put
  • close = disconnect

 

リモート

サーバー側のFTPコマンドを呼び出すことができます。

サーバー側のFTPコマンド一覧、およびコマンドのヘルプを見るには以下のようにします。

ftp>remotehelp
ftp>remotehelp [コマンド]

サーバー側のFTPコマンドを実行するには、quoteを使います。

ftp>quote [サーバー側のFTPコマンド]

なお、パッシブモードに切り替える場合は、サーバー側のFTPコマンドのPASVを使います。

ftp>quote pasv

FTPクライアントソフトでフォルダが削除できない場合の対処方法

FTPクライアントソフトでフォルダを削除しようとしても削除出来ないときがあります。

原因は・・・

  • 権限がない
  • フォルダが空でない

等があります。まずはFTPソフトに表示されるログを注意深く見てみましょう。

フォルダが空のはずなのにフォルダが空でないという表示がされる場合は、「ファイル名漢字コード」を確認してみましょう。

漢字コードを変更することで表示できなかったファイルが表示されるケースがあります。

 

FTPコマンド一覧

>ftp
help または ? でコマンド一覧
!               delete          literal         prompt          send
?               debug           ls              put             status
append          dir             mdelete         pwd             trace
ascii           disconnect      mdir            quit            type
bell            get             mget            quote           user
binary          glob            mkdir           recv            verbose
bye             hash            mls             remotehelp
cd              help            mput            rename
close           lcd             open            rmdir

終了

quit または bye

なお、!は厳密には終了ではなくエスケープです。一時的にコマンドプロンプトを使用したいときに使います。この場合、コマンドプロンプトを実行し終わるとFTPに戻ってきます。

 

 

関連リンク

http://www.cc.sojo-u.ac.jp/~tagami/guide/ftp_win.html

FTPコマンド一覧

CopyHere

http://support.microsoft.com/default.aspx?scid=kb;ja;832679
http://shinshu.fm/MHz/88.44/archives/0000067187.html
http://www.atmarkit.co.jp/fnetwork/rensai/netpro11/ftp-command.html
http://dobon.net/vb/dotnet/internet/ftpwebclient.html
http://dobon.net/vb/dotnet/internet/ftpwebrequest.html
http://www.hhsb.jp/development/1-vbnet/21-vbnet-ftp-upload.html
http://chaichan.web.infoseek.co.jp/vbtips/VBMemo2007-03-22.htm

 

VB.netでのFTP

単純なファイルのダウンロード、アップロードなら、WebRequestクラスを使う。
WebRequestクラスからFtpWebRequestクラスを呼び出している。
上記のようにWebClientクラスを使ってFTPサーバーにアクセスする時、WebClientクラスは内部でFtpWebRequestとFtpWebResponseクラスを使用しています。
複雑な処理はFtpWebRequestクラスを使用する。

◆サンプル1

FTPでのファイルアップロード処理は、FtpWebRequestを利用します。

※下記のサンプルはこれらをImportしている前提で作成してあります

Imports System.Net
Imports System.IO

——————————————————————————–

Dim ftpUri As Uri = New Uri(“ftp://xxx.jp/xxx.zip“)
Dim localFileName As String = “xxx.zip”

‘ FTPへの接続準備(URIの設定)
Dim ftpRequest As FtpWebRequest = FtpWebRequest.Create(ftpUri)
‘ FTPへの接続準備(ユーザー/パスワードの設定)
ftpRequest.Credentials = New System.Net.NetworkCredential(“user”, “password”)
‘ FTPへの接続準備(UploadFileはファイルのアップロード処理)
ftpRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile

‘ KeepAliveを利用する場合はTrueを設定
ftpRequest.KeepAlive = False
‘ Binaryファイルをダウロードする場合はTrueを設定
ftpRequest.UseBinary = True
‘ Passiveモードを利用する場合はTrueを設定
ftpRequest.UsePassive = False

‘ ファイルをアップロードするためのStreamを取得
Dim ftpStream As Stream = ftpRequest.GetRequestStream()
‘ この例ではファイルをアップロードするのでFileStreamを用意する
Dim inFileStream As FileStream = New FileStream(localFileName, FileMode.Open, FileAccess.Read)

‘ 受信に利用するバッファ
Dim dataBuffer(8191) As Byte

‘ 送信処理
Dim readDataSize As Integer = inFileStream.Read(dataBuffer, 0, dataBuffer.Length)
Do While readDataSize > 0
‘ ローカルファイルへの書き込み
ftpStream.Write(dataBuffer, 0, readDataSize)
‘ データを指定されたバッファ分受信する
readDataSize = inFileStream.Read(dataBuffer, 0, dataBuffer.Length)
Loop

‘ 後処理
inFileStream.Close()
inFileStream = Nothing
ftpStream.Close()
ftpStream = Nothing

‘ FTPサーバーからのステータスを取得する
Dim ftpRes As FtpWebResponse = ftpRequest.GetResponse()
‘ FTPサーバーから送信されたステータスを表示
Console.WriteLine(“{0}: {1}”, ftpRes.StatusCode, ftpRes.StatusDescription)
‘ 後処理
ftpRes.Close()

 

コメントを残す

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