我目前正在使用这个: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论坛“有一个很好的脚本来备份文件并根据大小排除文件。