2012-10-24 17 views
14

Ich möchte die IP-Adressen aller Zielgeräte bekommen, wo meine Datenübertragung rsync mit nicht vollständig sein könnte (oder starten Sie selbst), da diese Geräte nicht mit dem Internet verbunden sind oder während der Datenübertragung unterbrochen wurde ...Wo behält rsync die Protokolldatei für vollständige und unvollständige Datenübertragungen?


Mein eigentliches Problem Szenario ist:

rsync -t Desktop/sony.pdf home @ abcd: ssh: connect abcd Port 22 zu bewirten: Keine Route

und ich mag die Liste der Gastgeber all dieser IPs, wo die Datenübertragung nicht complted ...

die Liste aller IP-Adressen wie ‚ABCD‘

Antwort

2

ich den Job in perl (in der Befehlszeile):

# perl -ne ' 
    ($conn{$2}->{"ip"},$conn{$2}->{"started"})=($3,$1) if 
     /^(.{15}).*rsyncd\[(\d+)\]:\sconnect.*\((\d+\.\d+\.\d+\.\d+)\)/; 
    $conn{$2}->{"closed"}=$1 if /(.{15}).*rsyncd\[(\d+)\]:\ssent\s.*\stotal/; 
    END { 
     print "Good:\n"; 
     map{ 
      printf "%s %-16s %s\n", 
       $conn{$_}->{"started"},$conn{$_}->{"ip"},$conn{$_}->{"closed"} if 
        $conn{$_}->{"closed"}; 
      } sort { $conn{$a}->{"started"} cmp $conn{$b}->{"started"} 
      } keys %conn; 
     print "Unterminated:\n"; 
     map{ 
      printf "%s %s\n",$conn{$_}->{"started"},$conn{$_}->{"ip"}; 
      } sort { $conn{$a}->{"started"} cmp $conn{$b}->{"started"} 
      } grep { ! defined $conn{$_}->{"closed"} 
      } keys %conn; 
    }' < /var/log/daemon.log 

Diese Ausgänge wie produzieren könnte:

Good: 
Apr 28 08:12:01 127.0.0.1  Apr 28 08:15:35 
Apr 28 08:27:01 192.168.1.36  Apr 28 08:28:04 
Apr 28 08:42:01 127.0.0.1  Apr 28 08:42:13 
Apr 28 08:57:01 192.168.1.36  Apr 28 08:57:16 
Apr 28 09:12:01 127.0.0.1  Apr 28 09:12:28 
Apr 28 09:27:01 192.168.1.36  Apr 28 09:27:13 
Apr 28 09:42:01 127.0.0.1  Apr 28 09:42:09 
Apr 28 09:57:02 192.168.1.36  Apr 28 09:57:16 
Apr 28 10:12:01 127.0.0.1  Apr 28 10:12:32 
Apr 28 10:27:01 192.168.1.36  Apr 28 10:27:12 
Apr 28 10:42:01 127.0.0.1  Apr 28 10:42:14 
Apr 28 10:57:01 192.168.1.36  Apr 28 10:57:13 
Apr 28 11:27:01 192.168.1.36  Apr 28 11:28:01 
Apr 28 11:42:01 127.0.0.1  Apr 28 11:44:32 
Apr 28 11:57:02 192.168.1.36  Apr 28 11:58:43 
Apr 28 12:12:01 127.0.0.1  Apr 28 12:12:27 
Apr 28 12:27:01 192.168.1.36  Apr 28 12:28:48 
Apr 28 12:42:01 127.0.0.1  Apr 28 12:42:13 
Apr 28 12:57:01 192.168.1.36  Apr 28 12:57:56 
Unterminated: 
Apr 28 11:12:01 127.0.0.1 
+0

Danke für Ihre Antwort. aber ich habe keine Datei als deamon.log in/var/log !! – user1709815

26

Man kann sagen könnte, wo die Protokolldatei (pro der Manpage Dokumentation) ist:

 
--log-file=FILE   override the "log file" setting 
+4

+1 Besser als meine Antwort. –

+0

Welche Linux-Distribution hast du getestet? Ich bekomme -> rsync: --log-file =/root/.rsyncd.log: unbekannte Option – Proverbio

+1

Die Funktion wurde in rsync Version 2.6.9 (6 Nov 2006) hinzugefügt. Sie können das Änderungsprotokoll unter http://rsync.samba.org/ftp/rsync/src/rsync-2.6.9-NEWS sehen. Da die Änderung so alt ist, würde ich denken, dass die meisten Distributionen aktuell sind würde diese Funktion haben. Ich habe den Mandriva Enterprise Server verwendet, der auf einer Version der kostenlosen Version von 2009 basiert. – kbulgrien

1

In den Systemprotokollen nach Hinweisen auf rsync suchen. Zum Beispiel:

 
sudo grep -ir rsync /var/log 

Für die Angelegenheit könnten Sie grep/obwohl das ist übertrieben.

3

Protokollinformationen werden normalerweise über den Syslog-Daemon gesendet, wenn rsync im Daemon-Modus ausgeführt wird.

Wenn Sie einen Grund zum einloggen wollen, wenn rsync über ssh verwenden, müssen Sie die Option in der Befehlszeile setzen:

rsync --rsync-path='/usr/bin/rsync --log-file=$HOME/.rsyncd.log' -t Desktop/sony.pdf [email protected]: 

für Protokolle im Ziel-Host oder

Speichern
rsync --log-file=$HOME/.rsyncd.log -t Desktop/sony.pdf [email protected]: 

für das Speichern von Protokollen in Quellhost