[+] bash przekazanie pe

Potrzebujesz pomocy z C, C++, perl, python, itp.
glizda1125
Posty: 26
Rejestracja: 05 sierpnia 2006, 10:46
Lokalizacja: Lublin

[+] bash przekazanie pełnych informacji z monitora do pliku

Post autor: glizda1125 »

Witam

Chce napisać skrypt bacupujacy dane za pomaca rsynca i np.:

Kod: Zaznacz cały

#!/bin/bash
rsync -backup -av /home/costam/ /home/gdziestam/
Skrypt działa jak należny no ale chciałbym w racie czego jak by wyskoczył jakiś błąd żeby skrypt to wyłapał.

Kiedy skrypt wykona poprawnie operacje dostaje przykładowo

Kod: Zaznacz cały

building file list ... done

sent 14689 bytes  received 20 bytes  9806.00 bytes/sec
total size is 31610624  speedup is 2149.07
No ale kiedy np nie będzie katalogu /home/costam/ to dostane:

Kod: Zaznacz cały

building file list ... rsync: link_stat "/home/costam/." failed: No such file or directory (2)
done

sent 29 bytes  received 20 bytes  98.00 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files could not be transferred (code 23) at main.c(977) [sender=2.6.9]
No to teraz chcę aby informacje które wyświetlają mi się na monitorze były zapisywane do pliku logi.txt. No to zrobiłem coś takiego:

Kod: Zaznacz cały

#!/bin/bash
rsync -backup -av /home/costam/ /home/gdziestam/ > logi.txt
No i tu pojawia się problem bo nie wszystko co jest wyświetlane na monitorze trafia do pliku a dokładnie jeżeli jest wszystko ok to do pliku wpada wszystko z monitora czyli:

Kod: Zaznacz cały

building file list ... done

sent 14689 bytes  received 20 bytes  9806.00 bytes/sec
total size is 31610624  speedup is 2149.07
Natomiast gdy jest błąd do pliku wpada dokładnie to samo co jak nie ma błedu czyli zamiast:

Kod: Zaznacz cały

rsync: link_stat "/home/costam/." failed: No such file or directory (2)
rsync error: some files could not be transferred (code 23) at main.c(977) [sender=2.6.9]
Wpada

Kod: Zaznacz cały

building file list ... done

sent 14689 bytes  received 20 bytes  9806.00 bytes/sec
total size is 31610624  speedup is 2149.07
Jakim poleceniem zmusić system aby przekazywał wszystkie informacje do pliku a nie część, próbowałem też tee ale jest to samo.

pozdrawiam
akaryuu
Posty: 27
Rejestracja: 07 lipca 2008, 00:13

Post autor: akaryuu »

stosujac przekierowanie ">" przekierowujesz do pliku tylko informacje ze strumienia std_out czyli caly normalny output.. Roznego rodzaju bledy mimo ze co prawda sa widoczne takze na konsoli pochodza ze strumienia std_err i przekierowanie tego strumienia robi sie przez "2>"
Jezeli wiec chcesz wszystko przekierowac do pliku robisz:

Kod: Zaznacz cały

rsync -backup -av /home/costam/ /home/gdziestam/ > logi.txt 2>&1
2>&1 oznacza: przekieruj std_err do tego samego miejsca co std_out
glizda1125
Posty: 26
Rejestracja: 05 sierpnia 2006, 10:46
Lokalizacja: Lublin

Post autor: glizda1125 »

Zajefajnie! Wielkie dzięki oto mi chodziło!

Pozdrawiam
ODPOWIEDZ