110.12. ディレクトリーを段階的に変更する

Camel FTP は、ファイルの消費時 (ダウンロードなど) またはファイルの生成時 (アップロードなど) にディレクトリーをトラバースするという点で、2 つのモードで動作できます。

  • stepwise
  • 段階的ではない

状況とセキュリティーの問題に応じて、どちらかを選択することをお勧めします。ステップワイズを使用する場合にのみファイルをダウンロードできる Camel エンドユーザーもいれば、そうでない場合にのみダウンロードできる Camel エンドユーザーもいます。少なくとも、選択する選択肢があります (Camel 2.6 以降)。

Camel 2.0 - 2.5 にはモードが 1 つしかなく、それは次のとおりです。

  • 2.5 より前のバージョンは段階的ではありません
  • 2.5 は段階的です

Camel 2.6 以降では、動作を制御するために使用できる stepwise オプションがあります。

ディレクトリーの段階的な変更は、ほとんどの場合、ユーザーがそのホームディレクトリーに限定されていて、ホームディレクトリーが "/" として報告されている場合にのみ機能することに注意してください。

それらの 2 つの違いは、例を使用して最もよく説明されています。ファイルをトラバースしてダウンロードする必要があるリモート FTP サーバーに次のディレクトリー構造があるとします。

/
/one
/one/two
/one/two/sub-a
/one/two/sub-b

そして、サブ a (a.txt) とサブ b (b.txt) フォルダーのそれぞれにファイルがあることを確認します。

110.12.1. stepwise=true の使用 (デフォルトモード)

TYPE A
200 Type set to A
PWD
257 "/" is current directory.
CWD one
250 CWD successful. "/one" is current directory.
CWD two
250 CWD successful. "/one/two" is current directory.
SYST
215 UNIX emulated by FileZilla
PORT 127,0,0,1,17,94
200 Port command successful
LIST
150 Opening data channel for directory list.
226 Transfer OK
CWD sub-a
250 CWD successful. "/one/two/sub-a" is current directory.
PORT 127,0,0,1,17,95
200 Port command successful
LIST
150 Opening data channel for directory list.
226 Transfer OK
CDUP
200 CDUP successful. "/one/two" is current directory.
CWD sub-b
250 CWD successful. "/one/two/sub-b" is current directory.
PORT 127,0,0,1,17,96
200 Port command successful
LIST
150 Opening data channel for directory list.
226 Transfer OK
CDUP
200 CDUP successful. "/one/two" is current directory.
CWD /
250 CWD successful. "/" is current directory.
PWD
257 "/" is current directory.
CWD one
250 CWD successful. "/one" is current directory.
CWD two
250 CWD successful. "/one/two" is current directory.
PORT 127,0,0,1,17,97
200 Port command successful
RETR foo.txt
150 Opening data channel for file transfer.
226 Transfer OK
CWD /
250 CWD successful. "/" is current directory.
PWD
257 "/" is current directory.
CWD one
250 CWD successful. "/one" is current directory.
CWD two
250 CWD successful. "/one/two" is current directory.
CWD sub-a
250 CWD successful. "/one/two/sub-a" is current directory.
PORT 127,0,0,1,17,98
200 Port command successful
RETR a.txt
150 Opening data channel for file transfer.
226 Transfer OK
CWD /
250 CWD successful. "/" is current directory.
PWD
257 "/" is current directory.
CWD one
250 CWD successful. "/one" is current directory.
CWD two
250 CWD successful. "/one/two" is current directory.
CWD sub-b
250 CWD successful. "/one/two/sub-b" is current directory.
PORT 127,0,0,1,17,99
200 Port command successful
RETR b.txt
150 Opening data channel for file transfer.
226 Transfer OK
CWD /
250 CWD successful. "/" is current directory.
QUIT
221 Goodbye
disconnected.

stepwise が有効になるとわかるように、CD xxx を使用してディレクトリー構造をトラバースします。

110.12.2. stepwise=false の使用

230 Logged on
TYPE A
200 Type set to A
SYST
215 UNIX emulated by FileZilla
PORT 127,0,0,1,4,122
200 Port command successful
LIST one/two
150 Opening data channel for directory list
226 Transfer OK
PORT 127,0,0,1,4,123
200 Port command successful
LIST one/two/sub-a
150 Opening data channel for directory list
226 Transfer OK
PORT 127,0,0,1,4,124
200 Port command successful
LIST one/two/sub-b
150 Opening data channel for directory list
226 Transfer OK
PORT 127,0,0,1,4,125
200 Port command successful
RETR one/two/foo.txt
150 Opening data channel for file transfer.
226 Transfer OK
PORT 127,0,0,1,4,126
200 Port command successful
RETR one/two/sub-a/a.txt
150 Opening data channel for file transfer.
226 Transfer OK
PORT 127,0,0,1,4,127
200 Port command successful
RETR one/two/sub-b/b.txt
150 Opening data channel for file transfer.
226 Transfer OK
QUIT
221 Goodbye
disconnected.

stepwise を使用しない場合にわかるように、CD 操作はまったく呼び出されません。