web-dev-qa-db-ja.com

ディレクトリをそのサブで圧縮している間、特定のファイルの圧縮をスキップするように7zに命令できますか?

私が大好きなWinRAR(Windows用)アーカイバの機能があります。圧縮アーカイブにファイルを含めながら、特定のファイル(拡張子(名前パターン)に基づく)の圧縮をスキップするように設定できます。ユーザーのホームディレクトリのバックアップに関しては、mp3、jpg、Zipなどのファイルの圧縮をあきらめて、テキスト、xls、データベースの圧縮中にそのまま(非ソリッド)アーカイブに追加するだけで、時間を大幅に節約できます。などのファイルが追加されています。

Linuxに切り替えた後も、私自身の利便性の理由から、従来のtar.gzよりも非ソリッドの圧縮アーカイバ(Zipや7zなど、Linuxに切り替える前でも切り替えた7zを主に使用しています)を強く好みます(tar.gzの支持者は権利/所有権情報とリンクを保存する必要があると言いますが、システム以外のファイルでは使用していません)。

しかし、特定のファイルの圧縮を大幅にスキップするWinRARの機能が恋しいです。あなたも7zファンであるかもしれません、多分あなたは効果を達成する方法を知っていますか?

5
Ivan

通常、これはtarを使用して行われますが、本当に圧縮をスキップしたい場合は、圧縮レベルを0に設定します。

私はGUIを持っておらず、実際には使用していないので、必要なことを実行するためにスクリプトを作成する必要があるかもしれません。たとえば、Perlを使用していますが、任意の方法で実行できます。この特定のものは、jpgファイルをスキップします。

my $archive = "/home/user/archive.Zip";
for $file @filenames
{
    my $compression_level = 9;
    $compression_level = 0 if($file =~ /jpg$/);
    `7za a -tzip -mx=$compression_level $archive $file`;
}

スクリプトを使用すると、おそらく必要なだけ洗練されることができますが、それはあなた次第です。

1
Karlson