PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : tar - stdout und stderr getrennt



SniperRifle
30.07.04, 15:13
Hallo,

wenn ich bei tar als Ausgabedatei die Standardausgabe (tar -f - ) angeben, dann habe ich Standardausgabe und Standardfehlerausgabe in einem Strom. Ich brauche die beiden aber getrennt. Wie geht das?

Danke
Gruß Chris

moedule
30.07.04, 15:45
wenn du die beiden trennen willst, kannst dudas ungefaehr so machen:


programm 2> error.txt | tee stdout.txt


(ich hoffe das das auch fuers tar tut)
moe

SniperRifle
30.07.04, 17:33
Hi moedule,

glaube nicht, dass deins in meinem Fall funktioniert. Normalerweise kann ich die beiden Ausgaben direkt in eine Datei schreiben z.b. so:


tar -cvf test.tar /etc 1>/tmp/stdout.txt 2>/tmp/stderr.txt


Nun will ich aber das tar-Archiv nicht lokal speichern, sondern direkt per ssh auf einen anderen Rechner schreiben. Dabei will ich nicht den Umweg machen es erst lokal zu speichern und dann per scp zu kopieren, das ist zu umständlich. Derzeit mach ich das so:


(tar -cvf - /etc | buffer | ssh user@remote-rechner buffer -o test.tar) 1>/tmp/stdout.txt 2>/tmp/stderr.txt


Das Archiv wird also praktisch direkt auf die Remote-Platte geschrieben, nur das Problem ist, dass stdout.txt immer leer ist, und stderr.txt sowohl die Kanäle 1 und 2 enthält. Das kommt daher, dass tar das Archiv eben nicht auf die Platte sondern nach stdout schreibt. Da ist also kein Platz für die Standardausgabe und somit wird diese direkt von tar auf stderr umgelenkt.

Hoffe das war jetzt verständlicher :)

Gruß

Jasper
31.07.04, 13:04
das geht nicht. in deinem fall schreibt tar die daten nach stdout, also müssen alle meldungen nach stderr. was geht ist folgendes:

mkfifo named_pipe
buffer < named_pipe | ssh user@remote-rechner buffer -o test.tar &
tar -cvf named_pipe /etc/ 2>err 1>std

damit schreibt tar in eine pipe und nicht mehr nach stdout.


-j

SniperRifle
01.08.04, 21:26
Danke Jasper,
mkfifo kannte ich noch nicht ;)