0

pureftpd を使用して、1276541542 バイトのファイルの 1%、つまり約 15 MB をアップロードしました。次に、クライアントが ISP から追い出されることをシミュレートするために、ネットワーク接続を異常終了させました。それから私は1時間待った。次に、再接続して APPE (追加) コマンドを発行し、残りのファイルをアップロードしました。アップロードが完了した後のサーバー上のファイルの最終サイズは 1292326238 でした。つまり、本来よりも約 15 MB 大きくなっています。ファイルが破損しています。追加が遅れたためにアップロードされたファイルが破損するのを防ぐための FTP サーバーの正しい方法は何ですか?

4

2 に答える 2

1

追加が遅れたためにアップロードされたファイルが破損するのを防ぐための FTP サーバーの正しい方法は何ですか?

サーバーはファイルが何であるかを認識していないため、アップロードされたファイルの破損を防ぐ方法は FTP サーバーにはありません。

ただし、サーバーは、コマンドを実装することで、クライアントが適切なアップロードを行うのを支援できますSIZE。このコマンドを使用すると、クライアントはサーバーでの現在のファイル サイズを判別できるため、アップロードを続行する必要があるファイル内の位置を判別できます。もちろん、このロジックはクライアントで実装する必要があります。

于 2016-04-06T05:03:09.353 に答える
0

アップロードスクリプトについての純粋なftpdの回答があります

私は走っていますpure-uploadscript --run /home/aa/done.rb —daemonize

私の done.rb プログラムは

#!/usr/bin/env ruby
puts "done"
f=File.open("/home/aa/ddd.txt", "w")
f << "test"
f.close

ファイルを実行pure-ftpd —uploadscriptしてアップロードすると、done.rb プログラムが実行されます。

(ddd.txtという新しいファイルがあるので、実行されていることはわかっています)

しかし、大きなファイルをアップロードしていて、アップロードの途中でftpクライアントを強制終了すると、done.rbがまだ実行されます。(はい、最初に ddd.txt を削除しました。)

したがって、質問に対する答えは、FTP プロトコルの制限により EVEN pureftpd はこれを処理できないということです。

于 2016-04-06T17:45:22.420 に答える