Come posso verificare se i file di trasferimento rsync o no?


2

Uso rsync (cygwin) per trasferire file tra il server e il mio PC.

Rsync viene eseguito ogni 2 minuti e talvolta ci sono alcuni file da trasferire, a volte no. Devo eseguire alcune azioni, ma solo se i file sono stati trasferiti da un server all'altro.

Come faccio a sapere se i file sono stati trasferiti o meno?

Post scriptum Ho provato a usare i codici di uscita di rsync, ma restituisce 0 in entrambi i file quando vengono trasferiti e quando non lo fanno.

Risposte:


4
rsync -rtv <source> <dest> | wc -l

Se il risultato è più di 4 qualcosa è cambiato


Grazie, funziona benissimo :) Puoi spiegare che cosa significa numero 4?
temur_p

wc -l conta il numero di linee. Una corsa pulita con opzione -v avere 4 righe nell'output. Qualsiasi modifica ha più di 4
matzeri

3

Io uso l'opzione

 rsync ....  --log-file=/path/to/log/file

Questo aggiunge nel file di registro, in modo da poter scoprire se è stato trasferito qualcosa e, in tal caso, cosa esattamente, anche molto più tardi rispetto a quando è avvenuto il backup.


sì, io già uso --log-file e cosa succede se ho bisogno di passare i nomi dei file per lo script? Suppongo di dover usare awk o sed per estrarli dal file di registro e questo mi sembra un po 'complicato)
temur_p

1
@temur_p Awk and sed tricky? Lol.
MariusMatutiae

loro sono per me Inoltre, era preferibile risolvere questo problema usando solo le opzioni di rsync.
temur_p

1
@temur_p Solo per la cronaca: --log-file è un'opzione di rsync 'S.
MariusMatutiae

Stavo parlando di usare awk or sed. Sembra che tu non abbia capito il problema - se ho intenzione di usarlo --log-file, quindi dovrò estrarre i nomi dei file da esso usando awk or sed. E usando la soluzione, proposta nel primo messaggio, posso semplicemente gestire il problema aggiungendo if condizione.
temur_p

1

rsync --stats

Puoi usare l'opzione --stats o --info=stats2 alla fine filtrando con un grep.

  rsync -avr ORIG DEST  --stats | grep "Number of created files"

Numero di file creati: 14


Dal manuale di rsync Puoi leggere

--stats
Questo dice a rsync di stampare un insieme prolisso di statistiche sul trasferimento dei file, che ti consente di capire quanto sia efficace l'algoritmo di delta-trasferimento di rsync per i tuoi dati. Questa opzione equivale a --info = stats2 se combinata con opzioni 0 o 1 -v, oppure --info = stats3 se combinata con 2 o più opzioni -v.

Ulteriori note:
Ti suggerisco di utilizzare un file di registro come proposto da MariusMatutiae nel caso tu abbia la curiosità per vedere quali file sono stati trasferiti.
Per il grep filtro puoi scegliere ogni linea che trovi interessante:

  • Esempio di output con alcuni file trasferiti:

    Numero di file: 15 (reg: 14, dir: 1)
    Numero di file creati: 14 (reg: 14)
    Numero di file cancellati: 0
    Numero di file regolari trasferiti: 14
    Dimensione totale del file: 280.860 byte
    Dimensione totale del file trasferito: 280.860 byte
    Dati letterali: 280,860 byte
    Dati corrispondenti: 0 byte
    Dimensione elenco file: 0
    Tempo di generazione dell'elenco file: 0,001 secondi
    Tempo di trasferimento dell'elenco file: 0.000 secondi
    Totale byte inviati: 281.842
    Byte totali ricevuti: 285

  • Lo stesso comando senza file trasferiti:

    Numero di file: 15 (reg: 14, dir: 1)
    Numero di file creati: 0
    Numero di file cancellati: 0
    Numero di file regolari trasferiti: 0
    Dimensione totale del file: 280.860 byte
    Dimensione totale del file trasferito: 0 byte
    Dati letterali: 0 byte
    Dati corrispondenti: 0 byte
    Dimensione elenco file: 0
    Tempo di generazione dell'elenco file: 0,001 secondi
    Tempo di trasferimento dell'elenco file: 0.000 secondi
    Byte totali inviati: 357
    Byte totali ricevuti: 12

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.