关于linux:如何在使用tar压缩目录时排除大文件

How to exclude big files while compressing a directory with tar

我想在Linux中压缩一个目录。我创建了一个tar.gz,它变成了一个大文件,因为这个目录包含一些*.o文件和一些pdf文件。

是否有任何方法压缩目录,但排除大于预定义大小的文件?tar命令中有--exclude参数,但是我想拒绝大于1 MB的文件。这是约束,而不是文件名。


基于1月菲利普gehrcke的反应:

1
find . -type f -size -1024k | tar -czf --null -T - -f archive.tar.gz

对于小于1M的文件。测试在OS X和Linux的Ubuntu。


...| tar c --null -T -以上解决方案是最好的,如果你有充足的内存(即"文件列表适合进入你的记忆很容易(在大多数的案例,这是真的)。然而,有一个地方,xargs。如果你在记忆的约束,但你必须使用它appropriately焦油渣,invocations不多的不良效应。

两个compress,你可以使用。

1
find . -type f -size -1024k | xargs tar c | gzip > archive.tar.gz

这个结果在一部concatenated焦油档案文件,一起为《resulting gzip压缩过的文件(你也可以使用cz和omit | gzipAA级联gzip Gzip档案仍然有效,但你失去了一点小小的压缩,或很长一点,如果你使用bzip2压缩gzip或XZ而不是)。

两种提取物的resulting文件,你必须使用《--ignore-zeros期权(或-i焦油提取物的两个不只是第一吧:

1
tar xizf archive.tar.gz


你可以使用一个组合(以找到其大小的标志)和它的两个通xargs为焦油。

之类的东西。

1
find . -size -100k -print | xargs tar cvf archive.tar

对文件小于100K。看你找到的其他尺寸的选择


find ./myRep/ -type f -size -1024k | xargs tar cfvz myArchive.tar

在一个字,第一部分的这一表达生成列表文件,大小的冰下比从recursively 1024K。/ /二次方和myrep create焦油/ gzip档案。