Rsync è una buona opzione per mantenere sincronizzato un singolo file di piccole dimensioni?


0

Devo mantenere un singolo file relativamente piccolo aggiornato su una connessione modem dial up lenta e instabile.

Il file è un XML che potrebbe iniziare con 15K e, due ore dopo, terminare con 500K.

È una replica unidirezionale. La mia attuale soluzione continua a scaricare l'intero file una volta al minuto. Finora funziona bene con le connessioni a banda larga, ma ora devo usarlo in una posizione in cui è disponibile solo la connessione remota. L'illusione di "dati in tempo reale" viene persa perché il download è lento.

Ho pensato che rsync potrebbe salvarmi dallo sviluppo di un protocollo "delta-only" proprietario (e carente). Mi chiedo se rsync fornirebbe reali benefici in questo caso particolare.

Quindi, la domanda è: il protocollo rsync è adatto per un singolo file da 15K a 500K?


Questa replica unidirezionale o bidirezionale dei dati?
Nick

È una replica unidirezionale.
Sebastián Grignoli

Risposte:


0

Non in questo caso. Stai meglio usando qualcosa del genere diffxml per inviare solo la differenza tra i file come aggiornamento e applicare la patch sul computer di destinazione.


Potresti spiegare perché no? Uno svantaggio della soluzione diffxml sarebbe che dovrei codificare una soluzione attorno ad esso e mantenere una copia di ogni versione obsoleta dell'XML nel server di origine per calcolare il diff contro.
Sebastián Grignoli

Una modifica all'inizio del documento XML richiederebbe più lavoro per trasmettere usando rsync di una modifica alla fine del documento, mentre sarebbe più o meno la stessa quantità usando diffxml indipendentemente da dove è stata effettuata la modifica.
Ignacio Vazquez-Abrams

diffxml sembra uno strumento più analitico, non finalizzato al risparmio di banda.
Sebastián Grignoli

1
Inoltre, ho appena provato rsync localmente e non sembra ridurre l'utilizzo della larghezza di banda a tutte le dimensioni di questo file. Sto iniziando a pensare di usare Git per questo lavoro ...
Sebastián Grignoli

@ SebastiánGrignoli Stavo per scrivere una risposta che suggeriva di inserirlo in un repository e di sincronizzarlo in quel modo. Più aggiornamenti vengono uniti e suddivisi in lotti. +1 per te.
Nick

0

Bene, l'ho fatto con rsync, e devo dire che ha funzionato bene.

Trasferisce così pochi dati che sono riuscito ad accorciare la frequenza di aggiornamento a 20 secondi con una connessione dial-up stretta (un terzo della frequenza precedente che usavamo con la banda larga!).

L'aggiornamento di un XML da 800kb richiede ora 5kb di download + 800 byte di upload!

Il controllo delle versioni quando non ci sono modifiche all'aggiornamento richiede meno 500 byte di download + 100 byte di caricamento! (Trasferisco più byte digitando in una normale sessione di chat!)

Molto meglio di altre soluzioni diff, e non ho dovuto programmare nulla intorno ad esso. (in precedenza abbiamo pensato di aggiungere un meccanismo di push per attivare rsync, ma non ne abbiamo ancora bisogno, 20 secondi sono accettabili e il polling è molto leggero.)

Strada da percorrere, rsync!

PS: Non ho provato Git, e probabilmente sarebbe stata una buona soluzione.

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.