¿Los programas de sincronización como Dropbox suelen rastrear los cambios de archivos haciendo comparaciones byte a byte, o usando hashes, o usando diff
/ manteniendo registros de confirmación locales como control de versiones, o qué?
fuente
¿Los programas de sincronización como Dropbox suelen rastrear los cambios de archivos haciendo comparaciones byte a byte, o usando hashes, o usando diff
/ manteniendo registros de confirmación locales como control de versiones, o qué?
En Windows, hay un mecanismo para que el sistema operativo le avise cuando hay un cambio en una estructura de directorio 'vigilada': FindFirstChangeNotification (). Cuando eso indica que un archivo ha cambiado, una aplicación puede comparar archivos en el directorio cambiado para encontrar los archivos reales que han cambiado mirando el tamaño, la fecha de modificación, el hash, etc.
Esto (como Michael señala a continuación) es algo que cada plataforma proporcionaría de alguna manera. No decía que este tipo de cosas fuera exclusivo de Windows.
En última instancia, para comparar archivos, debe comparar cada byte. ¿De qué otra forma notaría un cambio de un solo byte?
En realidad, lee bloques de bytes y calcula un valor hash, luego verifica con una lista de hash. Un buen ejemplo es " rsync "
Hasta donde sé, Dropbox solo deduce archivos completos, por lo que calculará un hash de todo el archivo para verificar el mismo archivo
fuente
.NET, por ejemplo, tiene una clase FileSystemWatcher. Estoy seguro de que otros lenguajes y tiempos de ejecución de bajo nivel pueden proporcionar capacidades similares.
fuente