tar --exclude不排除。为什么?
我在bash脚本中有这条非常简单的行,该脚本可以成功执行(即生成_data.tar文件),除了它不排除通过--exclude选项告知其被排除的子目录外: /bin/tar -cf /home/_data.tar --exclude='/data/sub1/*' --exclude='/data/sub2/*' --exclude='/data/sub3/*' --exclude='/data/sub4/*' --exclude='/data/sub5/*' /data 相反,它将生成一个_data.tar文件,其中包含/ data下的所有内容,包括我要排除的子目录中的文件。 知道为什么吗?以及如何解决这个问题? 更新我根据下面第一个答案中提供的链接实现了我的观察(首先是顶层目录,最后一个排除后没有空格): /bin/tar -cf /home/_data.tar /data --exclude='/data/sub1/*' --exclude='/data/sub2/*' --exclude='/data/sub3/*' --exclude='/data/sub4/*' --exclude='/data/sub5/*' 但这没有帮助。所有“排除的”子目录都存在于结果_data.tar文件中。 这令人困惑。无论这是当前tar中的错误(CentOS 6.2,Linux 2.6.32上的GNU tar 1.23)还是tar对空白和其他易于忽略的错别字的“极端敏感性”,我都认为这是一个错误。目前。 这太可怕了:我尝试了以下建议的见解(无尾随/*),但在生产脚本中仍然无效: /bin/tar -cf /home/_data.tar /data --exclude='/data/sub1' --exclude='/data/sub2' --exclude='/data/sub3' --exclude='/data/sub4' 除了引号和2个空格(而不是1),我看不到尝试和@Richard Perrin尝试的内容之间的任何区别。我将尝试这种方式(必须等待每晚运行的脚本作为要备份的目录)数量庞大)并进行报告。 /bin/tar -cf /home/_data.tar /data --exclude=/data/sub1 --exclude=/data/sub2 --exclude=/data/sub3 --exclude=/data/sub4 我开始认为所有这些tar --exclude敏感性不是焦油的而是环境中的某种东西,但是那又会是什么呢? …