Wie erstelle ich ein Tar-Archiv in einem anderen Verzeichnis?

38

Ich möchte ein tar-Archiv in einem anderen Verzeichnis als dem aktuellen Verzeichnis erstellen.

Ich habe diesen Befehl ausprobiert:

tar czf file.tar.gz file1 -C /var/www/

Es wird jedoch das Archiv im aktuellen Verzeichnis erstellt. Warum?

Omid
quelle
3
Sie scheinen die Bedeutung von falsch verstanden zu haben -C(was nicht ungewöhnlich ist, da es vage dokumentiert ist). Einzelheiten finden Sie unter serverfault.com/q/416002/86283 .
NN

Antworten:

47

Die einfache Lösung, wenn Sie vor allem nicht brauchen zu verwenden -Czu sagen , tarum ein anderen Verzeichnis zu ändern, ist einfach , um den vollständigen Pfad zum Archiv auf der Befehlszeile angeben. Dann können Sie sich in einem beliebigen Verzeichnis befinden, um die gewünschte Verzeichnisstruktur im Archiv zu erstellen.

Im Folgenden wird das Archiv erstellt /var/www/file.tar.gzund file1aus dem aktuellen Verzeichnis (unabhängig davon, was gerade passiert) ohne Informationen zum Pfad im Archiv abgelegt .

tar czf /var/www/file.tar.gz file1

Der Pfad (entweder zum Archiv, zu den einzelnen Dateien oder zu beiden) kann natürlich auch relativ sein. Wenn file1in ist /tmp, sind Sie in /var/spoolund wollen das Archiv schaffen , in /var/www, Sie so etwas wie verwenden:

tar czf ../www/file1.tar.gz /tmp/file1

Es gibt eine Million Variationen des Themas, aber dies sollte Ihnen den Einstieg erleichtern. Fügen Sie die vFlagge hinzu, wenn Sie sehen möchten, was tartatsächlich geschieht.

ein CVn
quelle
1
Sie können auch einen relativen Pfad verwenden.
NN
@NN Absolut, aber da wir keine Ahnung haben, was $PWDist, schien es am sichersten, im Beispiel einen absoluten Pfad zu verwenden.
ein Lebenslauf
Tatsächlich habe ich nur gedacht, dass es Sinn macht, dies zu berücksichtigen, um zu zeigen, dass es sich um eine verfügbare Option zur Lösung des Problems handelt.
NN
Auf diese Weise wird der Pfad file1im Tar-Archiv sein /tmp. Dies kann oder kann nicht das sein, was Sie erwarten.
Mouviciel
8

Ich verwandle die komprimierten Daten in einen Stream (-) und benenne sie leicht um und finde sie (>), wo immer ich will

tar -cvf - ./dir-to-compress/* > /location-of-new-file/filename.tar
David King
quelle
Das hilft nicht bei einzelnen Dateien und -Cist viel idiomatischer (und kürzer).
Mahmoud Al-Qudsi
3

Ich denke, es sollte sein:
tar czf file.tar.gz -C /var/www/ file1

Welches funktioniert für mich. Es fordert Sie auf, das Verzeichnis zu wechseln und dann die Datei auszuwählen.

user2039152
quelle
-2

Hat perfekt funktioniert

cd /home; tar -czvf - /var/log/* > varlog.tar.gz
Myhera
quelle