• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] - Output in Datei umleiten

Moinsen,

ich habe bastele mir gerade quasi ein backup selbst zusammen mit dem tapearchiver.
sieht quasi erstmal so aus:

Code:
root:# tar cfjv backup_$(date '+%d&m%Y%H%M%S').tar * > backup_$(date '+%d&m%Y%H%M%S').log

das gibt mir zumindestens schon mal an welche dateien sich im archiv befinden. das ganze möchte ich quasi später via mail über meinen smtp server an eine email senden, wie halt ne statusmail, ob alles geklappt hat. dies macht aber keinen sinn, wenn mann dann nicht weiss, ob das archiv überhaupt ok ist. also überprüfe ich das archiv noch mit

Code:
root:# bzip2 -tv backup_$(date '+%d&m%Y%H%M%S').tar > backup_$(date '+%d&m%Y%H%M%S').log

leite ich diesen output allerdings in die gleiche log-datei um, wird diese überschrieben und bleibt leer, d.h. es wird nicht einmal der output von der verifizierung in die datei geschrieben!

woran kann das liegen? wenn jemand ne idee hat, wie man das ganze besser realisieren kann, immer her damit!

greets
tsj
 

sc_m

Member
Du bist lustig :lol: . Bist du sicher, dass der date-Befehl in allen vier Fällen dasselbe Ergebnis liefert?

Ich vermute, dass zwischen dem ersten und dem zweiten Befehl etwas Zeit vergeht. Deswegen findet bzip2 die gesuchte Datei gar nicht und gibt dementsprechend nichts nach stdout aus. Dieses nichts wird dann in eine neue log-Datei geschrieben, sie bleibt also leer, und die erste log-Datei sollte eigentlich noch vorhanden sein.
Speichere stattdessen die date-Ausgabe einmal in eine Variable, und verwende anschließend nur noch die Variable.

Vermutlich möchtest du außerdem das Ergebnis des zweiten Befehls lieber an die erste Datei anhängen, dann musst du ">>" statt ">" verwenden.
 
äh ja...das macht natürlich sinn..wusste ich nicht mit >> und >.

das mit der zeit habe ich schon bedacht, doch ist das backup noch nicht so groß, dass sich ein zeitunterschied ergeben würde. ich wäre aber irgendwann so oder so hierbei auf das problem gestoßen, daher danke für den tipp mit der variablen, habe ich dann gleich mal so übernommen.

mein problem ist aber weiterhin, dass ich bei

Code:
root:# bzip2 -tv backup_XXX.tar.bz2 >> backup_XXX.log

den output auf den bildschirm bekomme und er nicht in die datei umgeleitet wird. ich bekomme die meldung, dass das ganze ok ist, aber es wird nicht in die datei geschrieben!
 

sc_m

Member
Dann war ich wohl etwas voreilig mit meinem Gelächter. Immerhin habe ich mich gut amüsiert. Tatsächlich, bzip2 verwendet dafür nicht die Standardausgabe, sondern stderr. Das kannst du so umleiten:
Code:
bzip2 -tv backup_XXX.tar.bz2 2>> backup_XXX.log
 
sc_m schrieb:
Tatsächlich, bzip2 verwendet dafür nicht die Standardausgabe, sondern stderr. Das kannst du so umleiten:
Code:
bzip2 -tv backup_XXX.tar.bz2 2>> backup_XXX.log

würde das denn wirklich jede ausgabe in die datei schreiben? hab mich noch ein bissl über i/o umleitung schlau gemacht - linuxfibel sei dank - und meine wenn ich 2>> anwende wird nur immer fehlerfalle der output umgeleitet, aber nicht generell.
für den täglich ausführlichen status bräuchte ich aber ein output der immer umleitet.
geht das vielleicht mit stout?
 
http://www.linuxfibel.de/bash.htm#Pipelining "Duplizieren von Dateideskriptoren" ist wohl das Thema welches Du dir genauer anschauen solltest. Auch dabei funktioniert >> zum Anhängen
 
Oben