我正在尝试使用tar
.然而,有许多文件,例如CR2
(Canon RAW 2),JPG
以及一些其他文件已经被压缩。
我已经看到tar
使用该选项从存档本身中排除这些类型的文件--exclude
,但这不是我想要做的。相反,我想包含这些已经压缩的文件,但跳过它们的压缩,类似于rsync
s的压缩--skip-compress
。
这可能吗?如果可以,该怎么做?
答案1
tar
本身没有这个功能,你只能过滤它,这样你就有两个独立的 tar 文件,一个保存压缩文件,另一个保存未压缩文件。这可以使用tar
您提到的排除选项来实现,或者通过使用find
.
如果您愿意接受替代方案,可以使用dar
(磁盘存档)来决定是否单独压缩每个文件(-Z, --exclude-compression <mask>
选项)。它还可以恢复存档中的单个文件,而无需解压缩整个文件(直到找到文件),例如tar
.
大多数人只是完全忽略这个问题并压缩所有文件。使用快速压缩算法并没有太大区别。强压缩需要更多数量级的 CPU 时间,而大小的减少可以忽略不计(ymmv,很大程度上取决于数据)。如果它是一个将被下载多次的存档,那么强压缩可能是值得的,否则可能不值得。
答案2
即使使用 GNU 我也不知道有什么方法可以做到这一点tar
。
tar
收集文件,然后压缩生成的流(实际上相当于tar ... | gzip > somefile.tgz
应用压缩时不知道单个文件。