tar,同时避免压缩某些文件类型

tar,同时避免压缩某些文件类型

我正在尝试使用tar.然而,有许多文件,例如CR2(Canon RAW 2),JPG以及一些其他文件已经被压缩。

我已经看到tar使用该选项从存档本身中排除这些类型的文件--exclude,但这不是我想要做的。相反,我想包含这些已经压缩的文件,但跳过它们的压缩,类似于rsyncs的压缩--skip-compress

这可能吗?如果可以,该怎么做?

答案1

tar本身没有这个功能,你只能过滤它,这样你就有两个独立的 tar 文件,一个保存压缩文件,另一个保存未压缩文件。这可以使用tar您提到的排除选项来实现,或者通过使用find.

如果您愿意接受替代方案,可以使用dar(磁盘存档)来决定是否单独压缩每个文件(-Z, --exclude-compression <mask>选项)。它还可以恢复存档中的单个文件,而无需解压缩整个文件(直到找到文件),例如tar.

大多数人只是完全忽略这个问题并压缩所有文件。使用快速压缩算法并没有太大区别。强压缩需要更多数量级的 CPU 时间,而大小的减少可以忽略不计(ymmv,很大程度上取决于数据)。如果它是一个将被下载多次的存档,那么强压缩可能是值得的,否则可能不值得。

答案2

即使使用 GNU 我也不知道有什么方法可以做到这一点tar

tar收集文件,然后压缩生成的流(实际上相当于tar ... | gzip > somefile.tgz应用压缩时不知道单个文件。

相关内容