Antworten:
Von man tar
:
-C directory
In c and r mode, this changes the directory before adding the
following files. In x mode, change directories after opening the
archive but before extracting entries from the archive.
dh tar xC /foo/bar -f /tmp/foo.tar.gz
sollte den Job machen. (unter FreeBSD, aber in dieser Hinsicht ist GNU tar im Grunde dasselbe, siehe "Ändern des Arbeitsverzeichnisses" in seinem Handbuch )
Tun:
(cd foo/bar ; tar xf /tmp/foo.tar.gz )
würde den Job machen.
Grundsätzlich wird eine neue Shell (die Klammern) erzeugt. Wechseln Sie in dieser Subshell in das Verzeichnis foo/bar
und entpacken Sie die Datei.
Sie können das ändern , ;
indem ein &&
sicher , dass das sein cd
funktioniert gut.
tar -xf ancd.tar.gz my/name/file
Sie können den Dateinamen mit ./file
after tar file angeben.
tar -xf ancd.tar.gz ./my/name/file
Wenn es funktioniert, bedeutet dies, dass Sie einen Teer mit erstellt haben ./
. Verwenden Sie den Befehl less, um den Inhalt von tar zu sehen.
less ...tar.file
Ich bin auf ein ähnliches Problem gestoßen und habe es gelöst.
Das Problem lag eher in der Dateierstellung als in der erstellten Datei.
Beim Versuch, eine Datei in Verzeichnis A zu tarieren und zu übertragen, habe ich den Pfad zur Originaldatei im Befehl tar angegeben
tar -cvf MyFile.tar /foo/bar/dir/not/needed/path/*
Was ich tun konnte, um zu lösen, ist
cd /foo/bar/dir/not/needed/
tar -cvf /tmp/MyFile.tar path*
Beim Übertragen und Extrahieren des Tarballs werden die erforderlichen Unterverzeichnisse erstellt.
tar -xvf MyFile.tar