tar --exclude-ignore의 동작이 예상과 다릅니다.

tar --exclude-ignore의 동작이 예상과 다릅니다.

파일 구조가 있는 경우

dir/
dir/.ignore
dir/file.ext
dir/subdir/
dir/subdir/other_file.ext

여기에 dir/.ignore한 줄이 포함되어 있으면 *.ext다음 명령이 필요합니다.

$ tar -czvf dir.tgz --exclude-ignore=.ignore dir

및 이 dir.tgz포함되어 있지만 포함되지 않은 가 생성됩니다 .dir/.ignoredir/subdir/other_file.extdir/file.ext

그러나 GNU tar 버전 1.34(Ubuntu 22.04에 포함됨)를 사용하여 해당 명령을 실행하면 다음이 제공됩니다.

$ tar -czvf dir.tgz --exclude-ignore=.ignore dir
dir/
dir/subdir/
dir/.ignore

그래서 dir/subdir/other_file.ext에는 포함되지 않습니다 dir.tgz.

매뉴얼 페이지에는 다음과 같이 나와 있습니다.

  --exclude-ignore=FILE
         Before dumping a directory, see if it contains FILE.  If so, read exclusion
         patterns from this file. The patterns affect only the directory itself.

그리고 구체적인 대안

  --exclude-ignore-recursive=FILE
         Same as --exclude-ignore, except that patterns from FILE affect both the 
         directory and all its subdirectories.

그런데 어쨌든 의 제외 패턴이 dir/.ignore적용됩니까 dir/subdir?

명백한 것을 선점하려면: 아니요, 실수로 .ignorein dir/subdir/도 발생하지 않습니다.

답변1

아마도 버그일 겁니다.이미 마주친.

나는 그 --exclude-ignore옵션을 발견했고 재귀적 --exclude-vcs-ignores으로 .cvsignore행동했는데, 이는 매뉴얼과 모순됩니다.

아직 수정되지 않은 것 같습니다.

지금도 보고됨그들의 버그 추적기에서

관련 정보