仮想マシンから非同期ダウンロードを行いますか?

仮想マシンから非同期ダウンロードを行いますか?

マイコンピュータにダウンロードする仮想マシンにいくつかのファイルが保存されています。約100万のファイルがあり、次のコマンドを使用しています。

scp vm_user@IP:/home/vm_user/path_to_files /Users/documents

想像できるように、ファイルを1つずつダウンロードするので、遅くなります。ファイルを非同期にダウンロードしたり、ダウンロードに並行性を適用してダウンロードを高速化したりするためのより速い選択肢はありますか?

ベストアンサー1

想像できるように、ファイルを1つずつダウンロードするので、遅くなります。

「1つずつ」定義:各ファイルの後に何もリセットせずに接続することです。 (ちなみに、プログラム名にもかかわらず、scp使用されたプロトコルはSCPではなくSFTPであることがほぼ確実です。SFTPはより現代的です。)

SFTPに注意してください。リクエストキューは、私が知っているすべての実装ですでに使用されています。したがって、最初のファイル転送を完了し、次のファイルデータ/名前/プロパティ転送を開始する間に「遅延時間」はありません。

非同期的にファイルをダウンロードするためのより速い選択肢はありますか?

この文脈では、「非同期」とはどういう意味ですか?バックグラウンドで何かが完了するのを待つのは、それがブロックされるのを待つよりも速くないため

または、ダウンロードを高速化するためにダウンロードに並行性を適用しますか?

並行性自体では、ダウンロード速度はまったく増加しません。代わりに、受信側にオーバーヘッドと潜在的なファイルシステムの断片化を追加するだけでなく、送信側に検索時間/キャッシュ無効化を追加します。

Webサーバーが各接続速度を制限するのに役立ちます。これにより人為的な限界を迂回することになります。ここでは、各接続を人為的に制限しているとは思わない。

ここでは、これらのファイルが小さく、サイズがほんの数のネットワークバッファにすぎないと仮定します。それ以外の場合、SSHが上位層(SFTP)に提供する内部バッファアーキテクチャはこの場合スループットを制限します。rsyncまたは同様のものを使用してくださいssh user@host tar -cf - --zstd folder/to/be/sent | tar -xf - --zstd。 (順序が問題ではないので、2つのオプションは依然として順次です。)

おすすめ記事