如果已有 tar 版本,是否跳过 tar 文件?

如果已有 tar 版本,是否跳过 tar 文件?

tar命令是否有选项可以跳过/忽略对已打包好的文件进行打包?

考虑一下我有一个file1.txt并且它被焦油化为file1.tar.gz,现在我又复制了一份file1.txt还有很多其他文件,比如file2.txtfile3.txt, ETC

我希望,在打包所有这些文件时,不要file1.txt再次;我对排除所有文件不感兴趣,*.tar.gz因为它没有告诉tar命令不要选择file1.txt涂焦油。

我真正需要预防的是file1.txt通过命令选择tar执行 tar 它作为file1.tar.gz这之前就已经存在了(现在它被覆盖了)。

笔记:我可以编写一个脚本,但我想确保tar命令无法做到这一点。

答案1

我可以使用以下 tar 命令来实现这一点:

tar -cf koko.tar --exclude="*.tar" kokotar

另一个巧妙的技巧是创建一个具有您想要忽略的文件名或扩展名模式的文件,然后从命令中读取该文件tar以忽略所有此类文件:

tar -cf koko.tar --exclude-from <file | /path/to/exclusion/list/file> kokotar

or

tar -cf koko.tar -X <file | /path/to/exclusion/list/file> kokotar

语法格式:

tar -cf <name_of_new_tar_file>.tar --exclude='pattern' <source>

tar -cf <name_of_new_tar_file>.tar --exclude-from /path/to/name/exclusion/list <source>

答案2

soundstar目前无法跳过具有 tar 版本的文件,因此这是一种跳过这些文件的方法:

find -type f -name '*.txt' -exec sh -c '
    [ -f "${1%.txt}.tar.gz" ] && echo "$1 skipping ..." || echo "$1 taring ..."
' _ {} \;

相关内容