Forums Neueste Beiträge
 

Backup auf ftp Server streamen, LogFiles

15/12/2007 - 23:28 von Helmut Schneider | Report spam
Hi,

um Plattenplatz zu sparen, streame ich meine Backups direkt auf einen FTP
Server:

tar -cvf - $files | gzip -c | ncftpput -c $ftp_server $dest.tgz

Wie kann ich denn hier stdout bzw. den stderr noch mitloggen?

tar -cvf - $files | gzip -c | ncftpput -c $ftp_server $dest.tgz > backup.log
2>backup.err
funktioniert so nicht, die angelegten Files sind leer.

Shell ist sh.

Danke und Gruß, Helmut

No Swen today, my love has gone away
My mailbox stands for lorn, a symbol of the dawn
 

Lesen sie die antworten

#1 Heike C. Zimmerer
16/12/2007 - 00:23 | Warnen spam
"Helmut Schneider" writes:

um Plattenplatz zu sparen, streame ich meine Backups direkt auf einen
FTP Server:

tar -cvf - $files | gzip -c | ncftpput -c $ftp_server $dest.tgz

Wie kann ich denn hier stdout bzw. den stderr noch mitloggen?

tar -cvf - $files | gzip -c | ncftpput -c $ftp_server $dest.tgz >
backup.log 2>backup.err
funktioniert so nicht, die angelegten Files sind leer.



So wie Du es schreibst, wird nur der stderr des letzten Kommandos
umgelenkt. Dort steht die Umleitung; sie ist nur für dessen Subshell
gültig. Wenn Du den von tar willst, war's nix, dann musst Du dort
umleiten, hast aber natürlich nur den stderr von tar.

Willst Du den vereinten stderr-Output der ganzen Pipe haben, kannst Du
z.B. die ganze Pipe in eine Subshell stecken und die umleiten:

(tar ... | | ncftpput ...) 2>log

oder stderr vorübergehend global umlenken:

exec 5>&2; exec 2>log
tar ... | | ncftpput ...
exec 2>&5; exec 5>&-

Es ist (glaube ich) klar, dass mir die erste Methode besser gefàllt.

Ähnliche fragen