FTP経由で多数の小さなファイルをアップロードしているときに、ファイルの内容の一部がFTP制御メッセージに置き換えられることがあります。たとえば、ウェブサイトをアップロードした後、画像が表示されないことに気づきました。サーバー上の画像を調べると、その内容が次のようなものに置き換えられていることがわかります
Response: 125 Data connection already open; Transfer starting.
Response: 226 Transfer complete.
Status: Directory listing successful
再現するのは非常に難しいです。私が気づいた破損したファイルはすべて、通常それらを再転送することができます。サイト全体を再転送すると、別のファイルが破損する可能性があります。
この問題は数年前から悩まされており、その間に私はコンピューター(2回)、ルーター、ケーブルモデムを交換し、国中を移動しました。私は最近問題を抱えていませんが、それはおそらく、転送する前にすべてを圧縮するなど、それを回避する方法を学んだからだと思います。ちなみに私はFileZillaを使用しています。
私は一度、この問題を自分のWebホストの1つに説明しました。彼らはそのようなことを聞いたことがなく、手がかりもありませんでした。何が起こっているのか知りたいです。現状では、私はFTPをほんの一握りのファイル以外のものに使用することを非常に恐れています。
非常に単純です:宇宙(および/またはマーフィー)は、FTPのような完全に時代遅れで安全でないプロトコルを引き続き使用することであなたを罰します。
FTPを使用してWebサーバーに接続すると、ユーザー名とパスワードが暗号化されずに平文で送信され、全員とビッグブラザーが読み取ることができます。 FTPを使用してアップロードまたはダウンロードするすべてのファイルの内容も同様です。セキュリティ上の理由のみから、SSHの組み込み機能であるSFTPに切り替えることを強くお勧めします。あなたのビジネスに値するどんなウェブホスティングプロバイダーもSSHとSFTPをサポートしています。
SFTP接続はサーバー上の完全に別のデーモン/サービスによって処理されるため、サーバー側で発生する可能性のあるFTPの問題は、SFTPを使用する場合にはほぼ確実に当てはまりません。
FTPS、FTPESなどとは異なり、SSH/SFTPの実装は非常に一貫して相互運用可能です。 SFTP経由でファイルを転送するときに、奇妙で予測できない問題が発生することはほとんどありません。
私にとってこれは、転送モードがASCII=に設定されているため、転送->転送タイプ->自動に設定したためです(必要なときにバイナリモードを使用するため))
これで私の問題は解決しました。これが皆さんにも役立つことを願っています。
私のお金はFTPサーバーのバグ(ホストの問題)にあります。 FileZillaの最新バージョンを使用していることを確認し、すべてのFTPセッションをログに記録するように構成して、この破損を発見した場合にホストにセッションのログを提供できるようにします。トラブルシューティングに役立つ場合があります。
ホストへのシェルアクセスがある場合は、代わりにSCPを使用できます。
安全のために、転送が「バイナリ」に設定されていることを確認しますASCIIモードでファイルを転送する場合があり、これが通常、いわば破損の原因となる場所です。その場合は、問題が解決しない場合は、サーバーとクライアントの交換/更新を検討します。それでも問題が解決しない場合は、エラーが発生しているインターフェイスを調べてください...
問題の潜在的なルート(および破損したファイルに関する他の多くの同様の問題):
ファイル内の重複データの発生による無効なチャンク(たとえば、ゼロの多く)
および/または何か他のもの:
-ネットワーク構成関連(MTUサイズ?!)
-古いサーバーソフトウェア(Debianでの数年前は、この問題に関連するバグでした)
-バイナリモードを使用しない
回避策:
他の人が述べたように、SFTPに切り替えます-暗号化により、重複したパケット/チャンクの発生を最小限に抑えます
クライアントで圧縮を有効にする-オプション1と同様に、圧縮は同様のことを行います
FileZillaチケット(6歳): https://trac.filezilla-project.org/ticket/4672