Wie verwende ich den Befehl Unix tar mit einem impliziten Dateipfad?

9

Ich benutze den tar -xvfBefehl und er nimmt den expliziten Pfad. Der Pfad ist jedoch voll.
Beispiel:

tar -xvf 13.2.tar

Es wird den Weg des /mntOrdners. Der /Ordner ist voll.

Wie kann ich die Datei mit dem impliziten Pfad tarieren?

Anthon
quelle
Sie sollten klar erläutern, was genau vor sich geht, da Ihre derzeitige Art, die Frage zu stellen, selbst die raffinierteste Kristallkugel leicht verschwommen erscheinen lässt.

Antworten:

2

Benötigt normalerweise tardie Option --absolute-namesoder --absolute-paths, um den Stammteil '/'beim Erstellen eines Archivs beizubehalten . Auch wenn Sie es auf diese Weise zu erzwingen, überspringt der Extrakt der führende '/'zu.


Wenn Sie jedoch ein Archiv mit dem führenden haben '/'und es beim Extrahieren nicht überspringt, sollte die Antwort von NoahD in dieser Form funktionieren.

pax -r -s ',/mnt,/new/path,' -v -f 13.2.tar

Ich denke, verarbeitet paxkeine komprimierten Dateien, so dass Sie nach dem Dekomprimieren in leiten müssen pax.
Das würde so gehen (vorausgesetzt, Sie haben ein gezipptes Archiv)

gunzip -c 13.2.tar.gz | pax -r -s ',/mnt,/new/path,' -v

Ich habe diese Wiki-Seite gerade bei Google gefunden.

nik
quelle
2

Der Unterschied zwischen der Verwendung von kanonisch (auch bekannt als explizit) und relativ (was Sie wahrscheinlich als implizit bezeichnen) besteht darin, ob Sie /am Anfang ein verwenden.

Wenn sich beispielsweise das aktuelle Arbeitsverzeichnis befindet /usr/home/bob, haben die folgenden Befehle genau den gleichen Effekt

tar -xvf foo.tar *
tar -xvf ./foo.tar *
tar -xvf ./foo.tar ./*
tar -xvf /usr/home/bob/foo.tar *
tar -xvf /usr/home/bob/foo.tar ./*
tar -xvf /usr/home/bob/foo.tar / usr / home / bob / *

Aber ich vermute, dass dies nicht wirklich Ihre Frage ist. Es scheint eher so, als müssten Sie die Festplattennutzung ermitteln und ein Verzeichnis suchen, das nicht voll ist. Dies kann mit dem dfBefehl erfolgen.

df -k # space on disk in kilobytes
df -m # as above, but in meg
df -g # as above, but in gig

Und Sie können mountdamit anzeigen, welche Dateisysteme auf welchen Geräten bereitgestellt werden.

Anthon
quelle
0

So erstellen Sie eine TAR-Datei mit einem relativen Pfad:

cd /parent/of/dir/to/tar
tar cvf subdir.tar subdir

Verwenden Sie den Schalter -C (Großbuchstabe C), um einen Teer in ein anderes Verzeichnis als das aktuelle Arbeitsverzeichnis zu entpacken.

Wenn Sie eine Datei mit absoluten Pfadnamen bis zu einem anderen Punkt als root entpacken möchten, müssen Sie möglicherweise damit herumspielen chroot(1).

robc
quelle
0

Ich glaube, dass Pax den Trick machen wird

pax -r -s, / mnt, / gooddir, -f 13.2.tar

Sie sollten in einem neuen Stammverzeichnis ersetzen können.

Anthon
quelle