Back to roadmap
Module 10 · End-to-End Design DrillsDay 09745 min

Drill: Dropbox / File Sync

Block-level sync with conflict resolution.

Day 097

Drill: Dropbox / File Sync

Client
client
Metadata
datastore
Blob store
datastore
Sync API
service
Chunk hash
service
Signal path
Metadata + chunked content
Client
client
flow
Sync API
service
Sync API
service
flow
Metadata
datastore
Sync API
service
flow
Chunk hash
service
Memory hook

Dropbox / File Sync: block-level sync with conflict resolution

Mental model

compose the pieces into a design story

Design lens

Chunking cost on client.

Recall anchors
MetadataContent chunksHash dedup

Why it matters

File sync products separate metadata (small, transactional) from content (large, opaque blobs). Files are chunked by content hash for dedup and incremental sync; conflicts resolve by versioning.

Deep dive

Chunking: fixed or content-defined; hash chunks for global dedup.

Metadata service tracks file → list of chunks per version.

Sync engine on client diffs local vs server, transfers missing chunks.

Conflicts: keep both versions ('Conflicted copy').

Demo / scenario

Upload a 1 GB file with a 1 KB change.

  1. Client chunks (e.g., 4 MB).
  2. Hashes only; server says 'I already have all but two'.
  3. Upload only the changed chunks.
  4. Metadata bumps version.

Tradeoffs

  • Chunking cost on client.
  • Dedup saves storage and bandwidth.
  • Conflicts handled gracefully but need user action.

Diagram

Client
Metadata
Blob store
Sync API
Chunk hash
Metadata + chunked content.

Mind map

Check yourself

Loading quiz…

Sources & further reading