
Ordnerstruktur:
etc (dir)
deploy (dir)
src (dir)
config (dir)
dist
├- config (dir)
├- index.js
Ich möchte alles außer dem Stammordner „config“ packen und in einem Tar-Archiv ablegen deploy
. Es ist wichtig, dass der dist/config
Ordner in der Ausgabe vorhanden ist. Begonnen mit:
tar -czf deploy/deploy.gz --exclude=deploy --exclude="./config/" ./*
$ l ./deploy/deploy0/dist
index.js
router.js
test
Das führt jedoch zu einem fehlenden dist/config
. Ich kann es nur erreichen, dist/config
wenn ich nicht versuche, etwas mit dem Namen config auszuschließen:
tar -czf deploy/deploy.gz --exclude=deploy ./*
$ l ./deploy/deploy1/dist
config
index.js
router.js
test
OSX und CentOS (Entwicklung und Build). Der Mann fürTeerlässt mich glauben, dass das nicht möglich ist.
Ich habe dies umgangen, indem ich einfach nicht benötigte Ordner gelöscht habe, da dies eine Build-Umgebung ist und die Dateien entbehrlich sind.
Antwort1
Sie könnten find
zur Erstellung Ihrer Argumente Folgendes verwenden (ist allerdings etwas langatmig):
find -mindepth 1 ! -wholename './config' ! -wholename './config/*'
mindepth 1
auszuschließen .
, und zwei wholename
Ausschlüsse für das Verzeichnis selbst sowie dessen Inhalt.
tar -xzf deploy/deploy.gz --exclude="deploy" \
$( find -mindepth 1 ! -wholename './config' ! -wholename './config/*' )
Antwort2
Die Verwendung eines Punktverweises auf das aktuelle Verzeichnis als Archivstamm ist ein Anker:
tar --exclude='./deploy' --exclude='./config' -cvf deploy/deploy.tar .
Wenn Sie jedoch einen Verzeichnisnamen oder ein Platzhalterzeichen verwenden, --anchored
hilft Ihnen das Flag weiter:
tar --anchored --exclude=deploy --exclude=config -cvf deploy/deploy.tar *
Antwort3
--exclude
Stellen Sie sicher, dass Sie Optionen vor den Quell- und Zielargumenten angeben .
tar --exclude=deploy --exclude="./config" -cvz deploy/deploy.gz .
Antwort4
Sie können ./
am Anfang Ihrer ausgeschlossenen Dateien Markierungen verwenden.
Ich verwende es folgendermaßen:
tar --exclude='./build.tar.gz' --exclude='./config' -czf build.tar.gz .