WinRARのように、7-Zipで選択的に防止特定のファイルタイプを圧縮しないようにする方法はありますか?
巨大なフォルダー(数ギガバイト)を圧縮しようとしています。すでに圧縮されているファイル(Zipファイルなど)を再圧縮したくありません。圧縮せずに保存する必要があります。
はい、同じ7-Zipアーカイブ内の異なるファイルに対して異なる圧縮方法を使用することが可能です。
コマンドラインバージョンの7-Zipと-m
パラメータを使用して、メソッドをCopy
として指定します。これは、圧縮しないことを意味します。
例:
7za a -m0=Copy tmp7.7z *.txt
詳細については、「 -m(圧縮方法の設定)スイッチ 」を参照してください。
フォルダにZipファイルがあり、圧縮されていないtxtファイルがあるとします。
最初のステップは、次のコマンドを使用してtxtファイルを圧縮するアーカイブを作成します。
-mを使用して圧縮レベルを設定できます。これは、使用している圧縮方法にも依存します。
ここではデフォルトの圧縮のみであると仮定しましょう
7z a compressed.7z *.txt -r
今すぐcompressed.7zを取得します。
2番目のステップは、すでに圧縮されたファイルをこのアーカイブにコピーするか、新しいアーカイブを作成します
7z u compressed.7z -u!update.7z -mx0 *.Zip
更新コマンドについてさらに詳しく説明します ここ
そして、あなたがグラフィカルインターフェースを使用する自由がある場合、更新は以下の方法で行うことができます
圧縮済みのファイルタイプ(.Zipファイルなど)を再圧縮せずに保存することで、ディレクトリをすばやく圧縮するPowerShellスクリプトを作成しました。 7Zipのコマンドラインインターフェイスを使用し、ファイル名拡張子を使用して、特定のファイルを圧縮するか単に保存するかを決定します。
スクリプトはここにあります: https://Gist.github.com/ivanatpr/5dea086172eab573ba71
技術的には、圧縮されたファイルはエントロピー制限などについてはそれ以上圧縮されません。詳細は忘れますが、私が見たものの2%未満です。
ほとんどの優れたコンプレッサーは、圧縮をチェックし、圧縮できないファイルを格納します。圧縮するとオーバーヘッドが追加され、サイズが増加するためです。
もちろん、そもそもファイルを見る作業と時間はあります。
他の回答で説明されているように、ファイルセットに対して複数のパスを実行することはおそらく最良のソリューションであり、簡単にスクリプト化できます。
7zアーカイブを作成してすべてを追加しますが、圧縮ファイルを1つのパスで追加してから、事前圧縮ファイルを非圧縮データとして追加します。 (圧縮可能なものはアーカイブの最初にあり、圧縮できないものは最後にあるので、私はこのようにします。連続しているため、ドライブからより速くストリーミングされます)
(「圧縮...」を使いすぎた!)