
Wenn ich die Dateistruktur
dir/
dir/.ignore
dir/file.ext
dir/subdir/
dir/subdir/other_file.ext
wobei dir/.ignore
eine 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.tgz
enthält , aber nicht .dir/.ignore
dir/subdir/other_file.ext
dir/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.ext
nicht 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/.ignore
wird trotzdem angewendet dir/subdir
?
Um das Offensichtliche vorweg zu nehmen: Nein, da ist nicht versehentlich auch ein „ .ignore
in“ dabei.dir/subdir/
Antwort1
Wahrscheinlich ein Fehler,bereits begegnet.
Ich habe diese
--exclude-ignore
Option gefunden und--exclude-vcs-ignores
mit.cvsignore
„rekursiv handeln“ bestätigt, was dem Handbuch widerspricht.
Offenbar noch nicht behoben.
Nun berichtete auchin ihrem Bugtracker