FTPアダプタの [更新] 処理を実行したところ、以下のようにSFTPサーバ側にファイル名のディレクトリが作成され、その下にファイルが配置されてしまいました。
原因と回避策を教えてください。
<FTPアダプタの設定>
・ローカルパス:/data/local /test.txt
・リモートパス:/remote/sftp/test.txt
・更新する際の条件:存在
<更新処理実行前のSFTPサーバ側のファイル配置>
/remote/sftp 配下に、更新対象のファイル「test.txt」は存在しない状態
<更新処理実行後のSFTPサーバ側のファイル配置>
・/remote/sftp/test.txt/test.txt
■原因
本事象は、DataSpider Servista 4.4 SP3 からFTPアダプタで使用しているライブラリのバージョンが上がり、内部動作が変わったことに起因しています。
また、条件の一つとして、「リモートパス」に指定したファイルパスへのcdコマンドが成功する特定のSFTPサーバでのみ発生することを確認しています。
FTPアダプタは内部動作として、「リモートパス」に指定したパス対して cdコマンドを実行した結果をもとに、ディレクトリであるか否かの判定を行っている箇所があります。
このため、指定したファイルパスへのcdコマンドが成功する特定のSFTPサーバでは、本事象が発生します。
なお、以下のように、DataSpiderのバージョンによって事象の発生状況が異なります。
・4.4 SP2以前のバージョン
SFTPサーバ側に更新対象のファイルが存在する場合は本事象が発生するが、存在しない場合は発生しない。
・4.4 SP3以降のバージョン
SFTPサーバ側に更新対象のファイルが存在する・存在しないどちらの場合でも本事象が発生する。
なお、ファイルパスへのcdコマンドが成功する SFTPサーバとして、過去事例では AWS Transfer Family や Concur、AWS版SFTP To Go が報告されています。
■回避策
過去事例では、リモートパスにファイル名を含めず、ディレクトリのみを指定することで事象を回避していました。
■FTPアダプタの注意点について
FTPアダプタは、特定の接続先への接続をサポートしていない汎用アダプタです。
また、汎用的な処理を行うため、ファイルパスへのcdコマンドが失敗することを前提として機能を実装しています。
上記より、特定の接続先の動作にあわせた機能実装にはなっていません。
このため、FTPアダプタを使用する場合や DataSpider Servista のバージョンアップを行う場合は、事前に動作検証を行い、お客様の想定通りの動作が可能であるかご確認をお願いいたします。
■今後の対応
FTPアダプタでは、ファイルパスへのcdが成功する特定のSFTPサーバに対しても正常に動作するよう、別の方法でディレクトリ判定が行える機能を追加することを次期以降のバージョンにて検討しています。
なお、対応時期は未定です。(2026/1/20現在)