tar und gzip verpipen

A

Alphager

Mitglied
Das ganze findet statt unter Solaris 5.8 .
Ich möchte mit einer schönen verpipung von tar und gzip ohne temporäre Dateien ein Verzeichniss in ein gzip'tes tar verwandeln.

Mein Ansatz
Code:
tar cf - ./verzeichniss | gzip --best --stdout > verzeichniss.tar.gz
  • von more nicht angezeigt werden kann (wechselt ständig in die Hilfe; allgemein komisches verhalten)
  • vom im mc eingebauten Viewer nicht geöffnet werden kann
  • generell komisch ist

Warum ist das so, und wie kann ich die Probleme umgehen ?

(Hintergrund: nach einem Apache-Build soll die Output-Directory gepackt und auf einen anderen Server scp'ed werden).
 
hi

geht kein tar -czf /verzeichnis /datei.tar.gz ??????

mfg frank
 
Also zum einen sollte es unter Sun den gtar (GNU tar) geben (muss evtl. nachinstalliert werden) zum anderen kannst Du das Directory mit tar direkt kopieren.
Code:
cd $SOURCE
tar cf - . | (cd $TARGET; tar xfp -)
Wobei $TARGET z.B. ein via NFS gemountets Verzeichnis sein könnte.
 
@Cyber: Das wäre auch eine Idee gewesen, allerdings soll das Script auf jeder Standard-Installation (ohne gtar) funktionieren.

Ich habe bereits eine Funktion zum verschieben der Datei. Das gzipen ist aber sinnvoll, damit die Leitung nicht so stark belastet wird.
 
Alphager schrieb:
Mein Ansatz
Code:
tar cf - ./verzeichniss | gzip --best --stdout > verzeichniss.tar.gz
Blöd, wenn man nix zum testen zur Hand hat, aber meiner Meinung nach ist die f-Option zu viel ... schließlich willst Du den Output nicht in ein File, sondern in die Pipe ...
 
@Goodspeed1978:

Das stimmt so schon, denn:
man tar schrieb:
-f
Uses the next argument as the name of the tar file. If no file/device is specified, the environment variable TAPE is consulted. If it is not set, then the system default device is used. If a single dash (-) is specified, the tar file is sent to standard output.
 
Schreibt tar nicht standardmäßig auf STDOUT zurück? Oder ist das wieder ne Gnu-Eigenheit?
 
habe noch ein bischen rumprobiert, folgendes sollte eigentlich funktionieren:
Code:
tar c ./verzeichniss | gzip >verzeichniss.tar.gz
er macht es aber nicht:
tar: /dev/rmt/0: permission denied
 
Wieder einen Schritt weiter:
das komprimieren geht anscheinend mit:
tar cf - ./verzeichniss | gzip >verzeichniss.tar.gz

nur die dekomprimierung muß ich noch hinkriegen
 
GELÖST:
komprimierung: tar cf - ./verzeichniss | gzip >verzeichniss.tar.gz
dekomprimierung: gzip -d -c verzeichniss.tar.gz | tar xf -
 
Schreibt tar nicht standardmäßig auf STDOUT zurück? Oder ist das wieder ne Gnu-Eigenheit?

Wir reden hier nicht von GNU-tar. Unter Solaris ist alles anders :)

habe noch ein bischen rumprobiert, folgendes sollte eigentlich funktionieren:
Code:

tar c ./verzeichniss | gzip >verzeichniss.tar.gz


er macht es aber nicht:
tar: /dev/rmt/0: permission denied
Logisch, da er als erstes probiert aus Tape zu schreiben und das ist unter Solaris per default /dev/rmt/0 bzw. /dev/rmt/0n als norewind-device.
 
Zurück
Oben