Design a system that backs up files from a source location to a destination location. The destination should mirror the source directory structure, support full and incremental backups, resume after crashes, and verify data integrity after copying. The key design ideas are a durable manifest as the source of truth and atomic stage-then-commit writes, such as .tmp + rename for filesystems or multipart upload completion for object stores.