Apakah program sinkronisasi seperti Dropbox biasanya melacak perubahan file dengan melakukan perbandingan byte demi byte, atau menggunakan hash, atau menggunakan diff
/ menjaga log komit lokal seperti kontrol versi, atau apa?
sumber
Apakah program sinkronisasi seperti Dropbox biasanya melacak perubahan file dengan melakukan perbandingan byte demi byte, atau menggunakan hash, atau menggunakan diff
/ menjaga log komit lokal seperti kontrol versi, atau apa?
Pada Windows ada mekanisme untuk membuat OS mengingatkan Anda ketika ada perubahan pada struktur direktori 'diawasi' - FindFirstChangeNotification (). Ketika itu menunjukkan file telah berubah, aplikasi kemudian dapat membandingkan file dalam direktori yang diubah untuk menemukan file aktual yang telah diubah dengan melihat ukuran, tanggal modifikasi, hash, dll.
Ini (seperti yang ditunjukkan Michael di bawah) adalah sesuatu yang akan disediakan oleh setiap platform dengan cara tertentu. Saya tidak mengatakan hal semacam ini unik untuk Windows.
Pada akhirnya untuk membandingkan file, Anda perlu membandingkan setiap byte - bagaimana lagi Anda akan melihat perubahan satu byte?
Pada kenyataannya Anda membaca blok byte dan menghitung nilai hash, Anda kemudian memeriksa daftar hash. Contoh yang baik adalah " rsync "
Sejauh yang saya tahu dropbox hanya memotong seluruh file, jadi akan menghitung hash dari seluruh file untuk memeriksa dari file yang sama
sumber
.NET misalnya memiliki kelas FileSystemWatcher. Saya yakin bahasa dan runtimes tingkat rendah lainnya dapat memberikan kemampuan serupa.
sumber