Gibt es eine Möglichkeit zur Ausführung?
tar cjvf foo.tar.bz2 project-root
Wenn der Tarball extrahiert wird, wird er nicht in Project-Root extrahiert, sondern in etwas anderes? dh
tar xjvf foo.tar.bz2
cd something-else
# see all files that were within original project-root
Ich bin mir von -C bewusst, aber ich möchte es so, dass etwas anderes noch nicht existiert.
tar
des Geltungsbereichs (weshalb es keine Option dafür gibt). Wenn Sie ein Projekt haben und eine Punktfreigabe vornehmen möchten, verwenden Sie im Allgemeinen Ihre Versionskontrolltools, um bestimmte Versionen bestimmter Dateien als Projekt v0.1 oder v0.2 usw. festzulegen, und überprüfen Sie dann die v0.1-Dateien auf ein neues Verzeichnis Projekt-0.1 , tar dieses Verzeichnis und tahdaaaah, fertig.Antworten:
Erstellen Sie zuerst einen Symlink und lassen Sie den Teer folgen.
Das
/*
ist notwendig, um dem Link zu folgen und alle Inhalte auszuwählen, anstatt nur den Symlink selbst zu teern. Sie können alternativ die-h
Option auf GNU tar (aber dies folgt auch Links im Inneren, die Sie möglicherweise nicht möchten) oder dieH
Option auf BSD tar (wie auf einem Mac) verwenden.Sie können dies sogar innerhalb von project-root tun:
Sofern Sie dies nicht ausdrücklich ausschließen (wie oben), ist der Symlink auch im Tarball vorhanden.
Wenn Sie dies häufig tun und den herumhängenden Symlink nicht stören, muss er natürlich nicht jedes Mal gelöscht und neu erstellt werden.
quelle
Sie können Project-Root innerhalb des Tarballs mit der 7-Zip-GUI (und wahrscheinlich auch anderen Archivierungsprogrammen) umbenennen. Dies kann jedoch einen vollständigen Dekomprimierungs- / Rekomprimierungszyklus für komprimierte Tarballs durchführen. (Lesen Sie: Dies kann bei großen, stark komprimierten Tarballs eine Weile dauern.)
Der beste Weg, um das zu tun, was Sie wollen, besteht darin, den Namen zu ändern, bevor Sie den Tarball erstellen. Eine einfache Möglichkeit wäre, die Projektwurzel vorübergehend in etwas anderes umzubenennen :
Ich würde wahrscheinlich etwas komplizierter werden: Machen Sie eine Kopie mit dem Namen, den ich im Tarball haben möchte. Dies vermeidet potenzielle Fehler oder verpasste Schritte in einem späteren Fix-it-up-Prozess, und ich möchte möglicherweise beide Kopien für andere Zwecke aufbewahren.
quelle
cp -a project-root something-else
" tun . Ich greife einfach automatisch nach dem "Teer cf -". Einzeiler, wenn ich Verzeichnisbäume kopieren muss. Ich benutze es so lange, dass ich mich nicht erinnern kann, warum - könnte etwas damit zu tun haben, dass ich nicht alle Optionen verstanden habecp
. Der Einzeiler ist so kompliziert, dass ichtar cf . -
tar -cf - .
Sache mit der Datenübertragung zwischen Maschinen? von der Arttar cf - . | rsh dest.foo.net 'cd /dest/dir && tar xf -'
?