フォルダをサーバーに保存し、ホストで圧縮

フォルダをサーバーに保存し、ホストで圧縮

私は以下を試してみます:

  1. フォルダをアップロードしてください(例:)サーバー上
  2. サーバーが入力ストリームを圧縮してファイルに保存するようにします。

重要なのは1)段階は圧縮されていない接続速度が非常に速く、クライアント側の圧縮が遅くなると思うからです。さらに、サーバー確かに圧縮せずにディレクトリを保存するのに十分なスペースが必要です。理想的には、サーバーの圧縮が同時に発生します。

マルチスレッドである限り、実際の圧縮アルゴリズムにはあまり興味がありません。

ベストアンサー1

予備の注意:画像がすでに圧縮されていると仮定すると(JPEG、PNG、WEBP...)、どの圧縮を使用しても、空間的には何もできません。。単に削減するエントロピーはありません。したがって、計画全体が失敗する可能性があります。

一般的なアプローチは次のとおりです。テープアーカイブ形式(.tar)。ディレクトリを単一のTARストリームにシリアライズし、インターネットを介して(たとえばSSHを使用して)ディレクトリを転送してからターゲットに圧縮できます。

また、SSHに組み込まれているトランスポート圧縮をオフにする必要があります。それ以外の場合は、最初に送信するホストで圧縮を実行しなくても意味がありません。

それはまるで

tar c Pictures/ | ssh -o "Compression=no" user@server "zstd -15 -T0 > Pictures.tar.zstd"

zstd -T0zstandard 圧縮にはできるだけ多くの CPU コアを使用します。これが-15圧縮レベルです。 15は非常に残酷で、-3gzipよりも優れていますが、通常は高速です。)をxz -T0(並列XZip圧縮の場合)またはpigz(並列gzip圧縮の場合)適切で​​あると思うように交換してください。圧縮/速度バランスがとても良いzstdをお勧めします。xz非常に遅く、gzipは非常に限られた圧縮しか生成できず、比較的低い圧縮設定ではzstdよりも高速ではありません。

しかし、データ暗号化には圧縮よりも多くのCPUが必要になる可能性があるため、問題は実際に暗号化を実行しない理由です。

zstd -r --stdout Pictures/ | ssh -o "Compression=no" user@server "cat > Pictures.zst"

おすすめ記事