Das geht nicht:
tar xf /tmp/foo.tar.gz foo/bar
tar: foo/bar: Not found in archive
Mir ist nicht klar, was dies tun würde, außer es zu extrahieren und die Dateien zu verschieben.
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 )
wenn Sie an anderer Stelle nur ein tar - Archiv extrahieren cd in das Zielverzeichnis und entpacken Sie es dort:
Der Befehl, den Sie verwendet haben, durchsucht die Datei
foo/bar
im Archiv und extrahiert sie.quelle
Tun:
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 seincd
funktioniert gut.quelle
Sie können den Dateinamen mit
./file
after tar file angeben.Wenn es funktioniert, bedeutet dies, dass Sie einen Teer mit erstellt haben
./
. Verwenden Sie den Befehl less, um den Inhalt von tar zu sehen.quelle
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
Was ich tun konnte, um zu lösen, ist
Beim Übertragen und Extrahieren des Tarballs werden die erforderlichen Unterverzeichnisse erstellt.
quelle
Ändern Sie das Verzeichnis, in das Sie extrahieren möchten
Wenn Speicherort der Extraktdatei unter /u01/backup.tar dann
Extrahieren Sie wie folgt:
quelle
Der Befehl:
tar -xzvf foo.tar.gz -C /home/user/bar/
extrahiert die Eingabedatei "foo.tar.gz" in das Verzeichnis
/home/user/bar
, während die verarbeiteten Dateien gedruckt werden.quelle