Entpacken der Datei in das Verzeichnis mit tar, während sich die Shell anderswo befindet

380
Karl Morrison

Ich dachte, dies wäre eine einfache Frage, die ich beantworten sollte, aber überall, wo ich dran bin, erwartet jeder, dass sich der tar im selben Verzeichnis wie die Shell befindet.

Meine Datei befindet sich:

/tmp/my_file.tar.gz 

Ich möchte es in das folgende Verzeichnis entpacken:

/opt/ 

Meine Shell befindet sich derzeit unter:

~/ 
0

1 Antwort auf die Frage

4
RedGrittyBrick
  1. GNU tarverfügt über eine -C(oder --directory) Option, die Sie verwenden können. Zum Beispiel

    tar -C /opt -x -z -f /tmp/my_file.tar.gz 

    oder

  2. Sie können eine einfache Subshell verwenden. Zum Beispiel

    (cd /opt; tar -xvzf /tmp/my_file.tar.gz) 

    Danach ist Ihr aktuelles Verzeichnis noch vorhanden ~/, das cdbetrifft nur die Subshell. Dieser Ansatz ist nützlich für Befehle und Dienstprogramme, denen eine -COption oder ein gleichwertiges Element fehlt .

Beachten Sie, dass Sie sicherstellen müssen, dass die in der TAR-Datei gespeicherten Pfade relative Pfade und keine absoluten Pfade sind . Dies wird durch den Befehl zum Erstellen der TAR-Datei bestimmt. Sie können dies anhand tar -tzf ...des ersten Zeichens der Pfade überprüfen und prüfen (z. B. /foo/...ist ein absoluter Pfad foo/...oder ./foo/...relativ). Seien Sie besonders vorsichtig, wenn Sie dies als root ausführen. Sie wären in einer Welt voller Schmerzen, wenn irgendwo in einer langen Liste von relativen Pfaden ein /etc/passwdoder schlechteres steht. Aber siehe GNU tar -P-Option - dies ist möglicherweise kein Problem auf Ihrer spezifischen Plattform. Ich würde sorgfältig prüfen, bevor ich fortfahre.