Come fanno la maggior parte dei programmi di sincronizzazione a monitorare le modifiche ai file?

9

I programmi di sincronizzazione come Dropbox in genere tracciano le modifiche dei file effettuando confronti byte per byte o utilizzando gli hash oppure utilizzando diff / mantenendo i registri di commit locali come il controllo della versione o cosa?

    
posta mcandre 02.10.2012 - 21:30
fonte

3 risposte

8

Su Windows esiste un meccanismo in cui il sistema operativo avvisa quando si passa a una struttura di directory "controllata" - FindFirstChangeNotification (). Quando ciò indica che un file è stato modificato, un'applicazione può quindi confrontare i file nella directory modificata per trovare i file effettivi che sono stati modificati osservando la dimensione, la data di modifica, l'hash, ecc.

Questo (come indicato di seguito da Michael) è qualcosa che ciascuna piattaforma fornirebbe in qualche modo. Non stavo dicendo che questo genere di cose era unico per Windows.

    
risposta data 02.10.2012 - 22:03
fonte
2

In definitiva per confrontare i file devi confrontare ogni byte - in quale altro caso noteresti una modifica di un singolo byte?

In realtà leggi blocchi di byte e calcoli un valore di hash, quindi controlli un elenco di hash. Un buon esempio è " rsync "

Per quanto ne so, dropbox deduce solo file interi, quindi calcolerà un hash dell'intero file per controllare lo stesso file

    
risposta data 02.10.2012 - 21:37
fonte
1

.NET, ad esempio, ha una classe FileSystemWatcher. Sono sicuro che altri linguaggi e runtime a basso livello possono fornire funzionalità simili.

    
risposta data 02.10.2012 - 22:08
fonte

Leggi altre domande sui tag