tar-排除不起作用

tar-排除不起作用

我应该使用 tar 存档目录并排除一些文件。我有一个目录 $HOME/java,其中包含一些 .java 和 .class 文件。我想要做的是使用 -X 排除选项排除所有 .class 文件。

我已经使用 find 创建了一个排除文件

$ find $HOME/java -name "*.class" > Exclude

然后尝试存档目录

$ tar -cvfX java.tar Exclude $HOME/java

但不知何故它没有排除。Solaris 上的 tar 版本不支持按名称排除。

答案1

 tar -cvf java.tar --exclude="*.class" $HOME/java

来自以下man页面:

--exclude pattern

    Do not process files or directories that match the specified pattern.  
    Note that exclusions take precedence over patterns or filenames 
    specified on the command line.

答案2

对于 Solaris 版本的 tar,您的语法完全正确,事实上,我刚刚以 root 和非 root 用户身份在 Solaris 8 和 10 上尝试过它。

你确定它没有排除它吗?在详细模式 -v 选项中,排除的文件仍会列出,并且最后一个字段显示“排除”,而不是大小。

有错误信息吗?如果找不到或读取排除文件,它会这样说……

 tar c[BDeEFhilnopPqTvw@[0-7]][bfk][X...] [blocksize]
     [tarfile] [size] [exclude-file]...
     {file | -I include-file | -C directory file}...

答案3

Tar 有一个选项可以根据名称模式排除文件。请尝试一下这个。

如果要使用排除文件,请确保路径(即tar输出的路径和文件中的路径)完全相同。因此,虽然“a//b”与命令行上的“a/b”相同,但对于 来说却是不同的tar

答案4

请注意,如果您需要关心相对路径。

因此您需要./fileToExcludeExclude文件中使用 – 而不是完整路径文件名。

相关内容