GNU
tar
verfügt über eine-C
(oder--directory
) Option, die Sie verwenden können. Zum Beispieltar -C /opt -x -z -f /tmp/my_file.tar.gz
oder
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
~/
, dascd
betrifft nur die Subshell. Dieser Ansatz ist nützlich für Befehle und Dienstprogramme, denen eine-C
Option 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/passwd
oder 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.