SSHでzstd動的圧縮を使用する方法は?

SSHでzstd動的圧縮を使用する方法は?

各エンドで利用可能な帯域幅とCPUリソースの最大スループットを得るために動的圧縮を実行するようにSSHトンネルを設定したいと思います。 gzip圧縮は組み込みでプラグインできないため、-o ProxyCommand外部トンネルが圧縮データをコンテンツに送信し、内部トンネルがリモートホストのSSHデーモンに接続するデュアルSSHトンネル設定を使用できると考えました。これほぼ働くこれは私のコマンドです:

# dynamic compression parameters to zstd omitted for brevity
ssh -o ProxyCommand='zstd | ssh -p %p %h "unzstd | nc localhost %p | zstd" | unzstd' <hostname>

このコマンドについて私が知っているのは次のとおりです。

  • このコマンドを実行すると,端子は出力されずに停止します。
  • [un]zstdを削除すると機能します。 netcatをプロキシコマンドとして使用することはジャンプホストを介して接続する標準的な方法なので、これは驚くべきことではありません。
  • cat | zstd | catコンプレッサはデータをチャンクとして扱うため、コマンドプロンプトにデータはすぐに返されません。圧縮データを解放する前に、ctrl + daを使用してEOFを複数回送信する必要があります。パイプ内のデータを解凍することもでき、同じ方法で動作します。
  • コマンド全体の実行中にCtrl + Dを押すと、何も起こりません。

私がここで何を見逃しているのでしょうか?これを行う方法や私が見落としている他の方法はありますか?

ベストアンサー1

おすすめ記事