Verhalten von tar --exclude-ignore nicht wie erwartet

Verhalten von tar --exclude-ignore nicht wie erwartet

Wenn ich die Dateistruktur

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

wobei dir/.ignoreeine Zeile enthält, *.ext, dann würde ich den Befehl erwarten

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

um ein Ergebnis zu erhalten, das und dir.tgzenthält , aber nicht .dir/.ignoredir/subdir/other_file.extdir/file.ext

Wenn Sie diesen Befehl jedoch mit GNU Tar Version 1.34 (wie in Ubuntu 22.04 enthalten) ausführen, erhalten Sie Folgendes:

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

ist also dir/subdir/other_file.extnicht darin enthalten dir.tgz.

Auf der Manpage steht:

  --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.

und die konkrete Alternative

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

Aber das Ausschlussmuster dir/.ignorewird trotzdem angewendet dir/subdir?

Um das Offensichtliche vorweg zu nehmen: Nein, da ist nicht versehentlich auch ein „ .ignorein“ dabei.dir/subdir/

Antwort1

Wahrscheinlich ein Fehler,bereits begegnet.

Ich habe diese --exclude-ignoreOption gefunden und --exclude-vcs-ignoresmit .cvsignore„rekursiv handeln“ bestätigt, was dem Handbuch widerspricht.

Offenbar noch nicht behoben.

Nun berichtete auchin ihrem Bugtracker

verwandte Informationen