如何忽略大于 100MB 的文件进行归档

如何忽略大于 100MB 的文件进行归档

我正在尝试使用 tar 存档文件并忽略大于 100MB 的文件。这可能吗?
PS:不必使用 tar。

答案1

是的,可能还有其他几种方法可以做到这一点,但最好采用这种方法,find因为它具有可调整性。

find /path/to/dir -size -100M | xargs tar cvf archive.tar

或者

tar cvf archive.tar $(find /path/to/dir -size -100M)

如果当前文件夹中还有其他您不想存档的目录,请使用:

find /path/to/dir -maxdepth 1 -size -100M | xargs tar cvf archive.tar

根据下面的评论,空格可能会引发一些错误,但在我的测试中,使用第一种方法时它们似乎仍会被添加到档案中(本身有点奇怪),但如果您担心,您可以修复 find 命令以用转义版本替换空格。

正如以往一样,有上亿种方法可以实现这一点。

find /path/ -size -100M | sed 's/ /\\ /g' | xargs tar cvf archive.tar

find /path/ -size -100M -exec echo '"{}"' \; | xargs tar cvf archive.tar

答案2

只需排除这样的大文件:

tar cf archive.tar /path/to/archive --exclude-from <(find /path/to/archive -size +100M)

相关内容