pureftpdの使用1276541542バイトのファイルの1%または約15メガバイトをアップロードしました。それから、クライアントがISPから派生したことをシミュレートするために、ネットワーク接続を異常終了させました。それから私は1時間待った。その後、APPE(追加)コマンドを再接続して発行し、残りのファイルをアップロードしました。アップロードが完了した後のサーバー上のファイルの最終サイズは1292326238であり、これは約15メガバイト以上のものでした。ファイルが壊れています。遅い追加のためにアップロードされたファイルが壊れてしまうのを防ぐFTPサーバーの正しい方法は何ですか?FTPサーバーが、後で追加されたために壊れたアップロードファイルを防ぐ正しい方法は何ですか?
答えて
FTPサーバーが、後で追加されたために壊れたアップロードファイルを防止する正しい方法は何ですか?
ファイルがどのファイルであるべきかわからないため、FTPサーバーがアップロードされたファイルの破損を防ぐ方法はありません。
しかし、サーバは、SIZE
コマンドを実装することによって、クライアントが適切なアップロードを行うのを助けることができます。このコマンドを使用すると、クライアントはサーバー上の現在のファイルサイズ、したがってアップロードを続けるファイル内の位置を判断できます。もちろん、このロジックはクライアント側で実装する必要があります。
しかし、確かにFTPサーバーは、すべてのバイトの終わりにユーザーがデータ接続を正しく閉じたかどうか、またはユーザーがハングアップして接続を決して閉じていないかどうかを知ることができます。 2番目のケースは、完全なファイルではなく、断片であることを意味します。 –
@AndrewArrow:そうではありません。クライアントプロセスがクラッシュした場合、オペレーティングシステムはTCP接続を閉じます。または、ユーザーが転送を明示的に打ち切ります。このような場合、サーバーは接続が閉じられた理由、サーバーが閉じられたことだけをサーバーが検出することはできません。 ABORコマンドは、ユーザーが中断してもFTPクライアントがクラッシュするのではなく、ちょっとした助けになるかもしれません。 –
@AndrewArrow、OK、FTPサーバーが異常終了を検出したとしましょう。 (例えば、 'peer by connection reset').FTPサーバは、それについて何をすべきですか?初めてFTPサーバーが正しいファイルサイズを学習するのはいつですか? – daveloyall
私は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
を実行し、アップロードするとき、それはだアップロードスクリプト
について純粋-FTPDの答えを持っています十分なdone.rbプログラムが実行されていることを確認してください。
(私はddd.txtと呼ばれる新しいファイルがあるcuzを、それが実行しています知っている)
が、私は大きなファイルをアップロードすることだし、アップロードdone.rbの途中でFTPクライアントを殺すはまだ実行されます。 (はい、私はddd.txtを最初に削除しました)
したがって、質問に対する答えは、FTPプロトコルの制限のためにEVEN pureftpdがこれを処理できないということです。
- 1. 追加されたイベントハンドルによるメモリリークを防ぐための予防策
- 2. Gitで暗号化された(バイナリ)ファイルが壊れるのを防ぐには?
- 3. AmXYChart - 隠し防ぐためにパディングを追加する方法は
- 4. 新しい土地を追加した後にホームステッドの汚れが壊れた
- 5. フリーズされたアプリケーションを防ぐためにファイルをコピーする
- 6. java.net.SocketTimeoutExceptionを防ぐためにランタイムタイムアウトを追加するにはどうすればよいですか?
- 7. アップロードファイル(イメージ)をチャンクに入れようとした後で、アップロードされたバイトファイルをマージした後に、なぜ壊れていますか?
- 8. フックされたアプリケーションでQtウィンドウが閉じるのを防ぐために、Eventfilterは何もしません。
- 9. 新しく生成されたモデルファイルを追加する正しい方法は何ですか? VS 2010でEF
- 10. ios - 新しいアイテムが下に追加されたときのUICollectionviewのスクロールを防ぐ方法
- 11. tmpにコンパイルされたバッチファイルストアソースを防ぐ方法は?
- 12. 新しいセルが追加されると、UITableViewが先頭にジャンプします。それを防ぐ方法は?
- 13. なぜ10000000000000.126.toString()が1000000000000.127(そしてそれを防ぐために何ができますか)ですか?
- 14. 削除してDOMに追加した後にCKEditorが壊れました
- 15. インデックスされたアイテムをオブジェクトに追加するための適切なES6の方法は何ですか?
- 16. FTPアップロードされたファイルが壊れています
- 17. SolrJが埋め込まれたSolrサーバーに追加されたドキュメントをHTTP Solrクエリーに表示する方法
- 18. あなたはスパムロボットを防ぐために何をしますか?
- 19. FtpWebRequestがファイルに追加されたテキストを壊すのはなぜですか?
- 20. 壊れた画像が開発中のレールに当たるのを防ぐ
- 21. python3.6-venv hijacks pip。これを防ぐ方法は何ですか?
- 22. CSSにリンクする方法FTPサーバーにアップロードされたスタイルシート
- 23. UICollectonViewがプログラムで追加された後にスクロールしない
- 24. ロード中にレイアウトが壊れるのを防ぐために、すべてのコンテンツがロードされるまでページ要素を隠すクロスブラウザ方式ですか?
- 25. jekyllが正しくページを追加/壊れたリンクやCSSを追加
- 26. アイテムを取得して追加した後、リアウェイポイントのスクロール位置がリセットされるのを防ぐ
- 27. これを行うための正しい方法は何ですか機能
- 28. 準備されたステートメントなしでSQLインジェクションを防ぐ方法は?
- 29. SQLインジェクションを防ぐためにパラメータ化されたSQLクエリを書くには?
- 30. jquery - XSSを防ぐためにHTMLをエスケープする方法は?
私はAPPEを正しく使用することはクライアントに依存していると思います。また、1276541542バイトのファイルは約15メガバイトではありません。それはギグを超えている。 – daveloyall
私はそれを誤解していると思う、それは1276541542バイトのファイルで、1276541542の1%は約15メガです。 –