web-dev-qa-db-fra.com

Où rsync conserve-t-il le fichier journal pour les transferts de données complets et incomplets?

Je veux obtenir les adresses IP de tous les appareils de destination où mon transfert de données à l'aide de rsync n'a pas pu être terminé (ou même démarrer) car ces appareils ne sont pas connectés à Internet ou se sont déconnectés pendant le transfert de données ...


Mon scénario de problème réel est:

rsync -t Desktop/sony.pdf [email protected]: ssh: se connecter au port 22 de l'hôte a.b.c.d: pas de route vers l'hôte

et je veux la liste de toutes ces adresses IP où le transfert de données n'a pas pu être complété ...

la liste de toutes les adresses IP comme 'a.b.c.d'

16
user1709815

Je fais le travail en Perl (en ligne de commande):

# 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

Cela pourrait produire des résultats tels que:

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
3
F. Hauri

Vous pouvez dire où se trouve le fichier journal (selon la documentation de la page de manuel):

 - log-file = FILE remplace le paramètre "log file" 
31
kbulgrien

Les informations des journaux sont normalement envoyées via le démon syslog, lorsque rsync s'exécute en mode démon.

Si vous voulez vous connecter quelque chose lors de l'utilisation de rsync sur ssh, vous devez mettre l'option en ligne de commande:

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

pour enregistrer les journaux dans l'hôte de destination ou

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

pour enregistrer les journaux dans l'hôte source.

4
F. Hauri

Recherchez des preuves de rsync dans les journaux système. Par exemple:

 Sudo grep -ir rsync /var/log

Pour cette question, vous pourriez grep/bien que ce soit exagéré.

3
kbulgrien