如何将 xx MB 以下的所有内容压缩为 tar.gz?

如何将 xx MB 以下的所有内容压缩为 tar.gz?

我目前正在使用这个:tar -pczf backup.tar.gz *

压缩为 tar.gz 所有内容。不过还有一些其他备份(在其他文件夹中),这些通常是唯一大于 50mb 的文件。我该如何排除它们?另外,有人知道我该如何排除 jpg/gif/png 吗?谢谢

答案1

您可以直接将文件列表传递给 tar(使用开关T),即:

find dir/ -size -50M | tar -czf test.tgz -T - --exclude '*.gif' --exclude '*.jpg'

答案2

您可以将 tar 与 find 结合使用以仅选择特定大小的文件:find . -size -50M返回所有小于 50 MB 的文件的列表,然后您可以将其通过管道传输到 tar。

编辑我第一次回答时没有注意到你的第二个问题:为了根据文件扩展名排除文件,只需将 find 的输出通过管道传输到 grep:(find ... | fgrep -v \*.jpg \*.png etc.未经测试)。

答案3

扩展 Arthur 的建议,tar 的 r 选项用于附加。因此,类似这样的操作可能会实现这一点。

 find /path/to/dir  -size -50M -exec tar -rvpf backup.tar \;

编辑:-exec 需要终止字符串“\;”(不带引号)。

您无法将其附加到压缩档案中,因此您必须单独对其进行 gzip 压缩(或 bzip2 压缩)。

结合wds的解决方案来排除图像。

答案4

tar 有选项可以排除与特定模式匹配的文件,但不能排除大小匹配的文件。

--exclude=PATTERN
排除与 PATTERN 匹配的文件
-X, --exclude-from=FILE
排除与 FILE 中列出的模式匹配的文件

Ubuntu论坛“有一个很好的脚本来备份文件并根据大小排除文件。

相关内容