ディスク容量を圧縮して節約するのに最適なディレクトリを選択します。

ディスク容量を圧縮して節約するのに最適なディレクトリを選択します。

圧縮ファイルを保存せずにディレクトリが達成できる圧縮レベルを推定する最良の方法は何ですか?

さまざまな性質のファイル(バイナリファイル、テキストファイル、圧縮ファイルなど)を含む多数のディレクトリとサブディレクトリがあります。これらのディレクトリの一部を圧縮する必要がありますが、全体(または一部)を圧縮し、圧縮率でソートするのに十分なスペースがありません。

したがって、圧縮する程度を決定する前に、圧縮率(圧縮できる程度)をリストする必要があります。

圧縮されていないディレクトリのディレクトリサイズのリストがあります。

du -f --maxdepth=3 > /tmp/list_of_directories

Tar、bz2、またはgzipを使用すると、高速圧縮レベルを使用して各ディレクトリを空のパイプに圧縮できますが、ファイルが保存されていないと圧縮率統計は生成されません。

どういうわけか、コンテンツ全体を圧縮パイプラインに圧縮する必要があるため、このソリューションは処理が集中していますが、作成時に圧縮結果が削除されるため、ストレージ容量は非常に少なくなります。

つまり、「最終圧縮ファイルを保存せずに特定のストリーム、ファイル、またはディレクトリの圧縮率統計を生成できるツールはありますか?」という質問に戻ることができます。

ベストアンサー1

これは、ディレクトリの内容を圧縮ツールにパイプし、圧縮ストリームを空のパイプにリダイレクトすることによって行うことができます(スペースの使用を防ぐため)。圧縮ツールは次のことを行う必要があります。 1 - パイプストリームで圧縮 2 - /dev/null で圧縮可能 2 - 削除されたファイルの圧縮統計を提供する

最も広く使用されているツールの中で、bzip2 は特に入力と出力バイトの出力状態のために最適なツールです。

最終的な解決策は次のとおりです。

cat$(DIRECTORY_PATH 検索) bzip2 -c --verbose > /dev/null

最初の部分は、選択したディレクトリ内のすべてのファイルのすべてのコンテンツをリンクします。

cat$(DIRECTORY_PATHを探す)

2番目の部分は、最初の部分の接続された入力を圧縮し、最後に単一のレポート(--verbose)を生成し、同時に出力を空のパイプにリダイレクトします。

bzip2 -c --verbose > /dev/null

出力は次のようになります。ここで、「(\d+) in」正規表現はバイトディレクトリ内のすべてのファイルの生のサイズをキャプチャし、「(\d+) in」は圧縮サイズ(バイト)をキャプチャする必要があります。出力は次のようになります。

1.581:1、5.059ビット/バイト、36.77%節約、1039062入力、657029出力。

このソリューションはディレクトリ内のファイル数に制限がありますが、スペースを節約するために圧縮可能なディレクトリを識別するための良い開始点として使用できます。

おすすめ記事