TelnetでFTPアップロードの進行状況を測定する方法

TelnetでFTPアップロードの進行状況を測定する方法

telnet私はFTPサーバーに接続して大容量ファイルを保存するスクリプトを書いています。

プロジェクト環境のためにftpを使用する必要がありますscprsync

アップロードの進行状況をどのように確認できますか?

pureftpとの間でサーバー側を切り替えることができますproftpd

トランスポートチャネルへの書き込みの進行状況を分析しようとしていますが、ファイルがサーバーに到達するずっと前に完了が表示されるため、これは間違っているようです。だからサーバー側のフィードバックを受けたいです。実際にどのくらいのデータが記録されたかについてのフィードバックを提供する魔法のSTORコマンドを探したいと思います。

proftpdでSTATコマンドを見つけましたが、遅延して要求が必要なようです。

これらの進歩を達成する簡単な方法はありますか?

クライアントFTPへの既存のHASHフィードバックはどのように機能しますか?

ベストアンサー1

観察中の動作は、クライアントがFTPデータ接続のソケットにデータを書き、クライアントカーネルが操作が正常に行われたと応答しましたが(成功したリターンまたはwrite()システムsend()コールを介して)、データはまだすべての種類のバッファであり、まだターゲットファイルにコミットされていません。 。ソースオペレーティングシステムのネットワークバッファにあり、イーサネットカードのバッファにあり、有線にあり、ターゲットのバッファにあり、FTPサーバープロセスのバッファにあり、サーバーのファイルに書き込まれましたが、まだフラッシュされていません。ディスクなど...

これはFTPでのみ発生するものではありません。最新のファイル転送ツールを使用すると、これが起こっていることを簡単に確認できますscpscp世界中の半分にわたるファイル(待ち時間が長いネットワークの場合)、またはストレージが遅いシステムの場合、転送の進行状況は実際よりも速く表示され、100%の完了時に停止したようです。コマンドが実際に完了するまでに少し時間がかかります。

netkit-ftp(Debianのデフォルト/標準FTPクライアント)のソースコードを見ると、#タグの処理に関して特別なことはしないことがわかります。データ接続ソケットに書き込まれたデータ量に基づいてハッシュマークを書き込みます。したがって、〜する観察したのと同じ動作を見せてください。

STOR一般的なFTPクライアントが実行する作業と実行する必要があるのは、制御接続がコマンドへの応答を待つことです。データ接続ソケットをフラッシュして閉じた後、しばらくすると応答が表示されます。応答を受信すると、FTPサーバーにデータがあることがわかります。ディスクに完全にコミットされていない可能性がありますが、これが確認されます。

おすすめ記事