我非常喜欢 WinRAR(适用于 Windows)存档器的一个功能:它可以设置为跳过尝试压缩特定文件(基于其扩展名(名称模式)),同时将它们包含到压缩存档中。当谈到备份用户主目录时,它可以节省大量时间,放弃尝试压缩 mp3、jpg、zip 等文件,而只需将它们添加到压缩文本、xls、数据库时不受影响的(非固体)存档中等文件正在添加。
切换到 Linux 后,出于我自己的方便原因(tar.gz 倡导者使用说需要保存权利/所有权信息和链接,但我不在我的非系统文件中使用任何内容)。
但我非常怀念 WinRAR 跳过特定文件压缩的功能。也许你也是7z的粉丝,也许你知道如何实现这个效果?
答案1
通常这是使用完成的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`;
}
您可能可以根据需要使用脚本来变得复杂,但这取决于您。
答案2
我只是在寻找同样的问题,我意识到这是一个老问题,但我想我已经找到了一种方法。
将文件单独添加到(即更新)存档。
例如,首先我们添加所有具有最佳压缩的文本文件:
7z a archive.7z "*/*.txt" -mx9
然后更新所有不压缩的 mp3 文件:
7z u archive.7z "*/*.mp3" -m0=copy