Default-Restore von tar
Wenn ich in einer Pipe mit "tar xf -" von einem File auf die HD zurücksichere wird immer in das Homeverzeichnis zurückgeschrieben, auch wenn ich mich zB in "~/Documents" befinde. Wie kriege ich tar dazu in ein beliebiges Verzeichnis zu schreiben (Rechte vorausgesetzt)? Al
Am Mittwoch 25 Februar 2004 23:25 schrieb Al Bogner:
Wenn ich in einer Pipe mit "tar xf -" von einem File auf die HD zurücksichere wird immer in das Homeverzeichnis zurückgeschrieben, auch wenn ich mich zB in "~/Documents" befinde. Wie kriege ich tar dazu in ein beliebiges Verzeichnis zu schreiben (Rechte vorausgesetzt)?
man tar: -O entpackt in die Standardausgabe, der Rest ist dann deine Aufgabe (über die Pipe) Wahrscheinlich hast du das Archiv mit absoluten Pfadangaben erstellt ('/' am Anfang der Pfadangabe wurde nicht entfernt). -- Gruß MaxX 8-)
Am Donnerstag, 26. Februar 2004 07:09 schrieb Matthias Houdek:
Am Mittwoch 25 Februar 2004 23:25 schrieb Al Bogner:
Wenn ich in einer Pipe mit "tar xf -" von einem File auf die HD zurücksichere wird immer in das Homeverzeichnis zurückgeschrieben, auch wenn ich mich zB in "~/Documents" befinde. Wie kriege ich tar dazu in ein beliebiges Verzeichnis zu schreiben (Rechte vorausgesetzt)?
man tar:
-O entpackt in die Standardausgabe, der Rest ist dann deine Aufgabe (über die Pipe)
Wahrscheinlich hast du das Archiv mit absoluten Pfadangaben erstellt ('/' am Anfang der Pfadangabe wurde nicht entfernt).
tar -cvzf "$DATEI" "$QUELLVERZEICHNIS" .. tar: Removing leading `/' from member names gzip -cd $2 | tar xf - -P kommt da also nicht vor. Gzip gibt also nach stdout aus und tar nimmt das an, sonst würde ich im Home-Verzeichnis ja auch keine Datei erhalten. Wie kann ich aber nun --to-stdout für die Ausgabe nutzen, wenn von dort schon gelesen wird? Im o.a gzip Beispiel ist das Problem vereinfacht dargestellt, wo ich aber auch schon keine Lösung finde. Jedenfalls muß das Archiv über stdout gelesen werden. Ziel ist es, dass eine Datei in dem Verzeichnis geschrieben wird, in dem das Script aufgerufen wird. Al
Al Bogner, Donnerstag 26 Februar 2004 18:49:
Am Donnerstag, 26. Februar 2004 07:09 schrieb Matthias Houdek:
Am Mittwoch 25 Februar 2004 23:25 schrieb Al Bogner:
Wenn ich in einer Pipe mit "tar xf -" von einem File auf die HD zurücksichere wird immer in das Homeverzeichnis zurückgeschrieben, auch wenn ich mich zB in "~/Documents" befinde. Wie kriege ich tar dazu in ein beliebiges Verzeichnis zu schreiben (Rechte vorausgesetzt)?
man tar:
-O entpackt in die Standardausgabe, der Rest ist dann deine Aufgabe (über die Pipe)
Wahrscheinlich hast du das Archiv mit absoluten Pfadangaben erstellt ('/' am Anfang der Pfadangabe wurde nicht entfernt).
tar -cvzf "$DATEI" "$QUELLVERZEICHNIS" .. tar: Removing leading `/' from member names
Jepp, das ist korrekt so. Daran lag es also nicht.
gzip -cd $2 | tar xf -
-P kommt da also nicht vor.
Gzip gibt also nach stdout aus und tar nimmt das an, sonst würde ich im Home-Verzeichnis ja auch keine Datei erhalten.
Wie kann ich aber nun --to-stdout für die Ausgabe nutzen, wenn von dort schon gelesen wird?
Im o.a gzip Beispiel ist das Problem vereinfacht dargestellt, wo ich aber auch schon keine Lösung finde. Jedenfalls muß das Archiv über stdout gelesen werden.
Ziel ist es, dass eine Datei in dem Verzeichnis geschrieben wird, in dem das Script aufgerufen wird.
Ähm, verstehe ich dich jetzt richtig (nur zur Kontrolle): Du möchstest aus einem gezippten tar-ball eine einzelne Datei extrahieren, und zwar genau in das Verzeichnis, aus dem heraus du den Befehl (das Script) aufrufst. -- Gruß MaxX 8-) Hinweis: PMs an diese Adresse funktionieren nicht (mehr)!
Am Donnerstag, 26. Februar 2004 20:41 schrieb Matthias Houdek:
Jepp, das ist korrekt so. Daran lag es also nicht.
Ich habe die genannte Syntax gerade am Telefon mit einem Freund durchprobiert und bei ihm wird in dem Verzeichnis entpackt, in dem der Befehl aufgerufen wird, bei mir wurde immer im Home-Verzeichnis entpackt, über das ich mich nur mehr wunderte
Ähm, verstehe ich dich jetzt richtig (nur zur Kontrolle):
Du möchstest aus einem gezippten tar-ball eine einzelne Datei extrahieren, und zwar genau in das Verzeichnis, aus dem heraus du den Befehl (das Script) aufrufst.
Nein, ich meine es anders. Ich wollte eben ein Beispiel mit Testdaten posten und nun passiert das was ich möchte. Ich weiß aber noch nicht warum es mit den ursprünglichen Daten nicht funktionierte. Ich möchte folgendes machen tar -cvzf test.tgz /home/ab/Documents/ Diese test.tgz wird auf einen anderen Rechner kopiert. Dort befindet sie sich zB in /tmp Der Befehl gzip -cd /tmp/test.gz | tar xf - wird in /tmp2 aufgerufen. Danach sollte es in /tmp2 ein /tmp2/home/ab/Documents geben, was eben gerade funktioniert hat, vorher aber nicht. Ich muß da noch intensiver testen, was da los ist/war. Meine Frage nun ist, wie müßte der Befehl aussehen, wenn man in /tmp2 den Befehl aufruft und man als Ergebnis /tmp3/home/ab/Documents haben möchte? Es gibt also dann 3 unterschiedliche Pfade. Vermutlich ist tar -O anzuwenden und dann die Ausgabe umzuleiten, aber ich habe es noch nicht so geschafft. Vielleicht liegt es auch daran, dass irgendtwas verstellt ist. Bitte also die korrekte Syntax für o.a. Beispiel posten, damit ich testen kann, ob es am Befehl oder an etwas anderem liegt. Mist, gerade habe ich nochmal getestet und nun ist es wieder in /home gelandet. Entweder mein Script macht da Unsinn oder gpg verändert da eine Variable. Im Script mache ich ja auch nichts anderes als auf der Konsole. Al
Am Donnerstag, 26. Februar 2004 22:09 schrieb Al Bogner: [...]
Ich möchte folgendes machen
tar -cvzf test.tgz /home/ab/Documents/
Dann findest Du normalerweise eine Meldung vor: tar: Entferne führende `/' von Archivnamen. Damit stellt GNU-tar (und AFAIK nur der) sicher, dass die Pfadinformationen relativ und nicht absolut im Archiv vorliegen. Das ist IMHO Standard beim GNU tar, aber dieses Verhalten ist nicht portabel! Auf anderen Systemen speichert tar die Pfade so wie sie ihm übergeben wurden. Mit relativen Pfaden findest Du im Archiv folgende Pfadinformationen (als Beispiel) bei einem tar -tvzf /pfad/zum/archiv: drwxr-xr-x jan/users 0 2004-02-26 01:52:42 home/jan/du_tree/ Du siehst, dass der Pfad nicht mit / beginnt - also würde er auch immer relativ zu dem Verzeichnis entpackt werden, in dem man beim Aufruf von tar -xvzf /pfad/zum/archiv steht. Wenn ein Archiv absolute Pfadnamen enthält (das kann man beim GNU tar mit der Option -P erzwingen), dann sieht die tar -tvzf Ausgabe so aus (Beispiel): drwxr-xr-x jan/users 0 2004-02-26 01:52:42 /home/jan/du_tree/ Wenn Du dieses Archiv entpackst, werden die Dateien immer - wegen der absoluten Pfadangabe - im gleichen Pfad wie beim Archiv-Erstellen entpackt. Der sicherste Weg, um ein unabhängig von eventuellen Standardeinstellungen funktionierendes Archiv mit relativen Pfaden herzustellen ist: cd /pfad/zum/quellverzeichnis tar cvzf /pfad/zum/archiv . Dann kannst Du sie immer auf dem Zielrechner entpacken mit: cd /pfad/zum/zielverzeichnis tar xvzf /pfad/zum/archiv Jan
Al Bogner, Donnerstag 26 Februar 2004 22:09:
Am Donnerstag, 26. Februar 2004 20:41 schrieb Matthias Houdek:
Jepp, das ist korrekt so. Daran lag es also nicht.
Ich habe die genannte Syntax gerade am Telefon mit einem Freund durchprobiert und bei ihm wird in dem Verzeichnis entpackt, in dem der Befehl aufgerufen wird, bei mir wurde immer im Home-Verzeichnis entpackt, über das ich mich nur mehr wunderte
Gibt es evtl. sowas wie eine tar.conf, in der man die Defaults setzen kann? Kennt tar sowas? Sieht verdammt danach aus.
Ähm, verstehe ich dich jetzt richtig (nur zur Kontrolle):
Du möchstest aus einem gezippten tar-ball eine einzelne Datei extrahieren, und zwar genau in das Verzeichnis, aus dem heraus du den Befehl (das Script) aufrufst.
Nein, ich meine es anders. Ich wollte eben ein Beispiel mit Testdaten posten und nun passiert das was ich möchte. Ich weiß aber noch nicht warum es mit den ursprünglichen Daten nicht funktionierte.
Ich möchte folgendes machen
tar -cvzf test.tgz /home/ab/Documents/
Diese test.tgz wird auf einen anderen Rechner kopiert. Dort befindet sie sich zB in /tmp
Der Befehl gzip -cd /tmp/test.gz | tar xf - wird in /tmp2 aufgerufen. Danach sollte es in /tmp2 ein /tmp2/home/ab/Documents geben, was eben gerade funktioniert hat, vorher aber nicht. Ich muß da noch intensiver testen, was da los ist/war.
Warum unzipst du gesondert? tar -xzf /tmp/test.tgz sollte auch ausreichen.
Meine Frage nun ist, wie müßte der Befehl aussehen, wenn man in /tmp2 den Befehl aufruft und man als Ergebnis /tmp3/home/ab/Documents haben möchte?
Es gibt also dann 3 unterschiedliche Pfade. Vermutlich ist tar -O anzuwenden und dann die Ausgabe umzuleiten, aber ich habe es noch nicht so geschafft.
aus 'man tar': -C, --directory=VERZEICHNIS zu VERZEICHNIS wechseln also: /tmp2 # tar -xzf /tmp/test.tgz -C /temp3 -- Gruß MaxX 8-) Hinweis: PMs an diese Adresse funktionieren nicht (mehr)!
*** Al Bogner (suse-linux@ml04q1.pinguin.uni.cc) schrieb am Feb 26, 2004 in...:
[...] Ich möchte folgendes machen
tar -cvzf test.tgz /home/ab/Documents/
Solange wir über gnutar schreiben, brauchst Du den dash davor nicht.
[...] Der Befehl gzip -cd /tmp/test.gz | tar xf - wird in /tmp2 aufgerufen. Danach sollte es in /tmp2 ein /tmp2/home/ab/Documents geben, was eben gerade funktioniert hat, [...]
Solange wir über gnutar sprechen: tar xzCf /tmp2 /tmp/test.tgz
[...] vorher aber nicht. Ich muß da noch intensiver testen, was da los ist/war.
Wie geschrieben: Vermutlich ist die Option "-P" reingerutscht.
Meine Frage nun ist, wie müßte der Befehl aussehen, wenn man in /tmp2 den Befehl aufruft und man als Ergebnis /tmp3/home/ab/Documents haben möchte?
Solange "/tmp3" schon vorhanden ist: Siehe oben.
Es gibt also dann 3 unterschiedliche Pfade. Vermutlich ist tar -O anzuwenden und dann die Ausgabe umzuleiten, aber ich habe es noch nicht so geschafft.
Al, Du solltest Dich mal ganz dringend einen Tag an Deinen Rechner setzen und mir "tar" experimentieren. Bitte belaste die Liste mit solch einfachen Problemen nur dann, wenn Du wirklich nichtmehr weiter kommst!
Vielleicht liegt es auch daran, dass irgendtwas verstellt ist. Bitte also die korrekte Syntax für o.a. Beispiel posten, damit ich testen kann, ob es am Befehl oder an etwas anderem liegt.
Du hast eine History! Ich hoffe, Du hast sie ordentlich groß einge- stellt. Schau Dir an, was Di gemacht hast. Ich gehe davon aus, dass Du dann herausbekommst, woran es gelegen hat.
Mist, gerade habe ich nochmal getestet und nun ist es wieder in /home gelandet. Entweder mein Script macht da Unsinn oder gpg verändert da eine Variable.
Unsinn! gnutar verwendet im wesentlichen AFAIK nur die Environment- Variable "TAPE", in der das per Default zu verwendende "Archiv-File" stehen soll. Unter Linux "/dev/st0" oder "/dev/nst0". Dann gibt es noch die Variable "TAR_OPTIONS", die aber SuSE AFAIK nirgendwo setzt.
Im Script mache ich ja auch nichts anderes als auf der Konsole.
Hmpf :)...
[...]
MfG Henning Hucke -- Universum 21/19, Ablaufdatum: 18.6.30678437902
Am Freitag, 27. Februar 2004 16:36 schrieb Henning Hucke:
*** Al Bogner (suse-linux@ml04q1.pinguin.uni.cc) schrieb am Feb 26, 2004 in...:
Wie geschrieben: Vermutlich ist die Option "-P" reingerutscht.
Nein und so wie ich -P verstehe, gibt es dann auch keinen Grund ein "var" unter "home" zu schreiben. Die Lösung war eine ganz andere. Es lag nicht an meinem falschem tar-Verständnis, sondern an einem ganz simplen "cd ~/" beim Aufruf eines Subscripts zur Speicherplatzprüfung. Sorry, ich hatte daran gedacht, aber nicht gesucht, da ich sonst grundsätzlich absolute Pfade verwende. Die Anweisung stand ein paar hundert Zeilen vor dem tar.
Al, Du solltest Dich mal ganz dringend einen Tag an Deinen Rechner setzen und mir "tar" experimentieren. Bitte belaste die Liste mit solch einfachen Problemen nur dann, wenn Du wirklich nichtmehr weiter kommst!
Tut mir leid. Ich verwende nun tar schon lange und dachte, dass ich eigentlich all das was ich verwende auch verstanden habe, aber wenn dann Merkwürdikgeiten auftreten wird man unsicher und dann fragt man eben wie ein Anfänger. Du kannst dir sicher sein, dass ich vor meinem Posting das Web durchsucht habe und die Manpage mehrmals gelesen habe. Wenn man unregelmäßig abwechselnd Konsole und Script probiert und falsche Voraussetzungen annimmt, wird es ganz schön konfus. Al
*** Al Bogner (suse-linux@ml04q1.pinguin.uni.cc) schrieb am Feb 25, 2004 in...:
Wenn ich in einer Pipe mit "tar xf -" von einem File auf die HD zurücksichere wird immer in das Homeverzeichnis zurückgeschrieben, auch wenn ich mich zB in "~/Documents" befinde. Wie kriege ich tar dazu in ein beliebiges Verzeichnis zu schreiben (Rechte vorausgesetzt)?
Dann hast Du vorher schon etwas falsch gemacht. So, wie Du es dort schreibst, wir das tar-Archiv definitiv im aktuellen Verzeichnis ausgepackt, *es sei denn, dass Archiv wurde mit der Option "-P" erstellt*! MfG Henning Hucke -- "Frueher bin ich meistens davon ausgegangen, dass die Menschen vernueftig und intelligent sind... und habe die Welt nicht verstanden. Seitdem ich nurnoch davon ausgehe, dass sie vernunft_begabt_ und _potentiell_ intelligent sind, verstehe ich die Welt besser." (c) H. Hucke
participants (4)
-
Al Bogner
-
Henning Hucke
-
Jan.Trippler@t-online.de
-
Matthias Houdek