何千ものファイルをFTPサーバーに転送すると、一部のftpクライアントが完了できないことがわかりました。 mput *
コマンドは数時間実行された後、ハングします
150 Opening BINARY mode data connection.
FTPサーバー管理者に連絡する簡単な方法がありません(私が持っているのはWeHostWebSites.Com
によって管理されているブロック内のIPアドレスだけであり、このIPは多数のドメイン名で共有されていることを知っています)。
FTPサーバーは自己紹介します
220 Microsoft FTP Service
だから私はそれがIISだと思います。
何千ものファイルを含むディレクトリでmput *
を実行しています。転送がしばらくハングするまで、非アクティブのために制御接続が閉じられるまで。
ログを調べると、次のパターンが見られます。最初、ファイルはパッシブモードで転送されます。
229 Entering Extended Passive Mode (|||53567|)
150 Opening BINARY mode data connection.
次に、ポート番号は65200に達するまで増加します。この時点で、サーバーは501
を返します。
229 Entering Extended Passive Mode (|||65201|)
501 Server cannot accept argument.
これにより、lukemftp
(OpenSUSE 11のインストールにデフォルトで付属)やFARマネージャーのFTPプラグイン(Windowsユーザーに人気)などのクライアントがactiveしたがって、次の転送はPORT
コマンドで始まります。
200 PORT command successful.
150 Opening BINARY mode data connection.
netstat -t
は、新しい接続がサーバーのポート20/tcpに接続されることも示しています。別の3000以上のファイルを転送した後、コマンドがハングします。この時点で、netstat -t
からの出力は、TIME_WAIT
接続がどのように排出され、非アクティブのために制御接続が閉じられるかを示しています。
回避策:大規模なFTP転送にはlftp
を使用することがしばしば提案され、これが問題を回避する方法であることが証明されました。 100000以上のファイルがあるディレクトリでlftp
がmirror -R
コマンドを実行するのを見ると、動的ポート番号が65200まで実行され、49152から続行してすべての転送をパッシブに保つことがわかります。したがって、このコマンドは正常に完了します。
lftp
を使用せずにこの問題を回避する方法はありますか(特に、lftp
を持たない純粋なWindowsクライアントで何ができるでしょうか?
通知:この質問は数か月前に http://serverfault.com に投稿されましたが、回答がなく、最近の投票。 ServerFaultから削除し、代わりにSuperUserに再投稿することにしました。
ありますか on access antivirus-software
またはcontinous backup software
サーバー上?たぶん、テスト目的でそれを無効にすると、何かが変わります。
次のプロセスを考えてください。
put
ファイルmove
したいと考えています